151 lines
4.3 KiB
Bash
Executable File
151 lines
4.3 KiB
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
mkdir -p \
|
|
/app/data/logs \
|
|
/app/data/backups \
|
|
/run/floppy/nginx/client_body \
|
|
/run/floppy/nginx/proxy \
|
|
/run/floppy/nginx/fastcgi \
|
|
/run/floppy/nginx/uwsgi \
|
|
/run/floppy/nginx/scgi
|
|
|
|
if [ ! -f /app/data/secret ]; then
|
|
python - <<'PY' > /app/data/secret
|
|
import secrets
|
|
print(secrets.token_urlsafe(64))
|
|
PY
|
|
chmod 600 /app/data/secret
|
|
fi
|
|
|
|
if [ ! -f /app/data/env.sh ]; then
|
|
cat > /app/data/env.sh <<'ENVEOF'
|
|
# Floppy settings managed by you.
|
|
# Edit this file in Cloudron's File Manager and restart the app.
|
|
|
|
REGISTRATION=True
|
|
ADMIN_ENABLED=False
|
|
DEMO_ACCOUNT_ENABLED=False
|
|
|
|
TMDB_API=
|
|
TZ=Europe/Berlin
|
|
|
|
# Optional examples:
|
|
# TRAKT_API=
|
|
# TRAKT_API_SECRET=
|
|
# TVDB_API_KEY=
|
|
# TVDB_PIN=
|
|
# MAL_API=
|
|
# IGDB_ID=
|
|
# IGDB_SECRET=
|
|
# STEAM_API_KEY=
|
|
# BGG_API_TOKEN=
|
|
# HARDCOVER_API=
|
|
# COMICVINE_API=
|
|
# LASTFM_API_KEY=
|
|
ENVEOF
|
|
fi
|
|
|
|
# Export all variables defined in env.sh so Django, Celery and Supervisor
|
|
# receive them as real environment variables.
|
|
set -a
|
|
# shellcheck disable=SC1091
|
|
. /app/data/env.sh
|
|
set +a
|
|
|
|
# ----------------------------------------------------------------------
|
|
# Cloudron managed services
|
|
# ----------------------------------------------------------------------
|
|
|
|
export SECRET="$(cat /app/data/secret)"
|
|
|
|
export DB_HOST="$CLOUDRON_POSTGRESQL_HOST"
|
|
export DB_PORT="$CLOUDRON_POSTGRESQL_PORT"
|
|
export DB_NAME="$CLOUDRON_POSTGRESQL_DATABASE"
|
|
export DB_USER="$CLOUDRON_POSTGRESQL_USERNAME"
|
|
export DB_PASSWORD="$CLOUDRON_POSTGRESQL_PASSWORD"
|
|
|
|
export REDIS_URL="$CLOUDRON_REDIS_URL"
|
|
export REDIS_CACHE_URL="$CLOUDRON_REDIS_URL"
|
|
export CELERY_BROKER_URL="$CLOUDRON_REDIS_URL"
|
|
export CELERY_RESULT_BACKEND="$CLOUDRON_REDIS_URL"
|
|
|
|
# Cloudron owns the Redis instance. Floppy must not try to manage
|
|
# Redis memory limits globally.
|
|
export REDIS_ADMIN_URL="$CLOUDRON_REDIS_URL"
|
|
export FLOPPY_REDIS_MAXMEMORY=0
|
|
|
|
# ----------------------------------------------------------------------
|
|
# Cloudron reverse proxy
|
|
# ----------------------------------------------------------------------
|
|
|
|
export URLS="$CLOUDRON_APP_ORIGIN"
|
|
export ALLOWED_HOSTS="$CLOUDRON_APP_DOMAIN"
|
|
|
|
export USE_X_FORWARDED=True
|
|
export USE_X_FORWARDED_PROTO=True
|
|
|
|
# ----------------------------------------------------------------------
|
|
# Floppy defaults
|
|
#
|
|
# Values from /app/data/env.sh take precedence.
|
|
# ----------------------------------------------------------------------
|
|
|
|
export DEBUG="${DEBUG:-False}"
|
|
export DEMO_ACCOUNT_ENABLED="${DEMO_ACCOUNT_ENABLED:-False}"
|
|
export ADMIN_ENABLED="${ADMIN_ENABLED:-False}"
|
|
export REGISTRATION="${REGISTRATION:-True}"
|
|
export TMDB_API="${TMDB_API:-}"
|
|
export TZ="${TZ:-Europe/Berlin}"
|
|
|
|
export LOG_DIR=/app/data/logs
|
|
export BACKUP_DIR=/app/data/backups
|
|
export FLOPPY_DATA_DIR=/app/data
|
|
|
|
# ----------------------------------------------------------------------
|
|
# Permissions
|
|
# ----------------------------------------------------------------------
|
|
|
|
chown -R abc:abc /app/data /run/floppy
|
|
|
|
cd /floppy
|
|
|
|
|
|
# ----------------------------------------------------------------------
|
|
# Database
|
|
# ----------------------------------------------------------------------
|
|
|
|
echo "[cloudron] Applying Floppy database migrations"
|
|
|
|
DB_POOL_ENABLED=false \
|
|
PGOPTIONS="-c lock_timeout=120s" \
|
|
python manage.py migrate --noinput
|
|
|
|
# ----------------------------------------------------------------------
|
|
# Runtime sizing
|
|
#
|
|
# Match Floppy's own resource sizing logic without invoking its
|
|
# Docker-specific entrypoint.
|
|
# ----------------------------------------------------------------------
|
|
|
|
if resource_env=$(python -c 'from config.runtime_profile import emit_env; emit_env()' 2>/dev/null); then
|
|
eval "$resource_env"
|
|
fi
|
|
|
|
export FLOPPY_RESOURCE_TIER="${FLOPPY_RESOURCE_TIER:-minimal}"
|
|
export FLOPPY_CELERY_QUEUES="${FLOPPY_CELERY_QUEUES:-celery,interactive,discover}"
|
|
export FLOPPY_CELERY_ROLE="${FLOPPY_CELERY_ROLE:-background}"
|
|
export FLOPPY_START_INTERACTIVE_WORKER="${FLOPPY_START_INTERACTIVE_WORKER:-false}"
|
|
export FLOPPY_START_DISCOVER_WORKER="${FLOPPY_START_DISCOVER_WORKER:-false}"
|
|
|
|
# ----------------------------------------------------------------------
|
|
# Start
|
|
# ----------------------------------------------------------------------
|
|
|
|
echo "[cloudron] Starting Floppy on ${CLOUDRON_APP_ORIGIN}"
|
|
echo "[cloudron] Registration enabled: ${REGISTRATION}"
|
|
echo "[cloudron] Admin enabled: ${ADMIN_ENABLED}"
|
|
echo "[cloudron] Timezone: ${TZ}"
|
|
|
|
exec supervisord -c /app/code/supervisord-cloudron.conf
|