From c2d3ee4a824958d4075774b25ff01f0b4c749fcc Mon Sep 17 00:00:00 2001 From: Jeff Atwood Date: Wed, 27 Apr 2016 03:05:56 -0700 Subject: [PATCH] split Discourse specific code into discourse-setup --- discourse-setup | 388 ++++++++++++++++++++++++++++++++++++++++++++ launcher | 417 ++---------------------------------------------- 2 files changed, 398 insertions(+), 407 deletions(-) create mode 100644 discourse-setup diff --git a/discourse-setup b/discourse-setup new file mode 100644 index 0000000..797f5a8 --- /dev/null +++ b/discourse-setup @@ -0,0 +1,388 @@ +#!/bin/bash + +## +## Do we have enough memory and disk space for Discourse? +## +check_disk_and_memory() { + + resources="ok" + avail_mem="$(LANG=C free -m | grep '^Mem:' | awk '{print $2}')" + if [ "$avail_mem" -lt 900 ]; then + resources="insufficient" + echo "WARNING: You do not appear to have sufficient memory to run Discourse." + echo + echo "Your system may not work properly, or future upgrades of Discourse may" + echo "not complete successfully." + echo + echo "See https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md#create-new-cloud-server" + elif [ "$avail_mem" -lt 1800 ]; then + total_swap="$(LANG=C free -m | grep ^Swap: | awk '{print $2}')" + if [ "$total_swap" -lt 1000 ]; then + resources="insufficient" + echo "WARNING: You must have at least 1GB of swap when running with less" + echo "than 2GB of RAM." + echo + echo "Your system may not work properly, or future upgrades of Discourse may" + echo "not complete successfully." + echo + echo "See https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md#set-up-swap-if-needed" + fi + fi + + free_disk="$(df /var | tail -n 1 | awk '{print $4}')" + if [ "$free_disk" -lt 5000 ]; then + resources="insufficient" + echo "WARNING: You must have at least 5GB of *free* disk space to run Discourse." + echo + echo "Insufficient disk space may result in problems running your site, and may" + echo "not even allow Discourse installation to complete successfully." + echo + echo "Please free up some space, or expand your disk, before continuing." + echo + echo "Run \`apt-get autoremove && apt-get autoclean\` to clean up unused packages and \`./launcher cleanup\` to remove stale Docker containers." + exit 1 + fi + + if [ -t 0 ] && [ "$resources" != "ok" ]; then + echo + read -p "Press ENTER to continue, or Ctrl-C to exit and give your system more resources" + fi +} + + +## +## If we have lots of RAM or lots of CPUs, bump up the defaults to scale better +## +scale_ram_and_cpu() { + + # grab info about total system ram and physical (NOT LOGICAL!) CPU cores + avail_mem="$(LANG=C free -m | grep '^Mem:' | awk '{print $2}')" + avail_gb=$(( $avail_mem / 950 )) + avail_cores=`cat /proc/cpuinfo | grep "cpu cores" | uniq | awk '{print $4}'` + echo "Found ${avail_gb}GB of memory and $avail_cores physical CPU cores" + + # db_shared_buffers: 128MB for 1GB, 256MB for 2GB, or 256MB * GB, max 4096MB + if [ "$avail_gb" -eq "1" ] + then + db_shared_buffers=128 + else + if [ "$avail_gb" -eq "2" ] + then + db_shared_buffers=256 + else + db_shared_buffers=$(( 256 * $avail_gb )) + fi + fi + db_shared_buffers=$(( db_shared_buffers < 4096 ? db_shared_buffers : 4096 )) + + sed -i -e "s/^ #db_shared_buffers:.*/ db_shared_buffers: \"${db_shared_buffers}MB\"/w $changelog" $config_file + if [ -s $changelog ] + then + echo "setting db_shared_buffers = ${db_shared_buffers}MB" + rm $changelog + fi + + + # UNICORN_WORKERS: 2 * GB for 2GB or less, or 2 * CPU, max 8 + if [ "$avail_gb" -le "2" ] + then + unicorn_workers=$(( 2 * $avail_gb )) + else + unicorn_workers=$(( 2 * $avail_cores )) + fi + unicorn_workers=$(( unicorn_workers < 8 ? unicorn_workers : 8 )) + + sed -i -e "s/^ #UNICORN_WORKERS:.*/ UNICORN_WORKERS: ${unicorn_workers}/w $changelog" $config_file + if [ -s $changelog ] + then + echo "setting UNICORN_WORKERS = ${unicorn_workers}" + rm $changelog + fi + +} + + +## +## standard http / https ports must not be occupied +## +check_ports() { + check_port "80" + check_port "443" + echo "Ports 80 and 443 are free for use" +} + + +## +## 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 "Port ${1} appears to already be in use." + echo + echo "If you are trying to run Discourse simultaneously with another web server like Apache or nginx, you will need to bind to a different port -- see https://meta.discourse.org/t/17247 for help." + exit 1 + fi +} + +## +## prompt user for typical Discourse config file values +## +set_config() { + + local hostname="discourse.example.com" + local developer_emails="me@example.com" + local smtp_address="smtp.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" ]] + do + if [ ! -z $hostname ] + then + read -p "Hostname for your Discourse? [$hostname]: " new_value + if [ ! -z $new_value ] + then + hostname=$new_value + fi + fi + + if [ ! -z $developer_emails ] + then + read -p "Email address for admin account? [$developer_emails]: " new_value + if [ ! -z $new_value ] + then + developer_emails=$new_value + fi + fi + + if [ ! -z $smtp_address ] + then + read -p "SMTP server address? [$smtp_address]: " new_value + if [ ! -z $new_value ] + then + smtp_address=$new_value + fi + fi + + if [ "$smtp_address" == "smtp.sparkpostmail.com" ] + then + smtp_user_name="SMTP_Injection" + fi + + if [ "$smtp_address" == "smtp.sendgrid.net" ] + then + smtp_user_name="apikey" + fi + + if [ ! -z $smtp_user_name ] + then + read -p "SMTP user name? [$smtp_user_name]: " new_value + if [ ! -z $new_value ] + then + 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 + if [ ! -z $new_value ] + then + letsencrypt_account_email=$new_value + if [ "$new_value" == "off" ] + then + letsencrypt_status="ENTER to skip" + else + letsencrypt_status="Enter 'OFF' to disable." + fi + fi + fi + + echo -e "\nThat's it! Everything is set. Does this look right?\n" + echo "Hostname : $hostname" + echo "Email : $developer_emails" + echo "SMTP address : $smtp_address" + 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 "Press ENTER to continue, 'n' to try again, or ^C to exit: " config_ok + done + + sed -i -e "s/^ DISCOURSE_HOSTNAME: 'discourse.example.com'/ DISCOURSE_HOSTNAME: $hostname/w $changelog" $config_file + if [ -s $changelog ] + then + rm $changelog + else + echo "DISCOURSE_HOSTNAME change failed." + update_ok="n" + fi + + sed -i -e "s/^ DISCOURSE_DEVELOPER_EMAILS:.*/ DISCOURSE_DEVELOPER_EMAILS: \'$developer_emails\'/w $changelog" $config_file + if [ -s $changelog ] + then + rm $changelog + else + echo "DISCOURSE_DEVELOPER_EMAILS change failed." + update_ok="n" + fi + + sed -i -e "s/^ DISCOURSE_SMTP_ADDRESS: smtp.example.com.*/ DISCOURSE_SMTP_ADDRESS: $smtp_address/w $changelog" $config_file + if [ -s $changelog ] + then + rm $changelog + else + echo "DISCOURSE_SMTP_ADDRESS change failed." + update_ok="n" + fi + + sed -i -e "s/^ #DISCOURSE_SMTP_USER_NAME: user@example.com.*/ DISCOURSE_SMTP_USER_NAME: $smtp_user_name/w $changelog" $config_file + if [ -s $changelog ] + then + rm $changelog + else + echo "DISCOURSE_SMTP_USER_NAME change failed." + update_ok="n" + fi + + sed -i -e "s/^ #DISCOURSE_SMTP_PASSWORD: pa\$\$word.*/ DISCOURSE_SMTP_PASSWORD: $smtp_password/w $changelog" $config_file + if [ -s $changelog ] + then + rm $changelog + else + echo "DISCOURSE_SMTP_PASSWORD change failed." + update_ok="n" + fi + + if [ "$letsencrypt_status" != "ENTER to skip" ] + then + sed -i -e "s/^ #LETSENCRYPT_ACCOUNT_EMAIL: your.email@example.com/ LETSENCRYPT_ACCOUNT_EMAIL: $letsencrypt_account_email/w $changelog" $config_file + if [ -s $changelog ] + then + rm $changelog + else + echo "LETSENCRYPT_ACCOUNT_EMAIL change failed." + update_ok="n" + fi + local src='^ #- "templates\/web.ssl.template.yml"' + local dst=' \- "templates\/web.ssl.template.yml"' + sed -i -e "s/$src/$dst/w $changelog" $config_file + if [ -s $changelog ] + then + echo "web.ssl.template.yml enabled" + else + update_ok="n" + echo "web.ssl.template.yml NOT ENABLED--was it on already?" + fi + local src='^ #- "templates\/web.letsencrypt.ssl.template.yml"' + local dst=' - "templates\/web.letsencrypt.ssl.template.yml"' + + sed -i -e "s/$src/$dst/w $changelog" $config_file + if [ -s $changelog ] + then + echo "letsencrypt.ssl.template.yml enabled" + else + update_ok="n" + echo "letsencrypt.ssl.template.yml NOT ENABLED -- was it on already?" + fi + fi + + if [ "$update_ok" == "y" ] + then + echo -e "\nConfiguration file at $config_file updated successfully!\n" + else + echo -e "\nUnfortunately, there was an error changing $config_file\n" + exit 1 + fi +} + +## +## is our config file valid? Does it have the required fields set? +## +valid_config_check() { + + 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` + local result=$? + local default="example.com" + + if (( result == 0 )) + then + if [[ $config_line = *"$default"* ]] + then + echo "$x left at incorrect default of example.com" + valid_config="n" + fi + config_val=`echo $config_line | awk '{print $2}'` + if [ -z $config_val ] + then + echo "$x was left blank" + valid_config="n" + fi + else + echo "$x not present" + valid_config="n" + fi + done + + if [ "$valid_config" != "y" ]; then + echo -e "\nSorry, these $config_file settings aren't valid -- can't continue!" + exit 1 + fi +} + + +## +## template file names +## +app_name=app +template_path=samples/standalone.yml +config_file=containers/$app_name.yml +changelog=/tmp/changelog + +## make a copy of the simple standalone config file + +if [ -a $config_file ] +then + echo "The configuration file $config_file already exists!" + echo "" + echo "If you want to delete your old configuration file and start over:" + echo "rm $config_file" + exit 1 +else + cp $template_path $config_file +fi + +check_disk_and_memory +check_ports +scale_ram_and_cpu +set_config +valid_config_check + +./launcher bootstrap $app_name diff --git a/launcher b/launcher index 69a33f0..25ca6df 100755 --- a/launcher +++ b/launcher @@ -1,29 +1,26 @@ #!/bin/bash usage () { - echo "Usage: launcher COMMAND CONFIG [--skip-prereqs] [--skip-discourse-prereqs] [--docker-args STRING]" + echo "Usage: launcher COMMAND CONFIG [--skip-prereqs] [--docker-args STRING]" echo "Commands:" echo " start: Start/initialize a container" echo " stop: Stop a running container" echo " restart: Restart a container" echo " destroy: Stop and remove a container" - echo " enter: Use nsenter to enter a container" - echo " logs: Docker logs for container" + echo " enter: Use nsenter to get a shell into a container" + echo " logs: View the Docker logs for a container" echo " bootstrap: Bootstrap a container for the config based on a template" echo " rebuild: Rebuild a container (destroy old, bootstrap, start new)" echo " cleanup: Remove all containers that have stopped for > 24 hours" - echo " setup: Create a new configuration file and bootstrap" echo echo "Options:" echo " --skip-prereqs Don't check launcher prerequisites" - echo " --skip-discourse-prereqs Don't check prerequisites specifiy to Discourse" echo " --docker-args Extra arguments to pass when running docker" exit 1 } command=$1 config=$2 - user_args="" while [ ${#} -gt 0 ]; do @@ -32,9 +29,6 @@ while [ ${#} -gt 0 ]; do --skip-prereqs) SKIP_PREREQ="1" ;; - --skip-discourse-prereqs) - SKIP_DISCOURSE_PREREQS="1" - ;; --docker-args) user_args="$2" shift @@ -67,8 +61,6 @@ local_discourse=local_discourse image=discourse/discourse:1.0.17 docker_path=`which docker.io || which docker` git_path=`which git` -template_path=samples/standalone.yml -changelog=/tmp/changelog # used to test whether sed did anything if [ "${SUPERVISED}" = "true" ]; then restart_policy="--restart=no" @@ -115,13 +107,11 @@ compare_version() { install_docker() { - - echo "Docker is not installed, you will need to install Docker in order to run Discourse" + echo "Docker is not installed, you will need to install Docker in order to run Launcher" echo "Please visit https://docs.docker.com/installation/ for instructions on how to do this for your system" echo echo "If you are running a recent Ubuntu Server, try the following:" echo "sudo apt-get install docker-engine" - exit 1 } @@ -177,7 +167,6 @@ check_prereqs() { echo echo "Please be patient" echo - fi # 5. running recommended git version @@ -207,67 +196,6 @@ check_prereqs() { } - -check_resources() { - # Memory - resources="ok" - avail_mem="$(LANG=C free -m | grep '^Mem:' | awk '{print $2}')" - if [ "$avail_mem" -lt 900 ]; then - resources="insufficient" - echo "WARNING: You do not appear to have sufficient memory to run Discourse." - echo - echo "Your system may not work properly, or future upgrades of Discourse may" - echo "not complete successfully." - echo - echo "See https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md#create-new-cloud-server" - elif [ "$avail_mem" -lt 1800 ]; then - total_swap="$(LANG=C free -m | grep ^Swap: | awk '{print $2}')" - if [ "$total_swap" -lt 1000 ]; then - resources="insufficient" - echo "WARNING: You must have at least 1GB of swap when running with less" - echo "than 2GB of RAM." - echo - echo "Your system may not work properly, or future upgrades of Discourse may" - echo "not complete successfully." - echo - echo "See https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md#set-up-swap-if-needed" - fi - fi - - # Disk space - free_disk="$(df /var | tail -n 1 | awk '{print $4}')" - if [ "$free_disk" -lt 5000 ]; then - resources="insufficient" - echo "WARNING: You must have at least 5GB of *free* disk space to run Discourse." - echo - echo "Insufficient disk space may result in problems running your site, and may" - echo "not even allow Discourse installation to complete successfully." - echo - echo "Please free up some space, or expand your disk, before continuing." - echo - echo "Run \`apt-get autoremove && apt-get autoclean\` to clean up unused packages and \`./launcher cleanup\` to remove stale Docker containers." - exit 1 - fi - - if [ -t 0 ] && [ "$resources" != "ok" ]; then - echo - read -p "Press ENTER to continue, or Ctrl-C to exit and give your system more resources" - fi -} - -check_ports() { - local valid=$(netstat -tln | awk '{print $4}' | grep ":${1}\$") - - if [ -n "$valid" ]; then - echo "Launcher has detected that port ${1} is in use." - echo - echo "If you are trying to run Discourse simultaneously with another web server like Apache or nginx, you will need to bind to a different port." - echo "See https://meta.discourse.org/t/17247 for help." - echo "To continue anyway, re-run Launcher with --skip-prereqs" - exit 1 - fi -} - if [ -z "$SKIP_PREREQS" ] ; then check_prereqs fi @@ -368,7 +296,7 @@ RUBY if [ "$ok" -ne 1 ]; then echo "${env[@]}" - echo "YAML syntax error. Please check your /var/discourse/containers/*.yml config files." + echo "YAML syntax error. Please check your containers/*.yml config files." exit 1 fi } @@ -461,272 +389,6 @@ set_boot_command() { fi } -scale_ram_and_cpu() { - - # grab info about total system ram and physical (NOT LOGICAL!) CPU cores - avail_mem="$(LANG=C free -m | grep '^Mem:' | awk '{print $2}')" - avail_gb=$(( $avail_mem / 950 )) - avail_cores=`cat /proc/cpuinfo | grep "cpu cores" | uniq | awk '{print $4}'` - echo "Found ${avail_gb}GB of memory and $avail_cores physical CPU cores" - - # db_shared_buffers: 128MB for 1GB, 256MB for 2GB, or 256MB * GB, max 4096MB - if [ "$avail_gb" -eq "1" ] - then - db_shared_buffers=128 - else - if [ "$avail_gb" -eq "2" ] - then - db_shared_buffers=256 - else - db_shared_buffers=$(( 256 * $avail_gb )) - fi - fi - db_shared_buffers=$(( db_shared_buffers < 4096 ? db_shared_buffers : 4096 )) - - sed -i -e "s/^ #db_shared_buffers:.*/ db_shared_buffers: \"${db_shared_buffers}MB\"/w $changelog" $config_file - if [ -s $changelog ] - then - echo "setting db_shared_buffers = ${db_shared_buffers}MB based on detected CPU/RAM" - rm $changelog - fi - - - # UNICORN_WORKERS: 2 * GB for 2GB or less, or 2 * CPU, max 8 - if [ "$avail_gb" -le "2" ] - then - unicorn_workers=$(( 2 * $avail_gb )) - else - unicorn_workers=$(( 2 * $avail_cores )) - fi - unicorn_workers=$(( unicorn_workers < 8 ? unicorn_workers : 8 )) - - sed -i -e "s/^ #UNICORN_WORKERS:.*/ UNICORN_WORKERS: ${unicorn_workers}/w $changelog" $config_file - if [ -s $changelog ] - then - echo "setting UNICORN_WORKERS = ${unicorn_workers} based on detected CPU/RAM" - rm $changelog - fi - -} - -set_config() { - if [ -f $config_file ] - then - echo $config_file exists already. - echo To remove it use: rm $config_file - exit 1 - fi - cp ./samples/standalone.yml $config_file - if [ ! -f $config_file ] - then - echo Unable to copy $config_file. Are you root? - exit 1 - fi - - local hostname="discourse.example.com" - local developer_emails="me@example.com" - local smtp_address="smtp.example.com" - local smtp_user_name="user@example.com" - local smtp_password="pa\$\$word" - local letsencrypt_account_email="your.email@example.com" - local letsencrypt_status="change to enable" - - local new_value="" - local letsencrypt_status="change to enable" - local config_sane="n" - local config_ok="n" - local update_ok="y" - - while [[ "$config_ok" == "n" || "$config_sane" == "n" ]] - do - if [ ! -z $hostname ] - then - read -p "hostname: [$hostname]: " new_value - if [ ! -z $new_value ] - then - hostname=$new_value - else - echo "Unchanged." - fi - fi - if [ ! -z $developer_emails ] - then - read -p "developer_emails [$developer_emails]: " new_value - if [ ! -z $new_value ] - then - developer_emails=$new_value - fi - fi - if [ ! -z $smtp_address ] - then - read -p "smtp_address [$smtp_address]: " new_value - if [ ! -z $new_value ] - then - smtp_address=$new_value - fi - fi - if [ "$smtp_address" == "smtp.sparkpostmail.com" ] - then - smtp_user_name="SMTP_Injection" - - fi - if [ "$smtp_address" == "smtp.sendgrid.net" ] - then - smtp_user_name="apikey" - fi - if [ ! -z $smtp_user_name ] - then - read -p "smtp_user_name [$smtp_user_name]: " new_value - if [ ! -z $new_value ] - then - smtp_user_name=$new_value - fi - fi - if [ ! -z $smtp_password ] - then - read -p "smtp_password [$smtp_password]: " new_value - if [ ! -z $new_value ] - then - smtp_password=$new_value - fi - fi - if [ ! -z $letsencrypt_account_email ] - then - read -p "letsencrypt_account_email ($letsencrypt_status) [$letsencrypt_account_email]: " new_value - if [ ! -z $new_value ] - then - letsencrypt_account_email=$new_value - if [ "$new_value" == "off" ] - then - letsencrypt_status="change to enable" - else - letsencrypt_status="Enter 'OFF' to disable." - echo "Letsencrypt enabled." - fi - else - echo "letsencrypt unchanged" - fi - fi - - #TODO sanity check these values. For now we trust the user's input. - config_sane="y" - - if [ "$config_sane" == "y" ] - then - echo -e "\nThat's it! Everything is set. Read carefully before continuing.\n" - else - echo "Errors found in settings" - fi - - echo "DISCOURSE_HOSTNAME: $hostname" - echo "DISCOURSE_DEVELOPER_EMAILS: $developer_emails" - echo "DISCOURSE_SMTP_ADDRESS: $smtp_address" - echo "DISCOURSE_SMTP_USER_NAME: $smtp_user_name" - echo "DISCOURSE_SMTP_PASSWORD: $smtp_password" - if [ "$letsencrypt_status" == "Enter 'OFF' to disable." ] - then - echo "LETSENCRYPT_ACCOUNT_EMAIL: $letsencrypt_account_email" - echo "LETSENCRYPT will be enabled." - else - echo "LETSENCRYPT will not be enabled." - fi - echo - read -p "Enter to write these settings to $config_file, 'N' to retry, or ^C to start again: " config_ok - done - - echo -e "\nWriting changes to $config_file:" - sed -i -e "s/^ DISCOURSE_HOSTNAME: 'discourse.example.com'/ DISCOURSE_HOSTNAME: $hostname/w $changelog" $config_file - if [ -s $changelog ] - then - cat $changelog - rm $changelog - else - echo DISCOURSE_HOSTNAME change failed. - update_ok="n" - fi - - sed -i -e "s/^ DISCOURSE_DEVELOPER_EMAILS:.*/ DISCOURSE_DEVELOPER_EMAILS: \'$developer_emails\'/w $changelog" $config_file - if [ -s $changelog ] - then - cat $changelog - rm $changelog - else - echo DISCOURSE_DEVELOPER_EMAILS change failed. - update_ok="n" - fi - - sed -i -e "s/^ DISCOURSE_SMTP_ADDRESS: smtp.example.com.*/ DISCOURSE_SMTP_ADDRESS: $smtp_address/w $changelog" $config_file - if [ -s $changelog ] - then - cat $changelog - rm $changelog - else - echo DISCOURSE_SMTP_ADDRESS change failed. - update_ok="n" - fi - - sed -i -e "s/^ #DISCOURSE_SMTP_USER_NAME: user@example.com.*/ DISCOURSE_SMTP_USER_NAME: $smtp_user_name/w $changelog" $config_file - if [ -s $changelog ] - then - cat $changelog - rm $changelog - else - echo DISCOURSE_SMTP_USER_NAME change failed. - update_ok="n" - fi - - sed -i -e "s/^ #DISCOURSE_SMTP_PASSWORD: pa\$\$word.*/ DISCOURSE_SMTP_PASSWORD: $smtp_password/w $changelog" $config_file - if [ -s $changelog ] - then - cat $changelog - rm $changelog - else - echo DISCOURSE_SMTP_PASSWORD change failed. - update_ok="n" - fi - - if [ "$letsencrypt_status" != "change to enable" ] - then - sed -i -e "s/^ #LETSENCRYPT_ACCOUNT_EMAIL: your.email@example.com/ LETSENCRYPT_ACCOUNT_EMAIL: $letsencrypt_account_email/w $changelog" $config_file - if [ -s $changelog ] - then - cat $changelog - rm $changelog - else - echo LETSENCRYPT_ACCOUNT_EMAIL change failed. - update_ok="n" - fi - local src='^ #- "templates\/web.ssl.template.yml"' - local dst=' \- "templates\/web.ssl.template.yml"' - sed -i -e "s/$src/$dst/w $changelog" $config_file - if [ -s $changelog ] - then - echo " web.ssl.template.yml enabled" - else - update_ok="n" - echo " web.ssl.template.yml NOT ENABLED--was it on already?" - fi - local src='^ #- "templates\/web.letsencrypt.ssl.template.yml"' - local dst=' - "templates\/web.letsencrypt.ssl.template.yml"' - - sed -i -e "s/$src/$dst/w $changelog" $config_file - if [ -s $changelog ] - then - echo " letsencrypt.ssl.template.yml enabled" - else - update_ok="n" - echo "letsencrypt.ssl.template.yml NOT ENABLED--was it on already?" - fi - fi # enable letsencrypt - - if [ "$update_ok" == "y" ] - then - echo -e "\n$config_file updated successfully." - else - echo -e "There was an error changing the configuration.\n" - fi -} - run_start() { existing=`$docker_path ps | awk '{ print $1, $(NF) }' | grep " $config$" | awk '{ print $1 }'` @@ -750,22 +412,6 @@ run_start() { host_run - if [ -z "$SKIP_DISCOURSE_PREREQS" ] ; then - ports=`cat $config_file | $docker_path run $user_args --rm -i -a stdout -a stdin $image ruby -e \ - "require 'yaml'; puts YAML.load(STDIN.readlines.join)['expose'].map{|p| \"-p #{p}\"}.join(' ')"` - - IFS='-p ' read -a array <<< "$ports" - for element in "${array[@]}" - do - IFS=':' read -a args <<< "$element" - if [ "${#args[@]}" == "2" ]; then - check_ports "${args[0]}" - elif [ "${#args[@]}" == "3" ]; then - check_ports "${args[1]}" - fi - done - fi - docker_args=`cat $config_file | $docker_path run $user_args --rm -i -a stdout -a stdin $image ruby -e \ "require 'yaml'; puts YAML.load(STDIN.readlines.join)['docker_args']"` @@ -809,44 +455,8 @@ run_start() { } -valid_config_check() { - - valid_config="y" - for x in DISCOURSE_SMTP_ADDRESS DISCOURSE_SMTP_USER_NAME DISCOURSE_SMTP_PASSWORD \ - DISCOURSE_DEVELOPER_EMAILS DISCOURSE_HOSTNAME - do - mail_var=`grep "^ $x:" $config_file` - local result=$? - local default="example.com" - if (( result == 0 )) - then - if [[ $mail_var = *"$default"* ]] - then - echo "Warning: $x left at incorrect default of example.com" - valid_config="n" - fi - else - echo "Warning: $x not configured" - valid_config="n" - fi - done - if [ -t 0 ] && [ "$valid_config" != "y" ]; then - echo - read -p "Press Ctrl-C to exit and edit $config_file or ENTER to continue" - fi -} run_bootstrap() { - if [ -z "$SKIP_DISCOURSE_PREREQS" ] ; then - # Does your system meet the minimum requirements? - check_resources - - # is our configuration file valid? - valid_config_check - - # make minor scaling adjustments for RAM and CPU - scale_ram_and_cpu - fi # I got no frigging clue what this does, ask Sam Saffron. It RUNS STUFF ON THE HOST I GUESS? host_run @@ -901,13 +511,6 @@ case "$command" in exit 0 ;; - setup) - set_config - read -p "Press ENTER to continue, or Ctrl-C to exit to check $config_file" - run_bootstrap - exit 0 - ;; - enter) exec $docker_path exec -it $config /bin/bash --login ;; @@ -936,7 +539,7 @@ case "$command" in rebuild) if [ "$(git symbolic-ref --short HEAD)" == "master" ]; then - echo "Ensuring discourse docker is up to date" + echo "Ensuring launcher is up to date" git remote update @@ -945,18 +548,18 @@ case "$command" in BASE=$(git merge-base @ @{u}) if [ $LOCAL = $REMOTE ]; then - echo "Discourse Docker is up-to-date" + echo "Launcher is up-to-date" elif [ $LOCAL = $BASE ]; then - echo "Updating Discourse Docker" + echo "Updating Launcher" git pull || (echo 'failed to update' && exit 1) exec /bin/bash $0 $@ elif [ $REMOTE = $BASE ]; then - echo "Your version of Discourse Docker is ahead of origin" + echo "Your version of Launcher is ahead of origin" else - echo "Discourse Docker has diverged source, this is only expected in Dev mode" + echo "Launcher has diverged source, this is only expected in Dev mode" fi fi -- 2.25.1