From c0c7ff0e20016b5636cc3bc50bd99ad7d3bee7f5 Mon Sep 17 00:00:00 2001 From: Keith John Hutchison Date: Sat, 5 Jan 2019 13:12:01 +1030 Subject: [PATCH 1/2] Added `.DS_Store` for MacOSX to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 695622c..9609af0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.DS_Store .env data/ docker-compose.override.yml -- GitLab From 9b35b6fc772924261d25d6f086bb252bde19e436 Mon Sep 17 00:00:00 2001 From: Keith John Hutchison Date: Sat, 5 Jan 2019 13:55:24 +1030 Subject: [PATCH 2/2] Added support for preloading environment variables if .env exists. Added support for asking for environment variables if they do not exist. Resolved issue random password generation on MacOSX. Resolved issue with rake requiring bundle exec to overcome rake versioning issue. Added documentation for environment variables to README.md Added example.env to assist those who wish to prepopulate the environment variables required. modified: README.md new file: example.env modified: scripts/install --- README.md | 20 ++++++++++++++++++++ example.env | 8 ++++++++ scripts/install | 48 +++++++++++++++++++++++++++++++++++++++--------- 3 files changed, 67 insertions(+), 9 deletions(-) create mode 100644 example.env diff --git a/README.md b/README.md index 1a32461..dc10926 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ The easiest is to use our `docker-compose.yml`. Make sure you have [docker-compose](http://docs.docker.com/compose/install/) installed. And then: ``` +docker network create lb_web git clone https://github.com/indiehosters/discourse.git cd discourse ./scripts/install @@ -40,3 +41,22 @@ web: - "80:80" ... ``` + +##Environment variables + +./scripts/install expects certain environment variables to be in place. +You will be asked for these values if they do not already exist. + +``` +VIRTUAL_HOST=host-domain +DISCOURSE_SMTP_ADDRESS=smtp-host +DISCOURSE_SMTP_USER_NAME=smtp-host-username +DISCOURSE_SMTP_PASSWORD=smtp-host-password +DISCOURSE_DB_PASSWORD=postgres-database-password +POSTGRES_PASSWORD=postgres-database-password +SUBNET=0 +POSTGRES_VERSION=10.6 +``` + +You can prepopulate these environment variables by copying example.env to .env and changing the values to suit your environment. + diff --git a/example.env b/example.env new file mode 100644 index 0000000..1c75869 --- /dev/null +++ b/example.env @@ -0,0 +1,8 @@ +VIRTUAL_HOST=host-domain +DISCOURSE_SMTP_ADDRESS=smtp-host +DISCOURSE_SMTP_USER_NAME=smtp-host-username +DISCOURSE_SMTP_PASSWORD=smtp-host-password +DISCOURSE_DB_PASSWORD=postgres-database-password +POSTGRES_PASSWORD=postgres-database-password +SUBNET=0 +POSTGRES_VERSION=10.6 diff --git a/scripts/install b/scripts/install index 9fc21eb..0df6078 100755 --- a/scripts/install +++ b/scripts/install @@ -1,20 +1,50 @@ #!/bin/bash -eux -PG_PASSWORD=`< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;` -echo "DISCOURSE_SMTP_ADDRESS=${MAIL_HOST}" > .env -echo "DISCOURSE_SMTP_USER_NAME=${MAIL_USER}" >> .env -echo "DISCOURSE_SMTP_PASSWORD=${MAIL_PASS}" >> .env -echo "DISCOURSE_DB_PASSWORD=${PG_PASSWORD}" >> .env -echo "POSTGRES_PASSWORD=${PG_PASSWORD}" >> .env +# https://stackoverflow.com/questions/19331497/set-environment-variables-from-file-of-key-pair-values#20909045 +# clear enviromnet variables listed in .env +unset $(grep -v '^#' .env | sed -E 's/(.*)=.*/\1/' | xargs) +# load .env. +export $(grep -v '^#' .env | xargs -d '\n') +export $(grep -v '^#' .env | xargs -0) +# https://stackoverflow.com/questions/19331497/set-environment-variables-from-file-of-key-pair-values#20909045 + + +if [ -z ${VIRTUAL_HOST+x} ]; then + echo -n "Enter VIRTUAL_HOST: "; read VIRTUAL_HOST ; else + echo "VIRTUAL_HOST is set to '$VIRTUAL_HOST'"; fi + +if [ -z ${DISCOURSE_SMTP_ADDRESS+x} ]; then + echo -n "Enter DISCOURSE_SMTP_ADDRESS: "; read DISCOURSE_SMTP_ADDRESS ; else + echo "DISCOURSE_SMTP_ADDRESS is set to '$DISCOURSE_SMTP_ADDRESS'"; fi + +if [ -z ${DISCOURSE_SMTP_USER_NAME+x} ]; then + echo -n "Enter DISCOURSE_SMTP_USER_NAME: "; read DISCOURSE_SMTP_USER_NAME ; else + echo "DISCOURSE_SMTP_USER_NAME is set to '$DISCOURSE_SMTP_USER_NAME'"; fi + +if [ -z ${DISCOURSE_SMTP_PASSWORD+x} ]; then + echo -n "Enter DISCOURSE_SMTP_PASSWORD: "; read DISCOURSE_SMTP_PASSWORD ; else + echo "DISCOURSE_SMTP_PASSWORD is set to '$DISCOURSE_SMTP_PASSWORD'"; fi + +if [ -z ${DISCOURSE_DB_PASSWORD+x} ]; then + # https://unix.stackexchange.com/a/217276/111699 handle tr: Illegal byte sequence on Mac OSX. + DISCOURSE_DB_PASSWORD=$(perl -pe 'binmode(STDIN, ":bytes"); tr/A-Za-z0-9_\!\@\#\$\%\^\&\*\(\)-+=//dc;' < /dev/urandom | head -c 32 ; echo); else + echo "DISCOURSE_DB_PASSWORD is set to '$DISCOURSE_DB_PASSWORD'"; fi + +echo "VIRTUAL_HOST=${VIRTUAL_HOST}" > .env +echo "DISCOURSE_SMTP_ADDRESS=${DISCOURSE_SMTP_ADDRESS}" >> .env +echo "DISCOURSE_SMTP_USER_NAME=${DISCOURSE_SMTP_USER_NAME}" >> .env +echo "DISCOURSE_SMTP_PASSWORD=${DISCOURSE_SMTP_PASSWORD}" >> .env +echo "DISCOURSE_DB_PASSWORD=${DISCOURSE_DB_PASSWORD}" >> .env +echo "POSTGRES_PASSWORD=${DISCOURSE_DB_PASSWORD}" >> .env echo "SUBNET=${SUBNET:-0}" >> .env echo "POSTGRES_VERSION=10.6" >> .env mkdir -p ./data/{assets,uploads,backups,redis,postgres} -chown -R 1000:1000 ./data/ +chown -R 1000:1000 ./data || true # || true handles if chown -R 1000:1000 fails on Mac OSX -VIRTUAL_HOST=${URL} docker-compose run app bash -c "sleep 60 && bundle exec rake maxminddb:get db:migrate assets:precompile" -VIRTUAL_HOST=${URL} docker-compose run app bash -c "rake admin:create" +VIRTUAL_HOST=${VIRTUAL_HOST} docker-compose run app bash -c "sleep 60 && bundle exec rake maxminddb:get db:migrate assets:precompile" +VIRTUAL_HOST=${VIRTUAL_HOST} docker-compose run app bash -c "bundle exec rake admin:create" echo "!!!Configure notification email in discourse settings!!!!!!" -- GitLab