metalfrom.eu/apps/web/docker-compose.yml
Nicolas Fryder d4e1bf2e15 chore: initial commit — snapshot VPS 2026-06-27
- apps/api      : API REST Node.js/Fastify + PostgreSQL/PostGIS
- apps/geocoder : Worker Python géocodage Nominatim
- apps/worker   : Scraper Python Metal-Archives
- apps/web      : Frontend statique Leaflet/clustering/heatmap
- infra/        : docker-compose + init.sql

Déployé via Coolify + Traefik sur VPS OVH.
2026-06-27 08:53:39 +00:00

51 lines
1.6 KiB
YAML

services:
bm-web:
image: nginx:alpine
container_name: bm-web
networks:
- stack-vps_admin
volumes:
- ./site:/usr/share/nginx/html:ro
labels:
- traefik.enable=true
- traefik.docker.network=stack-vps_admin
# ✅ règle de matching (OBLIGATOIRE)
- traefik.http.routers.bm-web.rule=Host(`metalfrom.eu`) || Host(`www.metalfrom.eu`)
- traefik.http.routers.bm-web.entrypoints=websecure
- traefik.http.routers.bm-web.tls=true
- traefik.http.routers.bm-web.tls.certresolver=le
# ✅ force cert apex + www
- traefik.http.routers.bm-web.tls.domains[0].main=metalfrom.eu
- traefik.http.routers.bm-web.tls.domains[0].sans=www.metalfrom.eu
- traefik.http.routers.bm-web.service=bm-web
- traefik.http.services.bm-web.loadbalancer.server.port=80
quizz:
image: nginx:alpine
container_name: quizz
networks:
- stack-vps_admin
volumes:
- ./quizz-site:/usr/share/nginx/html:ro
labels:
- traefik.enable=true
- traefik.docker.network=stack-vps_admin
# ✅ règle de matching (OBLIGATOIRE)
- traefik.http.routers.quizz.rule=Host(`quizz.nicolasfryder.ovh`)
- traefik.http.routers.quizz.entrypoints=websecure
- traefik.http.routers.quizz.tls=true
- traefik.http.routers.quizz.tls.certresolver=le
# ✅ force cert apex + www
- traefik.http.routers.quizz.tls.domains[0].main=quizz.nicolasfryder.ovh
- traefik.http.routers.quizz.service=quizz
- traefik.http.services.quizz.loadbalancer.server.port=80
restart: unless-stopped
networks:
stack-vps_admin:
external: true