Deployment using Docker

Is this reliable by running the beta version in server. Also we have tried using nginx as proxy instead of caddy. I have did some changes in the compose files, like each services I have ran one by one as per the order.

Now except egress I am able to run all other services.

egress is throwing below error

**+ rm -rf '/home/egress/tmp/*'**
**+ rm -rf /var/run/pulse /var/lib/pulse /home/egress/.config/pulse /home/egress/.cache/xdgr/pulse**
**+ pulseaudio -D --verbose --exit-idle-time=-1 --disallow-exit**
**E: [pulseaudio] main.c: Daemon startup failed.**

This is my docker-compose.yaml which is customized.

services:
  mongo:
    image: docker.io/mongo:7.0.11
    container_name: mongo
    network_mode: host
    restart: always
    environment:
      - MONGO_INITDB_ROOT_USERNAME=mongoadmin
      - MONGO_INITDB_ROOT_PASSWORD=mongoadmin
    volumes:
      - ./data/mongo_data/data:/data/db   
    command: "mongod --bind_ip_all --port 20000"
    logging:
      options:
        max-size: "${DOCKER_LOGS_MAX_SIZE:-200M}"
    labels:
      - logging=true

  minio:
    image: docker.io/bitnami/minio:2024.6.13
    container_name: minio
    network_mode: host
    restart: unless-stopped
    environment:
      - MINIO_ROOT_USER=minioadmin
      - MINIO_ROOT_PASSWORD=minioadmin
      - MINIO_CONSOLE_SUBPATH=/minio-console
      - MINIO_BROWSER_REDIRECT_URL=https://openvidu.test.com/minio-console/
      - MINIO_DEFAULT_BUCKETS=openvidu
      - MINIO_API_PORT_NUMBER=9100
      - MINIO_CONSOLE_PORT_NUMBER=9101
    volumes:
      - ./data/minio_data/data:/bitnami/minio/data
    logging:
      options:
        max-size: "${DOCKER_LOGS_MAX_SIZE:-200M}"
    labels:
      - logging=true

  redis:
    image: docker.io/redis:7.2.5-alpine
    container_name: redis
    network_mode: host
    restart: unless-stopped
    command: >
      redis-server
      --bind 0.0.0.0
      --port 7000
      --requirepass redispassword
    logging:
      options:
        max-size: "${DOCKER_LOGS_MAX_SIZE:-200M}"
    labels:
      - logging=true


  egress:
    image: docker.io/livekit/egress:v1.8.2
    restart: unless-stopped
    container_name: egress
    environment:
      - EGRESS_CONFIG_FILE=/etc/egress.yaml
    network_mode: "host"
    volumes:
      - ./config/egress.yaml:/etc/egress.yaml
      - ./data/egress_data/home/egress:/home/egress/
    logging:
      options:
        max-size: "${DOCKER_LOGS_MAX_SIZE:-200M}"
    labels:
      - logging=true

  dashboard:
    image: docker.io/openvidu/openvidu-dashboard:3.0.0-beta2
    container_name: dashboard
    network_mode: host
    restart: unless-stopped
    environment:
      - SERVER_PORT=5000
      - ADMIN_USERNAME=admin
      - ADMIN_PASSWORD=admin
      - DATABASE_URL=mongodb://mongoadmin:mongoadmin@localhost:20000
    logging:
      options:
        max-size: "${DOCKER_LOGS_MAX_SIZE:-200M}"
    labels:
      - logging=true

  minio:
    image: docker.io/bitnami/minio:2024.6.13
    container_name: minio
    network_mode: host
    restart: unless-stopped
    environment:
      - MINIO_ROOT_USER=minioadmin
      - MINIO_ROOT_PASSWORD=minioadmin
      - MINIO_CONSOLE_SUBPATH=/minio-console
      - MINIO_BROWSER_REDIRECT_URL=https://openvidu.test.com/minio-console/
      - MINIO_DEFAULT_BUCKETS=openvidu
      - MINIO_API_PORT_NUMBER=9100
      - MINIO_CONSOLE_PORT_NUMBER=9101
    volumes:
      - ./data/minio_data/data:/bitnami/minio/data
    logging:
      options:
        max-size: "${DOCKER_LOGS_MAX_SIZE:-200M}"
    labels:
      - logging=true


  # Observability stack
  prometheus:
    image: docker.io/prom/prometheus:v2.50.1
    profiles:
      - observability
    restart: unless-stopped
    container_name: prometheus
    command:
      - --config.file=/etc/prometheus/prometheus.yaml
      - --storage.tsdb.retention.time=32d
    network_mode: host
    volumes:
      - ./config/prometheus.yaml:/etc/prometheus/prometheus.yaml
      - ./data/prometheus_data/prometheus:/prometheus

  promtail:
    image: docker.io/grafana/promtail:2.8.9
    profiles:
      - observability
    restart: unless-stopped
    container_name: promtail
    command: -config.file=/etc/promtail/promtail.yaml
    network_mode: host
    volumes:
      - /var/lib/docker/containers:/var/lib/docker/containers:ro
      - /var/run/docker.sock:/var/run/docker.sock
      - ./config/promtail.yaml:/etc/promtail/promtail.yaml

  loki:
    image: docker.io/grafana/loki:2.8.9
    profiles:
      - observability
    restart: unless-stopped
    container_name: loki
    command: -config.file=/etc/loki/loki.yaml
    network_mode: host
    volumes:
      - ./config/loki.yaml:/etc/loki/loki.yaml
      - ./data/loki_data/data:/loki

  grafana:
    image: docker.io/grafana/grafana:10.3.3
    profiles:
      - observability
    restart: unless-stopped
    container_name: grafana
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=password
      - GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH=/etc/grafana/provisioning/dashboards/openvidu_metrics.json
      - GF_SERVER_ROOT_URL=https://openvidu.test.com/grafana/
      - GF_SERVER_SERVE_FROM_SUB_PATH=true
    network_mode: host
    volumes:
      - ./data/grafana_data/data:/var/lib/grafana
      - ./config/grafana_config:/etc/grafana/provisioning

  ingress:
    image: docker.io/livekit/ingress:v1.2.0
    restart: unless-stopped
    container_name: ingress
    environment:
      - INGRESS_CONFIG_FILE=/etc/ingress.yaml
    network_mode: host
    volumes:
      - ./config/ingress.yaml:/etc/ingress.yaml
    logging:
      options:
        max-size: "${DOCKER_LOGS_MAX_SIZE:-200M}"
    labels:
      - logging=true


  openvidu:
    image: docker.io/openvidu/openvidu-server:3.0.0-beta2
    restart: unless-stopped
    container_name: openvidu
    command: --config /etc/livekit.yaml
    network_mode: host
    volumes:
      - ./config/livekit.yaml:/etc/livekit.yaml
    logging:
      options:
        max-size: "${DOCKER_LOGS_MAX_SIZE:-200M}"
    labels:
      - logging=true


  nginx:
    image: nginx:latest
    container_name: nginx-proxy
    network_mode: host
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./owncert:/etc/nginx/certs

nginx.conf

worker_processes 1;

events {
    worker_connections 1024;
}
http {
    # React application server block
    server {
        listen          443 ssl;
        server_name     openvidu.test.com;
        ssl_certificate /etc/nginx/certs/openvidu.test.com.cert;
        ssl_certificate_key /etc/nginx/certs/openvidu.test.com.key;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;

        # Proxy WebSocket connections for OpenVidu
        location / {
            proxy_pass http://localhost:7880;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }

        # Minio console
        location /minio-console {
            proxy_pass http://localhost:9101;
            proxy_set_header Host $host;
        }

        # Grafana
        location /grafana {
            proxy_pass http://localhost:3000;
            proxy_set_header Host $host;
        }


        # WHIP service proxy
        location /whip {
            proxy_pass http://localhost:8080;
            proxy_set_header Host $host;
        }

        # Dashboard
        location /dashboard {
            proxy_pass http://localhost:5000;
            proxy_set_header Host $host;
        }

        # Health check
        location /health/caddy {
            return 200 "OK";
        }
    }

    # RTMP Proxying
    server {
        listen 1935;
        server_name openvidu.test.com;

        location / {
            proxy_pass http://localhost:1945;
            proxy_set_header Host $host;
        }
    }

    # Minio Proxy
    server {
        listen 9000;
        server_name openvidu.test.com;

        location / {
            proxy_pass http://localhost:9100;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}