services: db: image: postgres:15-alpine container_name: vortex-db restart: always environment: POSTGRES_USER: ${POSTGRES_USER:-vortex} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-vortex_pass} POSTGRES_DB: ${POSTGRES_DB:-vortex_db} volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" server: build: context: . dockerfile: Dockerfile.server container_name: vortex-server restart: always environment: DATABASE_URL: ${DATABASE_URL:-postgresql://${POSTGRES_USER:-vortex}:${POSTGRES_PASSWORD:-vortex_pass}@db:5432/${POSTGRES_DB:-vortex_db}} PORT: 3001 JWT_SECRET: ${JWT_SECRET:-your-secure-random-secret-key-here} CORS_ORIGINS: ${CORS_ORIGINS:-http://localhost,http://localhost:80,http://localhost:9090,http://localhost:5173} ENCRYPTION_KEY: ${ENCRYPTION_KEY:-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef} TURN_URL: ${TURN_URL:-turn:${DOMAIN:-mess.khomegeneric.keenetic.pro}:3478} TURN_SECRET: ${TURN_SECRET:-dcf1c1827c0c520d45130e282ea26991} depends_on: - db ports: - "3001:3001" volumes: - ./apps/server/uploads:/app/apps/server/uploads web: build: context: . dockerfile: Dockerfile.web container_name: vortex-web restart: always ports: - "9090:80" depends_on: - server turn: image: coturn/coturn container_name: vortex-turn restart: always ports: - "3478:3478" - "3478:3478/udp" - "49152-49170:49152-49170/udp" environment: - DETECT_EXTERNAL_IP=yes command: - -n - --log-file=stdout - --min-port=49152 - --max-port=49170 - --realm=${DOMAIN:-mess.khomegeneric.keenetic.pro} - --static-auth-secret=${TURN_SECRET:-dcf1c1827c0c520d45130e282ea26991} - --no-tls - --no-dtls volumes: postgres_data: