90 lines
3.5 KiB
Bash
Executable File
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"'
|