split Discourse specific code into discourse-setup
authorJeff Atwood <jatwood@codinghorror.com>
Wed, 27 Apr 2016 10:05:56 +0000 (03:05 -0700)
committerJeff Atwood <jatwood@codinghorror.com>
Wed, 27 Apr 2016 10:05:56 +0000 (03:05 -0700)
discourse-setup [new file with mode: 0644]
launcher

diff --git a/discourse-setup b/discourse-setup
new file mode 100644 (file)
index 0000000..797f5a8
--- /dev/null
@@ -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
index 69a33f023863ef80fc1df2e769f7a64dc7248151..25ca6dfc57d723e4644910d9f8347a1b443746cf 100755 (executable)
--- 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