first commit
This commit is contained in:
commit
5de45a37bd
9 files changed
+499
No files matched your search
@@ -0,0 +1,150 @@
|
||||
#!/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
|
||||
Reference in new issue
Block a user