Files
AdventureLog/documentation/docs/install/traefik.md
Sean Morley d22c55e182 Refactor deployment configurations and update documentation
- 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.
2026-06-12 21:49:01 -04:00

52 lines
2.2 KiB
Markdown

# Traefik Reverse Proxy
Deploy AdventureLog behind [Traefik](https://traefik.io/) with automatic HTTPS and path-based routing using the official compose file.
## Official compose file
Download [`docker/docker-compose.traefik.yaml`](https://github.com/seanmorley15/AdventureLog/blob/main/docker/docker-compose.traefik.yaml) from the repository. It includes:
- Traefik v2.11 with Let's Encrypt
- Prebuilt `adventurelog-frontend` and `adventurelog-backend` images (no local build required)
- Path-based routing: frontend pages on `/`, backend on `/media`, `/admin`, `/accounts`, `/static`
## Required environment variables
Add these to your `.env` alongside the standard AdventureLog variables:
| Variable | Description | Example |
| -------- | ----------- | ------- |
| `ACME_EMAIL` | Let's Encrypt registration email | `you@example.com` |
| `TRAEFIK_DOMAIN` | Public domain for the router | `adventurelog.example.com` |
| `SITE_URL` | Public HTTPS URL (derives CSRF and frontend origins) | `https://adventurelog.example.com` |
See [Environment Variables](../configuration/environment_variables.md) for the full list.
## Getting started
```bash
wget https://raw.githubusercontent.com/seanmorley15/AdventureLog/main/docker/docker-compose.traefik.yaml
wget https://raw.githubusercontent.com/seanmorley15/AdventureLog/main/.env.advanced.example
cp .env.advanced.example .env.advanced
# Edit .env: set SITE_URL, ACME_EMAIL, TRAEFIK_DOMAIN, POSTGRES_PASSWORD, SECRET_KEY
bash scripts/validate-env.sh
docker compose -f docker/docker-compose.traefik.yaml up -d
```
## Routing overview
Traefik routes traffic to two containers on a single domain:
| Path prefix | Service |
| ----------- | ------- |
| `/`, `/api`, `/auth`, app pages | Frontend (SvelteKit) |
| `/media`, `/admin`, `/accounts`, `/static` | Backend (Django/Gunicorn) |
This matches the internal routing model used by [Standard Deployment](standard.md), but with separate frontend and backend services.
## Related guides
- [Advanced Deployment](docker.md) — base configuration without Traefik
- [Environment Variables](../configuration/environment_variables.md) — URL and CSRF settings
- [Nginx Proxy Manager](nginx_proxy_manager.md) — alternative reverse proxy