mirror of
https://github.com/seanmorley15/AdventureLog.git
synced 2026-07-30 23:38:02 -04:00
- Replaced the All-in-One (AIO) deployment setup with a Standard Deployment configuration, introducing .env.advanced.example for advanced settings. - Updated .dockerignore to reflect the new environment file structure. - Removed .env.aio.example and associated references from documentation and workflows. - Enhanced installation instructions to clarify the new Standard Deployment process. - Updated GitHub Actions workflows to align with the new deployment structure, including smoke tests and image builds. - Improved documentation for environment variable references and deployment options.
8.3 KiB
8.3 KiB
Environment Variables
AdventureLog configuration is driven by environment variables. The file you edit depends on your install type:
| Install type | Env file | Compose file |
|---|---|---|
| Standard Deployment | .env |
docker/docker-compose.yml |
| Advanced Deployment | .env.advanced |
docker/docker-compose.advanced.yml |
| Traefik | .env.advanced |
docker/docker-compose.traefik.yaml |
| Development | .env |
docker/docker-compose.dev.yml |
Validate before deploying:
bash scripts/validate-env.sh
# or for Standard Deployment:
bash scripts/validate-env.sh .env
::: tip Standard Deployment minimal setup
Standard Deployment only requires POSTGRES_PASSWORD in .env. URLs, SECRET_KEY, and admin defaults are derived at container startup. See Standard Deployment.
:::
URL and networking
These variables control how the browser, SvelteKit SSR, and Django talk to each other.
| Variable | Required | Used by | Description | Default |
|---|---|---|---|---|
SITE_URL |
No | Both | Single public URL when frontend and backend share one domain. Derives ORIGIN, FRONTEND_URL, PUBLIC_URL, and CSRF_TRUSTED_ORIGINS when those are unset. |
— |
PUBLIC_SERVER_URL |
Yes | Frontend SSR | Internal backend URL for server-side requests. Keep http://server:8000 in Advanced Deployment. Standard Deployment uses http://127.0.0.1:8000. |
http://server:8000 |
ORIGIN |
Sometimes | Frontend | Public frontend origin (needed without HTTPS). | http://localhost:8015 |
FRONTEND_URL |
Yes | Backend | Public frontend URL for emails and redirects. | http://localhost:8015 |
PUBLIC_URL |
Yes | Backend | Public backend URL for media and OAuth callbacks. | http://localhost:8016 |
CSRF_TRUSTED_ORIGINS |
Yes | Backend | Comma-separated browser origins allowed to submit forms. | http://localhost:8015,http://localhost:8016 |
FRONTEND_PORT |
Yes | Compose | Host port for the frontend container. | 8015 |
BACKEND_PORT |
Yes | Compose | Host port for the backend container. | 8016 |
HOST_PORT |
No | Standard Deployment compose | Host port mapped to the single-container stack. | 8015 |
BODY_SIZE_LIMIT |
Yes | Frontend | Maximum upload size in bytes. | Infinity |
See Advanced Deployment for a visual explanation of the URL model.
Database (PostgreSQL / PostGIS)
| Variable | Required | Description | Default |
|---|---|---|---|
PGHOST |
Yes | Database hostname inside Docker network. | db |
POSTGRES_DB / PGDATABASE |
Yes | Database name. | database |
POSTGRES_USER / PGUSER |
Yes | Database user. | adventure |
POSTGRES_PASSWORD / PGPASSWORD |
Yes | Database password. Change in production. | changeme123 |
Django core
| Variable | Required | Description | Default |
|---|---|---|---|
SECRET_KEY |
Yes | Django secret key. Auto-generated in Standard Deployment if unset. | changeme123 |
DEBUG |
No | Enable debug mode. Use False in production. |
False |
DJANGO_ADMIN_USERNAME |
Yes | First-boot superuser username. | admin |
DJANGO_ADMIN_PASSWORD |
Yes | First-boot superuser password. | admin |
DJANGO_ADMIN_EMAIL |
Yes | First-boot superuser email. | admin@example.com |
GUNICORN_WORKERS |
No | Gunicorn worker processes. Use 1 on small hosts; (2 × CPU) + 1 on larger servers. |
2 |
SKIP_WORLD_DATA |
No | Set to 1 to skip the first-boot download-countries import (saves RAM; world travel data loads later). |
unset |
Registration and authentication
| Variable | Required | Description | Default |
|---|---|---|---|
DISABLE_REGISTRATION |
No | Block new account signups. | False |
DISABLE_REGISTRATION_MESSAGE |
No | Message shown when registration is disabled. | Custom message |
SOCIALACCOUNT_ALLOW_SIGNUP |
No | Allow new accounts via social providers when registration is disabled. | False |
FORCE_SOCIALACCOUNT_LOGIN |
No | Disable password login; social/OIDC only. | False |
ACCOUNT_EMAIL_VERIFICATION |
No | none, optional, or mandatory. |
none |
Related guides: Social Auth, Disable Registration, API Keys.
Rate limiting
| Variable | Required | Description | Default |
|---|---|---|---|
ENABLE_RATE_LIMITS |
No | Enable API rate limiting. Recommended in production. | False |
RATE_LIMIT_USER |
No | Default authenticated user throttle. | 10000/hour |
RATE_LIMIT_IMAGE_PROXY |
No | Image proxy endpoint limit. | 60/minute |
RATE_LIMIT_IMAGE_IMPORT |
No | Image import limit. | 12/minute |
RATE_LIMIT_EXTERNAL_GEOCODE |
No | External geocoding limit. | 120/minute |
RATE_LIMIT_EXTERNAL_RECOMMENDATIONS |
No | Recommendations API limit. | 30/minute |
RATE_LIMIT_EXTERNAL_WIKIPEDIA |
No | Wikipedia lookup limit. | 60/minute |
RATE_LIMIT_EXTERNAL_SUN_TIMES |
No | Sun times API limit. | 30/minute |
See Advanced Configuration for usage notes.
Email (SMTP)
| Variable | Required | Description |
|---|---|---|
EMAIL_BACKEND |
No | console (logs only) or email (SMTP). |
EMAIL_HOST |
If SMTP | SMTP server hostname. |
EMAIL_PORT |
No | SMTP port. Default 587. |
EMAIL_USE_TLS |
No | Enable TLS. Default true. |
EMAIL_USE_SSL |
No | Enable SSL. Default false. |
EMAIL_HOST_USER |
If SMTP | SMTP username. |
EMAIL_HOST_PASSWORD |
If SMTP | SMTP password. |
DEFAULT_FROM_EMAIL |
If SMTP | Sender address. |
See SMTP Email.
Media storage
| Variable | Required | Description | Default |
|---|---|---|---|
MEDIA_STORAGE |
No | local or s3. |
local |
MEDIA_STORAGE_LIMIT_MB |
No | Per-user storage cap in MB (0 = unlimited). |
0 |
MEDIA_STORAGE_LIMIT_BYTES |
No | Overrides MB limit when set. | 0 |
AWS_ACCESS_KEY_ID |
If S3 | S3 access key. | — |
AWS_SECRET_ACCESS_KEY |
If S3 | S3 secret key. | — |
AWS_STORAGE_BUCKET_NAME |
If S3 | Bucket name. | — |
AWS_S3_ENDPOINT_URL |
If non-AWS | Provider endpoint (R2, MinIO, Spaces). | — |
AWS_S3_REGION_NAME |
No | Region (auto for Cloudflare R2). |
— |
AWS_S3_CUSTOM_DOMAIN |
No | CDN or custom domain for media URLs. | — |
See S3 Media Storage.
Integrations
| Variable | Required | Description |
|---|---|---|
GOOGLE_MAPS_API_KEY |
If enabled | Google Maps tiles and place search. |
STRAVA_CLIENT_ID |
If enabled | Strava OAuth client ID. |
STRAVA_CLIENT_SECRET |
If enabled | Strava OAuth client secret. |
PUBLIC_UMAMI_SRC |
If enabled | Umami analytics script URL. |
PUBLIC_UMAMI_WEBSITE_ID |
If enabled | Umami website ID. |
Traefik compose
Used with docker/docker-compose.traefik.yaml:
| Variable | Required | Description |
|---|---|---|
ACME_EMAIL |
Yes | Let's Encrypt registration email. |
TRAEFIK_DOMAIN |
Yes | Public domain for the Traefik router. |
Operations
These are not application settings but affect management scripts:
| Variable | Description | Default |
|---|---|---|
COMPOSE_FILE |
Override compose file (scripts/deploy.sh, backup, restore). |
Auto-detected |
ADVENTURELOG_COMPOSE |
Set to advanced to prefer Advanced Deployment when both env files exist. Legacy aio/standard values still select Standard Deployment. |
unset |
BACKUP_DIR |
Backup output directory for scripts/backup.sh. |
backups |
ADVENTURELOG_REF |
Git ref for installer downloads. | main |
Source of truth
- Standard Deployment env template:
.env.example - Advanced Deployment env template:
.env.advanced.example - Django settings:
backend/server/main/settings.py - Standard Deployment derivation:
docker/aio/env-setup.sh