# ProxmoxPanel — Docker Compose # Démarrage : docker-compose up --build # Accès : http://localhost (port 80) ou https://panel.geronzi.fr via Traefik services: # ── Backend Go (API + WebSocket) ──────────────────────────────────────── backend: build: context: .. dockerfile: core/backend/Dockerfile container_name: proxmoxpanel-backend restart: unless-stopped expose: - "3001" volumes: # Volume persistant pour SQLite, clés JWT, clé maître AES - panel-data:/app/data environment: - DATA_DIR=/app/data - LISTEN_ADDR=:3001 - APP_ENV=production # Pas de réseau host — le container reste isolé # Les connexions SSH sortantes vers le host Proxmox sont autorisées via le réseau Docker networks: - proxmoxpanel-net # Limite de ressources recommandées deploy: resources: limits: memory: 256M cpus: "1.0" healthcheck: test: ["CMD", "wget", "-qO-", "http://localhost:3001/api/health"] interval: 30s timeout: 5s retries: 3 start_period: 10s # ── Frontend Vue 3 (Nginx + assets statiques) ─────────────────────────── frontend: build: context: ./frontend dockerfile: Dockerfile container_name: proxmoxpanel-frontend restart: unless-stopped ports: # En développement local : http://localhost:80 # En production : Traefik se charge du port 443 → ce port est juste pour accès direct - "80:80" depends_on: backend: condition: service_healthy networks: - proxmoxpanel-net deploy: resources: limits: memory: 64M cpus: "0.5" # ── Volumes ──────────────────────────────────────────────────────────────── volumes: # Données persistantes : SQLite + clés cryptographiques # NE PAS supprimer ce volume sans sauvegarder panel.db au préalable panel-data: name: proxmoxpanel-data # ── Réseaux ──────────────────────────────────────────────────────────────── networks: proxmoxpanel-net: name: proxmoxpanel-net driver: bridge