Files
home-gateway/docker-compose.yml
T
Hyungi Ahn ff1d6223cf fix(caddy): route upstreams over docker networks
- replace host.docker.internal upstreams for document and komga
- attach home-caddy to document-server and komga docker networks
- avoid host-published port dependency and docker0 path
2026-05-08 04:08:20 +00:00

112 lines
2.7 KiB
YAML

services:
# ============================================================
# Edge Layer — Reverse Proxy + Security + DDNS
# ============================================================
home-caddy:
image: caddy:2-alpine
container_name: home-caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy/logs:/var/log/caddy
- caddy_data:/data
- caddy_config:/config
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
gpu-hub-api:
condition: service_healthy
networks:
- gateway-net
- komga_default
- hyungi_document_server_default
home-fail2ban:
image: crazymax/fail2ban:latest
container_name: home-fail2ban
restart: unless-stopped
network_mode: host
cap_add:
- NET_ADMIN
- NET_RAW
volumes:
- ./fail2ban/data:/data
- ./caddy/logs:/var/log/caddy:ro
- ./fail2ban/jail.local:/etc/fail2ban/jail.local:ro
environment:
- TZ=Asia/Seoul
- F2B_LOG_LEVEL=INFO
home-ddns-vpn:
image: oznu/cloudflare-ddns:latest
container_name: home-ddns-vpn
restart: unless-stopped
env_file:
- ./ddns/.env
environment:
- ZONE=hyungi.net
- SUBDOMAIN=vpn
- PROXIED=false
home-ddns-mail:
image: oznu/cloudflare-ddns:latest
container_name: home-ddns-mail
restart: unless-stopped
env_file:
- ./ddns/.env
environment:
- ZONE=hyungi.net
- SUBDOMAIN=mail
- PROXIED=false
# ============================================================
# GPU Hub — AI Backend Router + Web UI
# ============================================================
gpu-hub-api:
build: ./hub-api
container_name: gpu-hub-api
restart: unless-stopped
environment:
- OWNER_PASSWORD=${OWNER_PASSWORD}
- GUEST_PASSWORD=${GUEST_PASSWORD}
- JWT_SECRET=${JWT_SECRET}
- BACKENDS_CONFIG=/app/config/backends.json
- CORS_ORIGINS=${CORS_ORIGINS:-http://localhost:5173}
- DB_PATH=/app/data/gateway.db
volumes:
- hub_data:/app/data
- ./backends.json:/app/config/backends.json:ro
extra_hosts:
- "host.docker.internal:host-gateway"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 15s
timeout: 5s
retries: 3
networks:
- gateway-net
gpu-hub-web:
build: ./hub-web
container_name: gpu-hub-web
restart: unless-stopped
networks:
- gateway-net
volumes:
caddy_data:
caddy_config:
hub_data:
networks:
gateway-net:
name: home-gateway-network
komga_default:
external: true
hyungi_document_server_default:
external: true