taiga/launch
2017-06-27 23:27:00 +02:00

90 lines
3.5 KiB
Bash
Executable File

#!/bin/bash
# Debug
# set -x
# Do Not Change these variables unless you know what you are doing
export ESC=$
export DJANGO_SECRET_KEY=$(openssl rand -hex 32)
# Default variables. These shall be overridden :-)
export GUNICORN_WORKERS=${GUNICORN_WORKERS:-1}
export SITE_URI=${SITE_URI:-http://example.com}
export SITE_FQDN=$(echo $SITE_URI | sed -e "s/[^/]*\/\/\([^@]*@\)\?\([^:/]*\).*/\2/")
[ "${SITE_URI::5}" == "https" ] && SITE_SCHEME="https" || SITE_SCHEME="http"
export SITE_SCHEME
[ ${PUBLIC_REGISTER,,} == "false" ] \
&& { PUBLIC_REGISTER="False"; PUBLIC_REGISTER_JS="false"; } \
|| { PUBLIC_REGISTER="True"; PUBLIC_REGISTER_JS="true"; }
export PUBLIC_REGISTER PUBLIC_REGISTER_JS
export ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example.com}
export NOREPLY_EMAIL=${NOREPLY_EMAIL:-no-reply@example.com}
export TAIGA_DB_HOST=${TAIGA_DB_HOST:-postgres}
export TAIGA_DB_PORT=${TAIGA_DB_PORT:-5432}
export TAIGA_DB_NAME=${TAIGA_DB_NAME:-taiga}
export TAIGA_DB_USER=${TAIGA_DB_USER:-taiga}
export TAIGA_DB_PASSWORD=${TAIGA_DB_PASSWORD:-mysecretpassword}
export EMAIL_HOST=${EMAIL_HOST:-localhost}
export EMAIL_HOST_USER=${EMAIL_HOST_USER:-}
export EMAIL_HOST_PASSWORD=${EMAIL_HOST_PASSWORD:-}
export EMAIL_HOST_PORT=${EMAIL_HOST_PORT:-587}
export EMAIL_USE_TLS=${EMAIL_USE_TLS:-False}
export EMAIL_BACKEND=${EMAIL_BACKEND:-django.core.mail.backends.smtp.EmailBackend}
# Generate configs based on the template seeds
envsubst < /tmp/taiga.tmpl > /etc/nginx/sites-enabled/taiga
envsubst < /tmp/circus.ini.tmpl > $DATA/circus.ini
envsubst < /tmp/conf.json.tmpl > $DATA/taiga-front-dist/dist/conf.json
envsubst < /tmp/local.py.tmpl > $DATA/taiga-back/settings/local.py
envsubst < /tmp/already_initialized.tmpl > /already_initialized
chmod +x /already_initialized
# Keep sensitive information out of here
unset DJANGO_SECRET_KEY TAIGA_DB_PASSWORD
# Make sure the dynamic data is writable by the circus/gunicorn
chown -Rh $USER:$GROUP $DATA/media $DATA/taiga-back/taiga/locale $DATA/logs
# Make sure the PostgreSQL database is up and ready
while ! ping -c 1 -W 1 $TAIGA_DB_HOST >/dev/null 2>&1; do
echo "Waiting for $TAIGA_DB_HOST to be Up ..."
sleep 1
done
while ! timeout 1 bash -c 'cat < /dev/null > /dev/tcp/$TAIGA_DB_HOST/$TAIGA_DB_PORT' >/dev/null 2>&1; do
echo "Waiting for $TAIGA_DB_HOST:$TAIGA_DB_PORT to be Ready ..."
sleep 1
done
# This will make a tiny delay which will help to ensure the database is up and
# running before it will be seeded/updated
/already_initialized
# TODO: in case if /already_initialized fails, the bad things will happen, like the default: admin:123123 ... need to make this more robust.
# Upgrade DB schemas, etc...
# This is important when Taiga's codebase gets updated
su -s /bin/bash $USER -c 'source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
workon venvtaiga
cd $DATA/taiga-back
python manage.py migrate --noinput
/already_initialized || ( python manage.py loaddata initial_user \
&& python manage.py loaddata initial_project_templates \
&& python manage.py loaddata initial_role \
&& echo "First run: A new user admin with password 123123 has been created. Please change the password once you login." )
python manage.py compilemessages
python manage.py collectstatic --noinput
deactivate'
# (Optional) Fill Taiga with the Sample data
# su -s /bin/sh $USER -c '. $DATA/venvtaiga/bin/activate
# cd $DATA/taiga-back
# python manage.py sample_data
# deactivate'
# Launch the backend
service nginx start
su -s /bin/sh $USER -c '/usr/local/bin/circusd "$DATA/circus.ini"'