feat: add reverse proxy traefik

This commit is contained in:
Alexis Fourmaux 2026-05-30 18:02:32 +02:00
parent 300c8a370c
commit 048b64f035
2 changed files with 57 additions and 9 deletions

View file

@ -14,23 +14,33 @@ services:
image: simugaz/backend:latest
command: api.py
restart: unless-stopped
ports:
- 8000:8000
networks:
- public
- traefik
- database
env_file: env_files/api.env
labels:
- traefik.enable=true
- traefik.http.services.homer.loadbalancer.server.port=8000
- traefik.http.routers.homer-https.rule=Host(`api.agreg.ungol.fr`)
- traefik.http.routers.homer-https.entrypoints=websecure
- traefik.http.routers.homer-https.tls=true
- traefik.http.routers.homer-https.tls.certresolver=letsencrypt
webui:
build: ./frontend
image: simugaz/frontend:latest
restart: unless-stopped
ports:
- 3000:80
networks:
- public
- traefik
depends_on:
- api
labels:
- traefik.enable=true
- traefik.http.services.homer.loadbalancer.server.port=80
- traefik.http.routers.homer-https.rule=Host(`demo.agreg.ungol.fr`)
- traefik.http.routers.homer-https.entrypoints=websecure
- traefik.http.routers.homer-https.tls=true
- traefik.http.routers.homer-https.tls.certresolver=letsencrypt
db:
image: postgres:18-alpine
@ -55,7 +65,43 @@ services:
- ./servers.json:/pgadmin4/servers.json
env_file: env_files/pgadmin.env
traefik:
image: traefik:3
command:
- "--api=false"
- "--api.dashboard=false"
- "--api.insecure=false"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.network=traefik_public"
- "--providers.file=true"
- "--providers.file.directory=/rules"
- "--providers.file.watch=true"
- "--entryPoints.web.address=:80"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
- "--entryPoints.websecure.address=:443"
- "--entrypoints.websecure.http3={}"
- "--certificatesresolvers.letsencrypt.acme.dnschallenge=true"
- "--certificatesresolvers.letsencrypt.acme.dnschallenge.provider=ovh"
- "--certificatesresolvers.letsencrypt.acme.dnschallenge.delayBeforeCheck=0"
- "--certificatesresolvers.letsencrypt.acme.caserver=https://acme-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.letsencrypt.acme.email="
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
env_file: env_files/traefik.env
networks:
- traefik
- public
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./config/rules:/rules:ro
- certificates:/letsencrypt:rw
volumes:
certificates:
db:
networks:
@ -64,3 +110,5 @@ networks:
internal: true
lora-gateway_mqtt:
external: true
traefik:
internal: true

View file

@ -1,4 +1,4 @@
const API_BASE = 'http://192.168.1.195:8000'
const API_BASE = 'https://api.agreg.ungol.fr'
async function fetchConsumption({device_eui, start, end, granularity }) {