Files
voyage/docker-compose-traefik.yaml
alex d32fcb6fed chore: complete rebranding from seanmorley15 to Alex-Wiesner/voyage
Replace all seanmorley15/Voyage repo URLs, ghcr.io/seanmorley15 container
image references, seanmorley.com/sponsor and buymeacoffee links with
the new repo (github.com/Alex-Wiesner/voyage) and new GHCR images
(ghcr.io/alex-wiesner/voyage-*). Attribution to original AdventureLog
author Sean Morley is preserved.
2026-03-06 14:25:16 +00:00

79 lines
3.0 KiB
YAML

version: "3.9"
services:
traefik:
image: traefik:v2.11
command:
- "--api.insecure=true" # Enable Traefik dashboard (remove in production)
- "--providers.docker=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.letsencrypt.acme.email=your-email@example.com" # Replace with your email
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "traefik-letsencrypt:/letsencrypt"
labels:
- "traefik.enable=true"
db:
image: postgis/postgis:15-3.3
restart: unless-stopped
environment:
POSTGRES_DB: database
POSTGRES_USER: adventure
POSTGRES_PASSWORD: your_postgres_password # Replace with the actual password
volumes:
- postgres-data:/var/lib/postgresql/data/
web:
image: ghcr.io/alex-wiesner/voyage-frontend:latest
restart: unless-stopped
environment:
PUBLIC_SERVER_URL: "http://server:8000"
BODY_SIZE_LIMIT: "100000"
labels:
- "traefik.enable=true"
- "traefik.http.routers.voyageweb.entrypoints=websecure"
- "traefik.http.routers.voyageweb.rule=Host(`yourdomain.com`) && !(PathPrefix(`/media`) || PathPrefix(`/admin`) || PathPrefix(`/static`) || PathPrefix(`/accounts`))" # Replace with your domain
- "traefik.http.routers.voyageweb.tls=true"
- "traefik.http.routers.voyageweb.tls.certresolver=letsencrypt"
depends_on:
- server
server:
image: ghcr.io/alex-wiesner/voyage-backend:latest
restart: unless-stopped
environment:
PGHOST: "db"
PGDATABASE: "database"
PGUSER: "adventure"
PGPASSWORD: your_postgres_password # Replace with the actual password
SECRET_KEY: your_secret_key # Replace with the actual secret key
DJANGO_ADMIN_USERNAME: "admin"
DJANGO_ADMIN_PASSWORD: your_admin_password # Replace with the actual admin password
DJANGO_ADMIN_EMAIL: "voyage-admin@yourdomain.com" # Replace with your email
PUBLIC_URL: "https://yourdomain.com" # Replace with your domain
CSRF_TRUSTED_ORIGINS: "https://yourdomain.com" # Replace with your domain
DEBUG: "false"
FRONTEND_URL: "https://yourdomain.com" # Replace with your domain
volumes:
- voyage-media:/code/media
labels:
- "traefik.enable=true"
- "traefik.http.routers.voyageserver.entrypoints=websecure"
- "traefik.http.routers.voyageserver.rule=Host(`yourdomain.com`) && (PathPrefix(`/media`) || PathPrefix(`/admin`) || PathPrefix(`/static`) || PathPrefix(`/accounts`))" # Replace with your domain
- "traefik.http.routers.voyageserver.tls=true"
- "traefik.http.routers.voyageserver.tls.certresolver=letsencrypt"
depends_on:
- db
volumes:
postgres-data:
voyage-media:
traefik-letsencrypt: