services: caddy-proxy: image: docker.io/openvidu/openvidu-caddy-local:3.6.0 container_name: caddy-proxy restart: unless-stopped extra_hosts: - host.docker.internal:host-gateway environment: - LAN_DOMAIN=${LAN_DOMAIN:-} - LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-} - LAN_MODE=${LAN_MODE:-false} - USE_HTTPS=${USE_HTTPS:-false} - LIVEKIT_API_KEY=${LIVEKIT_API_KEY:-} - LIVEKIT_API_SECRET=${LIVEKIT_API_SECRET:-} - DASHBOARD_ADMIN_USERNAME=${DASHBOARD_ADMIN_USERNAME:-} - DASHBOARD_ADMIN_PASSWORD=${DASHBOARD_ADMIN_PASSWORD:-} - MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY:-} - MINIO_SECRET_KEY=${MINIO_SECRET_KEY:-} - MEET_BASE_PATH=${MEET_BASE_PATH:-/meet} env_file: - ./meet.env volumes: - ./custom-layout:/var/www/custom-layout - /etc/localtime:/etc/localtime:ro ports: - 5443:5443 - 6443:6443 - 7443:7443 - 7880:7880 - 9443:9443 - 9080:9080 depends_on: setup: condition: service_completed_successfully redis: image: docker.io/redis:8.6.1-alpine container_name: redis restart: unless-stopped ports: - 6379:6379 volumes: - redis:/data - /etc/localtime:/etc/localtime:ro command: > redis-server --bind 0.0.0.0 --requirepass ${REDIS_PASSWORD:-} depends_on: setup: condition: service_completed_successfully minio: image: docker.io/openvidu/minio:2025.10.15-debian-12-r9 container_name: minio restart: unless-stopped ports: - 9000:9000 environment: - MINIO_ROOT_USER=${MINIO_ACCESS_KEY:-} - MINIO_ROOT_PASSWORD=${MINIO_SECRET_KEY:-} - MINIO_DEFAULT_BUCKETS=openvidu-appdata - MINIO_CONSOLE_SUBPATH=/minio-console - MINIO_BROWSER=on - MINIO_BROWSER_REDIRECT_URL=http://localhost:7880/minio-console volumes: - minio-data:/bitnami/minio/data - minio-certs:/certs - /etc/localtime:/etc/localtime:ro depends_on: setup: condition: service_completed_successfully mongo: image: docker.io/openvidu/mongodb:8.0.19-r1 container_name: mongo restart: unless-stopped ports: - 27017:27017 volumes: - mongo-data:/bitnami/mongodb - /etc/localtime:/etc/localtime:ro environment: - MONGODB_ROOT_USER=${MONGO_ADMIN_USERNAME:-} - MONGODB_ROOT_PASSWORD=${MONGO_ADMIN_PASSWORD:-} - MONGODB_ADVERTISED_HOSTNAME=mongo - MONGODB_REPLICA_SET_MODE=primary - MONGODB_REPLICA_SET_NAME=rs0 - MONGODB_REPLICA_SET_KEY=devreplicasetkey depends_on: setup: condition: service_completed_successfully dashboard: image: docker.io/openvidu/openvidu-dashboard:3.6.0 container_name: dashboard restart: unless-stopped environment: - SERVER_PORT=5000 - ADMIN_USERNAME=${DASHBOARD_ADMIN_USERNAME:-} - ADMIN_PASSWORD=${DASHBOARD_ADMIN_PASSWORD:-} - DATABASE_URL=mongodb://${MONGO_ADMIN_USERNAME}:${MONGO_ADMIN_PASSWORD}@mongo:27017/?replicaSet=rs0&readPreference=primaryPreferred volumes: - /etc/localtime:/etc/localtime:ro depends_on: setup: condition: service_completed_successfully openvidu: image: docker.io/openvidu/openvidu-server:3.6.0 restart: unless-stopped container_name: openvidu extra_hosts: - host.docker.internal:host-gateway environment: - LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-} - LAN_MODE=${LAN_MODE:-false} ports: - 3478:3478/udp - 7881:7881/tcp - 7900-7999:7900-7999/udp entrypoint: /bin/sh /scripts/entrypoint.sh command: --config /etc/livekit.yaml volumes: - ./livekit.yaml:/etc/livekit.yaml - ./scripts/entrypoint_openvidu.sh:/scripts/entrypoint.sh - /etc/localtime:/etc/localtime:ro depends_on: setup: condition: service_completed_successfully ingress: image: docker.io/openvidu/ingress:3.6.0 container_name: ingress restart: unless-stopped extra_hosts: - host.docker.internal:host-gateway ports: - 1935:1935 - 8085:8085 - 7895:7895/udp environment: - INGRESS_CONFIG_FILE=/etc/ingress.yaml volumes: - ./ingress.yaml:/etc/ingress.yaml - /etc/localtime:/etc/localtime:ro depends_on: setup: condition: service_completed_successfully egress: image: docker.io/openvidu/egress:3.6.0 restart: unless-stopped container_name: egress extra_hosts: - host.docker.internal:host-gateway environment: - EGRESS_CONFIG_FILE=/etc/egress.yaml volumes: - ./egress.yaml:/etc/egress.yaml - egress-data:/home/egress/tmp - /etc/localtime:/etc/localtime:ro depends_on: setup: condition: service_completed_successfully openvidu-meet: image: docker.io/openvidu/openvidu-meet:3.6.0 container_name: openvidu-meet restart: on-failure extra_hosts: - host.docker.internal:host-gateway environment: - USE_HTTPS=${USE_HTTPS:-false} - LAN_MODE=${LAN_MODE:-false} - LAN_DOMAIN=${LAN_DOMAIN:-} - LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-} - LIVEKIT_API_KEY=${LIVEKIT_API_KEY} - LIVEKIT_API_SECRET=${LIVEKIT_API_SECRET} - MEET_S3_ACCESS_KEY=${MINIO_ACCESS_KEY} - MEET_S3_SECRET_KEY=${MINIO_SECRET_KEY} - MEET_REDIS_PASSWORD=${REDIS_PASSWORD:-} - MEET_MONGO_URI=mongodb://${MONGO_ADMIN_USERNAME}:${MONGO_ADMIN_PASSWORD}@mongo:27017/?replicaSet=rs0&readPreference=primaryPreferred - MEET_BASE_PATH=${MEET_BASE_PATH:-/meet} - MEET_CONFIG_DIR=/config/meet.env volumes: - ./meet.env:/config/meet.env - ./scripts/entrypoint_openvidu_meet.sh:/scripts/entrypoint.sh - ./scripts/utils.sh:/scripts/utils.sh - /etc/localtime:/etc/localtime:ro entrypoint: /bin/sh /scripts/entrypoint.sh depends_on: setup: condition: service_completed_successfully operator: image: docker.io/openvidu/openvidu-operator:3.6.0 container_name: operator restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock - agents-config:/agents-config - ./:/deployment - /etc/localtime:/etc/localtime:ro environment: - MODE=agent-manager-local - DEPLOYMENT_FILES_DIR=/deployment - AGENTS_CONFIG_DIR=/agents-config - NETWORK_NAME=openvidu-community - AGENTS_CONFIG_VOLUME=openvidu-agents-config - LIVEKIT_URL=ws://openvidu:7880/ - LIVEKIT_API_KEY=${LIVEKIT_API_KEY:-} - LIVEKIT_API_SECRET=${LIVEKIT_API_SECRET:-} - REDIS_ADDRESS=redis:6379 - REDIS_PASSWORD=${REDIS_PASSWORD:-} depends_on: setup: condition: service_completed_successfully ready-check: image: docker.io/openvidu/openvidu-operator:3.6.0 container_name: ready-check restart: on-failure volumes: - /etc/localtime:/etc/localtime:ro environment: - MODE=local-ready-check - OPENVIDU_ENVIRONMENT=local-platform - USE_HTTPS=${USE_HTTPS:-false} - LAN_DOMAIN=${LAN_DOMAIN:-} - LAN_MODE=${LAN_MODE:-false} - LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-} - DASHBOARD_ADMIN_USERNAME=${DASHBOARD_ADMIN_USERNAME:-} - DASHBOARD_ADMIN_PASSWORD=${DASHBOARD_ADMIN_PASSWORD:-} - MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY:-} - MINIO_SECRET_KEY=${MINIO_SECRET_KEY:-} - LIVEKIT_API_KEY=${LIVEKIT_API_KEY:-} - LIVEKIT_API_SECRET=${LIVEKIT_API_SECRET:-} env_file: - ./meet.env depends_on: - openvidu - ingress - egress - dashboard - minio - mongo setup: image: docker.io/busybox:1.37.0 container_name: setup restart: "no" volumes: - minio-data:/minio - mongo-data:/mongo - egress-data:/egress - ./scripts/setup.sh:/scripts/setup.sh - /etc/localtime:/etc/localtime:ro environment: - USE_HTTPS=${USE_HTTPS:-false} - LAN_MODE=${LAN_MODE:-false} - LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-} - RUN_WITH_SCRIPT=${RUN_WITH_SCRIPT:-false} user: root command: /bin/sh /scripts/setup.sh volumes: agents-config: name: openvidu-agents-config minio-certs: name: openvidu-minio-certs mongodb-config: name: openvidu-mongodb-config redis: name: openvidu-redis minio-data: name: openvidu-minio-data mongo-data: name: openvidu-mongo-data egress-data: name: openvidu-egress-data networks: default: name: openvidu-community