## Do we have enough memory and disk space for Discourse?
##
check_disk_and_memory() {
-
+
avail_mem=`free -g --si | awk ' /Mem:/ {print $2} '`
if [ "$avail_mem" -lt 1 ]; then
echo "WARNING: Discourse requires 1GB RAM to run. This system does not appear"
echo
echo "Your site may not work properly, or future upgrades of Discourse may not"
echo "complete successfully."
- echo exit 1
+ exit 1
fi
-
+
if [ "$avail_mem" -lt 2 ]; then
total_swap=`free -g --si | awk ' /Swap:/ {print $2} '`
if [ "$total_swap" -lt 2 ]; then
echo "upgrades of Discourse may not complete successfully."
echo
read -p "ENTER to create a 2GB swapfile now, or Ctrl+C to exit"
-
+
##
## derived from https://meta.discourse.org/t/13880
- ##
+ ##
install -o root -g root -m 0600 /dev/null /swapfile
dd if=/dev/zero of=/swapfile bs=1k count=2048k
mkswap /swapfile
echo "Failed to create swap, sorry!"
exit 1
fi
-
+
fi
fi
}
-##
+##
## standard http / https ports must not be occupied
##
check_ports() {
## check a port to see if it is already in use
##
check_port() {
-
+
local valid=$(netstat -tln | awk '{print $4}' | grep ":${1}\$")
if [ -n "$valid" ]; then
echo
echo "If you are trying to run Discourse simultaneously with another web"
echo "server like Apache or nginx, you will need to bind to a different port"
- echo
+ echo
echo "See https://meta.discourse.org/t/17247"
exit 1
fi
## prompt user for typical Discourse config file values
##
ask_user_for_config() {
-
+
local changelog=/tmp/changelog.$PPID
local hostname="discourse.example.com"
local developer_emails="me@example.com,you@example.com"
local smtp_address="smtp.example.com"
local smtp_port="587"
- local smtp_user_name="postmaster@discourse.example.com"
+ local smtp_user_name="postmaster@discourse.example.com"
local smtp_password=""
local letsencrypt_account_email="me@example.com"
local letsencrypt_status="ENTER to skip"
local new_value=""
local config_ok="n"
local update_ok="y"
-
+
echo ""
while [[ "$config_ok" == "n" ]]
hostname=$new_value
fi
fi
-
+
if [ ! -z $developer_emails ]
then
read -p "Email address for admin account? [$developer_emails]: " new_value
developer_emails=$new_value
fi
fi
-
+
if [ ! -z $smtp_address ]
then
read -p "SMTP server address? [$smtp_address]: " new_value
smtp_address=$new_value
fi
fi
-
+
if [ ! -z $smtp_port ]
then
read -p "SMTP port? [$smtp_port]: " new_value
smtp_port=$new_value
fi
fi
-
+
##
## automatically set correct user name based on common mail providers
##
if [ "$smtp_address" == "smtp.sparkpostmail.com" ]
then
smtp_user_name="SMTP_Injection"
- fi
+ fi
if [ "$smtp_address" == "smtp.sendgrid.net" ]
then
smtp_user_name="apikey"
then
smtp_user_name="postmaster@$hostname"
fi
-
+
if [ ! -z $smtp_user_name ]
then
read -p "SMTP user name? [$smtp_user_name]: " new_value
smtp_user_name=$new_value
fi
fi
-
+
read -p "SMTP password? [$smtp_password]: " new_value
if [ ! -z $new_value ]
then
smtp_password=$new_value
fi
-
+
if [ ! -z $letsencrypt_account_email ]
then
read -p "Let's Encrypt account email? ($letsencrypt_status) [$letsencrypt_account_email]: " new_value
echo "SMTP port : $smtp_port"
echo "SMTP username : $smtp_user_name"
echo "SMTP password : $smtp_password"
-
+
if [ "$letsencrypt_status" == "Enter 'OFF' to disable." ]
then
echo "Let's Encrypt : $letsencrypt_account_email"
fi
-
+
echo ""
read -p "ENTER to continue, 'n' to try again, Ctrl+C to exit: " config_ok
done
update_ok="n"
echo "letsencrypt.ssl.template.yml NOT ENABLED -- was it on already?"
fi
- fi
+ fi
if [ "$update_ok" == "y" ]
then
validate_config() {
valid_config="y"
-
+
for x in DISCOURSE_SMTP_ADDRESS DISCOURSE_SMTP_USER_NAME DISCOURSE_SMTP_PASSWORD \
DISCOURSE_DEVELOPER_EMAILS DISCOURSE_HOSTNAME
do
- config_line=`grep "^ $x:" $config_file`
+ config_line=`grep "^ $x:" $config_file`
local result=$?
local default="example.com"
valid_config="n"
fi
done
-
+
if [ "$valid_config" != "y" ]; then
echo -e "\nSorry, these $config_file settings aren't valid -- can't continue!"
echo "If you have unusual requirements, edit $config_file and then: "