services: postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER:-omnex} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-omnex} POSTGRES_DB: ${POSTGRES_DB:-omnex} volumes: - pgdata:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-omnex} -d ${POSTGRES_DB:-omnex}"] interval: 5s timeout: 3s retries: 10 redis: image: redis:7-alpine restart: unless-stopped command: ["redis-server", "--requirepass", "${REDIS_PASSWORD:-omnexredis}", "--maxmemory", "256mb", "--maxmemory-policy", "allkeys-lru"] volumes: - redisdata:/data healthcheck: test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-omnexredis}", "ping"] interval: 5s timeout: 3s retries: 10 web: image: xor1234/omnex-web:latest restart: unless-stopped depends_on: api: condition: service_healthy waf: image: xor1234/omnex-waf:latest restart: unless-stopped environment: - DISABLE_MODSEC_ENV_SUBST=true - PARANOIA=2 - ANOMALY_INBOUND=5 - ANOMALY_OUTBOUND=4 - MODSEC_AUDIT_LOG=/var/log/modsec/modsec_audit.log volumes: - ./nginx/certs:/etc/nginx/certs:ro - /var/log/waf/nginx:/var/log/nginx - /var/log/waf/modsec:/var/log/modsec ports: - "80:80" - "443:443" depends_on: - web - api api: image: xor1234/omnex-api:latest restart: unless-stopped depends_on: postgres: condition: service_healthy redis: condition: service_healthy environment: OMNEX_ENV: ${OMNEX_ENV:-dev} OMNEX_ADDR: ":8080" OMNEX_JWT_SECRET: ${OMNEX_JWT_SECRET} OMNEX_ALLOWED_ORIGINS: ${OMNEX_ALLOWED_ORIGINS:-http://localhost:3000,http://localhost:5173} OMNEX_DATABASE_URL: "host=postgres user=${POSTGRES_USER:-omnex} password=${POSTGRES_PASSWORD:-omnex} dbname=${POSTGRES_DB:-omnex} port=5432 sslmode=disable" OMNEX_REDIS_URL: "redis://:${REDIS_PASSWORD:-omnexredis}@redis:6379/0" OMNEX_SEED_USERNAME: ${OMNEX_SEED_USERNAME:-admin} OMNEX_SEED_PASSWORD: ${OMNEX_SEED_PASSWORD} OMNEX_DEMO_DOMAIN: ${OMNEX_DEMO_DOMAIN:-192.168.1.31.nip.io} OMNEX_DEMO_HTTPS_PORT: ${OMNEX_DEMO_HTTPS_PORT:-443} FRONTEND_IMAGE_APP: ${FRONTEND_IMAGE_APP:-xor1234/frontend-mln:helm} BACKEND_IMAGE_APP: ${BACKEND_IMAGE_APP:-xor1234/backend-mln:helm} LBTELEGRAM_IMAGE_APP: ${LBTELEGRAM_IMAGE_APP:-xor1234/lbtelegram:helm} KUBECONFIG: /kubeconfig/config OMNEX_APP_DOWNLOADS_DIR: /app-downloads volumes: - ../deploy/chart-gestion:/charts:ro - ${KUBECONFIG_HOST_PATH:-/home/xor_fakers/.kube/config}:/kubeconfig/config:ro # Dossier où déposer manuellement les .apk (Admin Panel / Client) à # rendre téléchargeables aux clients ayant une démo ou un abonnement # actif — voir control-plane/api/internal/downloads. - ../app:/app-downloads:ro healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/healthz"] interval: 5s timeout: 3s retries: 10 start_period: 330s volumes: pgdata: redisdata: