version: '3.8' services: # OpenVidu Meet Backend openvidu-meet: build: . container_name: openvidu-meet restart: unless-stopped environment: # Configuración básica NODE_ENV: production MEET_LOG_LEVEL: info MEET_BLOB_STORAGE_MODE: memory PORT: 6080 # Admin user (cambiar en producción) MEET_INITIAL_ADMIN_USER: admin MEET_INITIAL_ADMIN_PASSWORD: ${ADMIN_PASSWORD:-admin123} # CORS para proxy SERVER_CORS_ORIGIN: "*" # Configuración para proxy TRUST_PROXY: "true" # LiveKit (ajustar según tu setup) LIVEKIT_URL: ${LIVEKIT_URL:-ws://localhost:7880} LIVEKIT_API_KEY: ${LIVEKIT_API_KEY:-devkey} LIVEKIT_API_SECRET: ${LIVEKIT_API_SECRET:-your-secret-key-32-chars-long} # Redis (opcional - si no se proporciona, usa memoria) MEET_REDIS_HOST: ${REDIS_HOST:-} MEET_REDIS_PORT: ${REDIS_PORT:-6379} MEET_REDIS_PASSWORD: ${REDIS_PASSWORD:-} ports: - "6080:6080" volumes: # Logs persistentes - ./logs:/app/logs healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:6080/"] interval: 30s timeout: 10s retries: 3 start_period: 60s networks: - openvidu-network # Nginx Proxy - Solo puerto 80 para EasyPanel nginx-proxy: image: nginx:alpine container_name: openvidu-nginx restart: unless-stopped ports: - "80:80" # Solo HTTP - EasyPanel maneja SSL con Traefik volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - nginx-cache:/var/cache/nginx depends_on: - openvidu-meet networks: - openvidu-network volumes: nginx-cache: networks: openvidu-network: driver: bridge