services: # Django - Web framework feedvault: container_name: feedvault image: ghcr.io/thelovinator1/feedvault:latest user: "1000:1000" restart: always networks: - feedvault_db - feedvault_web environment: - SECRET_KEY=${SECRET_KEY} - DEBUG=${DEBUG} - EMAIL_HOST_USER=${EMAIL_HOST_USER} - EMAIL_HOST_PASSWORD=${EMAIL_HOST_PASSWORD} - DISCORD_WEBHOOK_URL=${DISCORD_WEBHOOK_URL} - DB_NAME=feedvault - DB_HOST=feedvault_postgres - DB_PORT=5432 - DB_USER=feedvault - DB_PASSWORD=${DB_PASSWORD} volumes: - /mnt/Fourteen/Docker/FeedVault/staticfiles:/app/staticfiles - /mnt/Fourteen/Docker/FeedVault/media:/app/media - /mnt/Fourteen/Docker/FeedVault/data:/app/data # Nginx - Reverse proxy web: container_name: feedvault_web image: lscr.io/linuxserver/nginx:latest restart: always environment: - PUID=1000 - PGID=1000 - TZ=Europe/Stockholm expose: - 80 - 443 volumes: - /mnt/Fourteen/Docker/FeedVault/Nginx:/config networks: - feedvault_web - feedvault_tunnel # Postgres - Database postgres: container_name: feedvault_postgres image: postgres:16 user: "1000:1000" ports: - 5432:5432 restart: always environment: - POSTGRES_USER=feedvault - POSTGRES_PASSWORD=${DB_PASSWORD} - POSTGRES_DB=feedvault volumes: - /mnt/Fourteen/Docker/FeedVault/Postgres:/var/lib/postgresql/data networks: - feedvault_db # Cloudflare Tunnel - Securely connect your server to Cloudflare tunnel: container_name: feedvault_tunnel image: cloudflare/cloudflared:latest command: tunnel --no-autoupdate run --token $TUNNEL_TOKEN restart: always networks: - feedvault_tunnel environment: - TUNNEL_URL=http://feedvault_web:80 networks: feedvault_tunnel: driver: bridge feedvault_db: driver: bridge feedvault_web: driver: bridge