97 lines
3.2 KiB
YAML
97 lines
3.2 KiB
YAML
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:
|