mirror of https://github.com/OpenVidu/openvidu.git
openvidu-deployment: Add local-meet
parent
8a236e1b67
commit
2e7a85efa9
|
@ -0,0 +1,251 @@
|
||||||
|
services:
|
||||||
|
|
||||||
|
generate-scripts:
|
||||||
|
image: alpine:3.22.1
|
||||||
|
entrypoint: ["/bin/sh", "-c"]
|
||||||
|
restart: "no"
|
||||||
|
user: root
|
||||||
|
volumes:
|
||||||
|
- scripts:/scripts
|
||||||
|
- config:/config
|
||||||
|
command:
|
||||||
|
- |
|
||||||
|
set -e
|
||||||
|
# Check if /scripts and /config are empty, if not, skip script generation
|
||||||
|
if [ "$(ls -A /scripts)" ] && [ "$(ls -A /config)" ]; then
|
||||||
|
echo "/config and /scripts are not empty, skipping script generation."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "Generating scripts..."
|
||||||
|
echo "$${SETUP_SCRIPT}" > /scripts/setup.sh
|
||||||
|
echo "$${UTILS_SCRIPT}" > /scripts/utils.sh
|
||||||
|
echo "$${READY_CHECK_ENTRYPOINT}" > /scripts/entrypoint_ready_check.sh
|
||||||
|
echo "$${CADDY_ENTRYPOINT}" > /scripts/entrypoint_caddy.sh
|
||||||
|
echo "$${OPENVIDU_ENTRYPOINT}" > /scripts/entrypoint_openvidu.sh
|
||||||
|
echo "$${OPENVIDU_MEET_ENTRYPOINT}" > /scripts/entrypoint_openvidu_meet.sh
|
||||||
|
echo "$${OPENVIDU_CONFIG}" > /config/livekit.yaml
|
||||||
|
echo "$${INGRESS_CONFIG}" > /config/ingress.yaml
|
||||||
|
echo "$${EGRESS_CONFIG}" > /config/egress.yaml
|
||||||
|
echo "Generating configuration files..."
|
||||||
|
echo "Setting permissions..."
|
||||||
|
chmod +x /scripts/setup.sh
|
||||||
|
chmod +x /scripts/utils.sh
|
||||||
|
chmod +x /scripts/entrypoint_ready_check.sh
|
||||||
|
chmod +x /scripts/entrypoint_caddy.sh
|
||||||
|
chmod +x /scripts/entrypoint_openvidu.sh
|
||||||
|
chmod +x /scripts/entrypoint_openvidu_meet.sh
|
||||||
|
environment:
|
||||||
|
SETUP_SCRIPT: |
|
||||||
|
#!/bin/sh
|
||||||
|
echo "Setting up directories and permissions..."
|
||||||
|
mkdir -p /minio/data/
|
||||||
|
mkdir -p /mongo/data/
|
||||||
|
mkdir -p /egress/home/egress
|
||||||
|
chown 1001:1001 /minio /minio/data
|
||||||
|
chown 1001:1001 /mongo /mongo/data
|
||||||
|
chown 1001:1001 /egress
|
||||||
|
chown 1001:1001 /egress/home
|
||||||
|
chown 1001:1001 /egress/home/egress
|
||||||
|
echo "Setup complete."
|
||||||
|
UTILS_SCRIPT: |
|
||||||
|
#!/bin/sh
|
||||||
|
LAN_DOMAIN=openvidu-local.dev
|
||||||
|
if [ "$$LAN_PRIVATE_IP" != "" ]; then
|
||||||
|
export USE_HTTPS=true
|
||||||
|
export LAN_MODE=true
|
||||||
|
else
|
||||||
|
export USE_HTTPS=false
|
||||||
|
export LAN_MODE=false
|
||||||
|
fi
|
||||||
|
echo "Using LAN_PRIVATE_IP: $${LAN_PRIVATE_IP:-none}"
|
||||||
|
echo "Using USE_HTTPS: $${USE_HTTPS}"
|
||||||
|
echo "Using LAN_MODE: $${LAN_MODE}"
|
||||||
|
getDeploymentUrl() {
|
||||||
|
schema="$${1:-http}"
|
||||||
|
URL="$$schema://localhost:7880"
|
||||||
|
if [ "$${USE_HTTPS}" = 'true' ]; then
|
||||||
|
URL="$${schema}s://localhost:7443"
|
||||||
|
fi
|
||||||
|
if [ "$${LAN_MODE}" = 'true' ]; then
|
||||||
|
LAN_DOMAIN=$${LAN_DOMAIN:-"openvidu-local.dev"}
|
||||||
|
if [ "$$LAN_PRIVATE_IP" != 'none' ] && [ "$${LAN_DOMAIN}" = 'openvidu-local.dev' ]; then
|
||||||
|
# Replace dots with dashes
|
||||||
|
LAN_DOMAIN="$$(echo "$$LAN_PRIVATE_IP" | sed 's/\./-/g').openvidu-local.dev"
|
||||||
|
fi
|
||||||
|
URL="$${schema}s://$${LAN_DOMAIN}:7443"
|
||||||
|
fi
|
||||||
|
echo "$$URL"
|
||||||
|
}
|
||||||
|
READY_CHECK_ENTRYPOINT: |
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
export LAN_DOMAIN=openvidu-local.dev
|
||||||
|
if [ "$$LAN_PRIVATE_IP" != "" ]; then
|
||||||
|
export USE_HTTPS=true
|
||||||
|
export LAN_MODE=true
|
||||||
|
else
|
||||||
|
export USE_HTTPS=false
|
||||||
|
export LAN_MODE=false
|
||||||
|
fi
|
||||||
|
echo "Using LAN_PRIVATE_IP: $${LAN_PRIVATE_IP:-none}"
|
||||||
|
echo "Using LAN_DOMAIN: $${LAN_DOMAIN}"
|
||||||
|
echo "Using USE_HTTPS: $${USE_HTTPS}"
|
||||||
|
echo "Using LAN_MODE: $${LAN_MODE}"
|
||||||
|
/bin/operator
|
||||||
|
CADDY_ENTRYPOINT: |
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
export LAN_DOMAIN=openvidu-local.dev
|
||||||
|
if [ "$$LAN_PRIVATE_IP" != "" ]; then
|
||||||
|
export USE_HTTPS=true
|
||||||
|
export LAN_MODE=true
|
||||||
|
else
|
||||||
|
export USE_HTTPS=false
|
||||||
|
export LAN_MODE=false
|
||||||
|
fi
|
||||||
|
echo "Using LAN_PRIVATE_IP: $${LAN_PRIVATE_IP:-none}"
|
||||||
|
echo "Using LAN_DOMAIN: $${LAN_DOMAIN}"
|
||||||
|
echo "Using USE_HTTPS: $${USE_HTTPS}"
|
||||||
|
echo "Using LAN_MODE: $${LAN_MODE}"
|
||||||
|
/entrypoint.sh /usr/bin/caddy run --config /config/caddy/Caddyfile
|
||||||
|
OPENVIDU_ENTRYPOINT: |
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
if [ "$$LAN_PRIVATE_IP" != "" ]; then
|
||||||
|
echo "Using as NODE_IP: $$LAN_PRIVATE_IP"
|
||||||
|
export NODE_IP="$$LAN_PRIVATE_IP"
|
||||||
|
fi
|
||||||
|
./livekit-server "$@"
|
||||||
|
OPENVIDU_MEET_ENTRYPOINT: |
|
||||||
|
#!/bin/bash
|
||||||
|
. /scripts/utils.sh
|
||||||
|
|
||||||
|
URL=$(getDeploymentUrl ws)
|
||||||
|
export LIVEKIT_URL="$${URL}"
|
||||||
|
|
||||||
|
/usr/local/bin/entrypoint.sh
|
||||||
|
OPENVIDU_CONFIG: |
|
||||||
|
# OpenVidu configuration
|
||||||
|
openvidu:
|
||||||
|
analytics:
|
||||||
|
enabled: true
|
||||||
|
interval: 10s
|
||||||
|
expiration: 768h # 32 days
|
||||||
|
mongo_url: mongodb://mongoadmin:mongoadmin@mongo:27017/?replicaSet=rs0&readPreference=primaryPreferred
|
||||||
|
|
||||||
|
# LiveKit configuration
|
||||||
|
port: 7880
|
||||||
|
bind_addresses:
|
||||||
|
- ""
|
||||||
|
rtc:
|
||||||
|
tcp_port: 7881
|
||||||
|
port_range_start: 7900
|
||||||
|
port_range_end: 7999
|
||||||
|
redis:
|
||||||
|
address: redis:6379
|
||||||
|
username: ""
|
||||||
|
password: redispassword
|
||||||
|
db: 0
|
||||||
|
use_tls: false
|
||||||
|
turn:
|
||||||
|
enabled: true
|
||||||
|
udp_port: 3478
|
||||||
|
relay_range_start: 40000
|
||||||
|
relay_range_end: 50000
|
||||||
|
keys:
|
||||||
|
devkey: secret
|
||||||
|
webhook:
|
||||||
|
api_key: devkey
|
||||||
|
urls:
|
||||||
|
- http://host.docker.internal:6080/livekit/webhook
|
||||||
|
- http://openvidu-meet:6080/livekit/webhook
|
||||||
|
ingress:
|
||||||
|
rtmp_base_url: rtmp://localhost:1935/rtmp
|
||||||
|
whip_base_url: http://localhost:8085/whip
|
||||||
|
logging:
|
||||||
|
# Logging level for the LiveKit server.
|
||||||
|
# Values: debug, info, warn, error.
|
||||||
|
# Default: info.
|
||||||
|
level: info
|
||||||
|
|
||||||
|
# Logging level for the Pion WebRTC engine.
|
||||||
|
# Values: trace, debug, info, warn, error.
|
||||||
|
# Default: error.
|
||||||
|
pion_level: warn
|
||||||
|
INGRESS_CONFIG: |
|
||||||
|
redis:
|
||||||
|
address: redis:6379
|
||||||
|
username: ""
|
||||||
|
password: redispassword
|
||||||
|
db: 0
|
||||||
|
use_tls: false
|
||||||
|
api_key: devkey
|
||||||
|
api_secret: secret
|
||||||
|
ws_url: ws://openvidu:7880
|
||||||
|
rtmp_port: 1935
|
||||||
|
whip_port: 8085
|
||||||
|
http_relay_port: 9090
|
||||||
|
health_port: 9091
|
||||||
|
logging:
|
||||||
|
json: false
|
||||||
|
level: ""
|
||||||
|
development: false
|
||||||
|
rtc_config:
|
||||||
|
udp_port: 7895
|
||||||
|
EGRESS_CONFIG: |
|
||||||
|
redis:
|
||||||
|
address: redis:6379
|
||||||
|
username: ""
|
||||||
|
password: redispassword
|
||||||
|
db: 0
|
||||||
|
use_tls: false
|
||||||
|
api_key: devkey
|
||||||
|
api_secret: secret
|
||||||
|
ws_url: ws://openvidu:7880
|
||||||
|
health_port: 9091
|
||||||
|
|
||||||
|
# Files will be moved here when uploads fail.
|
||||||
|
backup:
|
||||||
|
prefix: /home/egress/backup_storage
|
||||||
|
|
||||||
|
# Storage for recordings.
|
||||||
|
storage:
|
||||||
|
s3:
|
||||||
|
access_key: minioadmin
|
||||||
|
secret: minioadmin
|
||||||
|
# Default region for minio
|
||||||
|
region: us-east-1
|
||||||
|
endpoint: http://minio:9000
|
||||||
|
bucket: openvidu-appdata
|
||||||
|
force_path_style: true
|
||||||
|
#azure:
|
||||||
|
# account_name: your_account_name
|
||||||
|
# account_key: your_account_key
|
||||||
|
# container_name: openvidu-appdata
|
||||||
|
|
||||||
|
# CPU cost for each type of Egress operation.
|
||||||
|
cpu_cost:
|
||||||
|
max_cpu_utilization: 0.80
|
||||||
|
room_composite_cpu_cost: 0.01
|
||||||
|
audio_room_composite_cpu_cost: 0.01
|
||||||
|
web_cpu_cost: 0.01
|
||||||
|
audio_web_cpu_cost: 0.01
|
||||||
|
participant_cpu_cost: 0.01
|
||||||
|
track_composite_cpu_cost: 0.01
|
||||||
|
track_cpu_cost: 0.01
|
||||||
|
|
||||||
|
setup:
|
||||||
|
image: docker.io/busybox:1.37.0
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: setup
|
||||||
|
restart: "no"
|
||||||
|
volumes:
|
||||||
|
- minio-data:/minio
|
||||||
|
- mongo-data:/mongo
|
||||||
|
- egress-data:/egress
|
||||||
|
- scripts:/scripts/
|
||||||
|
user: root
|
||||||
|
depends_on:
|
||||||
|
generate-scripts:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
command: /bin/sh /scripts/setup.sh
|
|
@ -0,0 +1,277 @@
|
||||||
|
services:
|
||||||
|
|
||||||
|
caddy-proxy:
|
||||||
|
image: docker.io/openvidu/openvidu-caddy-local:main
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: caddy-proxy
|
||||||
|
restart: unless-stopped
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
environment:
|
||||||
|
- LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-}
|
||||||
|
- LIVEKIT_API_KEY=devkey
|
||||||
|
- LIVEKIT_API_SECRET=secret
|
||||||
|
- DASHBOARD_ADMIN_USERNAME=admin
|
||||||
|
- DASHBOARD_ADMIN_PASSWORD=admin
|
||||||
|
- MINIO_ACCESS_KEY=minioadmin
|
||||||
|
- MINIO_SECRET_KEY=minioadmin
|
||||||
|
- MEET_INITIAL_ADMIN_USER=admin
|
||||||
|
- MEET_INITIAL_ADMIN_PASSWORD=admin
|
||||||
|
- MEET_INITIAL_ADMIN_PASSWORD=meet-api-key
|
||||||
|
volumes:
|
||||||
|
- scripts:/scripts
|
||||||
|
entrypoint: /bin/sh /scripts/entrypoint_caddy.sh
|
||||||
|
ports:
|
||||||
|
- 5443:5443
|
||||||
|
- 6443:6443
|
||||||
|
- 7443:7443
|
||||||
|
- 7880:7880
|
||||||
|
- 9443:9443
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: docker.io/redis:7.4.4-alpine
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: redis
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- 6379:6379
|
||||||
|
volumes:
|
||||||
|
- redis:/data
|
||||||
|
command: >
|
||||||
|
redis-server
|
||||||
|
--bind 0.0.0.0
|
||||||
|
--requirepass redispassword
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
minio:
|
||||||
|
image: docker.io/bitnami/minio:2025.5.24-debian-12-r1
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: minio
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- 9000:9000
|
||||||
|
environment:
|
||||||
|
- MINIO_ROOT_USER=minioadmin
|
||||||
|
- MINIO_ROOT_PASSWORD=minioadmin
|
||||||
|
- MINIO_DEFAULT_BUCKETS=openvidu-appdata
|
||||||
|
- MINIO_CONSOLE_SUBPATH=/minio-console
|
||||||
|
- MINIO_BROWSER_REDIRECT_URL=http://localhost:7880/minio-console
|
||||||
|
volumes:
|
||||||
|
- minio-data:/bitnami/minio/data
|
||||||
|
- minio-certs:/certs
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
mongo:
|
||||||
|
image: docker.io/bitnami/mongodb:8.0.9
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: mongo
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- 27017:27017
|
||||||
|
volumes:
|
||||||
|
- mongo-data:/bitnami/mongodb
|
||||||
|
environment:
|
||||||
|
- MONGODB_ROOT_USER=mongoadmin
|
||||||
|
- MONGODB_ROOT_PASSWORD=mongoadmin
|
||||||
|
- MONGODB_ADVERTISED_HOSTNAME=mongo
|
||||||
|
- MONGODB_REPLICA_SET_MODE=primary
|
||||||
|
- MONGODB_REPLICA_SET_NAME=rs0
|
||||||
|
- MONGODB_REPLICA_SET_KEY=devreplicasetkey
|
||||||
|
- EXPERIMENTAL_DOCKER_DESKTOP_FORCE_QEMU=1
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
dashboard:
|
||||||
|
image: docker.io/openvidu/openvidu-dashboard:main
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: dashboard
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- SERVER_PORT=5000
|
||||||
|
- ADMIN_USERNAME=admin
|
||||||
|
- ADMIN_PASSWORD=admin
|
||||||
|
- DATABASE_URL=mongodb://mongoadmin:mongoadmin@mongo:27017/?replicaSet=rs0&readPreference=primaryPreferred
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
openvidu:
|
||||||
|
image: docker.io/openvidu/openvidu-server:main
|
||||||
|
platform: linux/amd64
|
||||||
|
restart: unless-stopped
|
||||||
|
container_name: openvidu
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
environment:
|
||||||
|
- LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-}
|
||||||
|
ports:
|
||||||
|
- 3478:3478/udp
|
||||||
|
- 7881:7881/tcp
|
||||||
|
- 7900-7999:7900-7999/udp
|
||||||
|
entrypoint: /bin/sh /scripts/entrypoint_openvidu.sh
|
||||||
|
command: --config /config/livekit.yaml
|
||||||
|
volumes:
|
||||||
|
- scripts:/scripts
|
||||||
|
- config:/config
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
image: docker.io/openvidu/ingress:main
|
||||||
|
platform: linux/amd64
|
||||||
|
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=/config/ingress.yaml
|
||||||
|
volumes:
|
||||||
|
- config:/config
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
egress:
|
||||||
|
image: docker.io/livekit/egress:v1.9.1
|
||||||
|
platform: linux/amd64
|
||||||
|
restart: unless-stopped
|
||||||
|
container_name: egress
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
environment:
|
||||||
|
- EGRESS_CONFIG_FILE=/config/egress.yaml
|
||||||
|
volumes:
|
||||||
|
- config:/config
|
||||||
|
- egress-data:/home/egress/tmp
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
operator:
|
||||||
|
image: docker.io/openvidu/openvidu-operator:main
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: operator
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- agents-config:/agents-config
|
||||||
|
- operator-deployment:/deployment
|
||||||
|
environment:
|
||||||
|
- PLATFORM=linux/amd64
|
||||||
|
- 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=devkey
|
||||||
|
- LIVEKIT_API_SECRET=secret
|
||||||
|
- REDIS_ADDRESS=redis:6379
|
||||||
|
- REDIS_PASSWORD=redispassword
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
openvidu-meet:
|
||||||
|
image: docker.io/openvidu/openvidu-meet:main
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: openvidu-meet
|
||||||
|
restart: on-failure
|
||||||
|
ports:
|
||||||
|
- 9080:6080
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
environment:
|
||||||
|
- LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-}
|
||||||
|
- SERVER_PORT=6080
|
||||||
|
- MEET_LOG_LEVEL=info
|
||||||
|
- MEET_NAME_ID=openviduMeet-LOCAL
|
||||||
|
- MEET_INITIAL_ADMIN_PASSWORD=meet-api-key
|
||||||
|
- MEET_INITIAL_ADMIN_USER=admin
|
||||||
|
- MEET_INITIAL_ADMIN_PASSWORD=admin
|
||||||
|
- MEET_COOKIE_SECURE=false
|
||||||
|
- MEET_INITIAL_WEBHOOK_ENABLED=true
|
||||||
|
- MEET_INITIAL_WEBHOOK_URL=http://host.docker.internal:5080/webhook
|
||||||
|
- LIVEKIT_URL_PRIVATE=ws://openvidu:7880/
|
||||||
|
- LIVEKIT_API_KEY=devkey
|
||||||
|
- LIVEKIT_API_SECRET=secret
|
||||||
|
- MEET_S3_BUCKET=openvidu-appdata
|
||||||
|
- MEET_S3_SUBBUCKET=openvidu-meet
|
||||||
|
- MEET_S3_SERVICE_ENDPOINT=http://minio:9000
|
||||||
|
- MEET_S3_ACCESS_KEY=minioadmin
|
||||||
|
- MEET_S3_SECRET_KEY=minioadmin
|
||||||
|
- MEET_AWS_REGION=us-east-1
|
||||||
|
- MEET_S3_WITH_PATH_STYLE_ACCESS=true
|
||||||
|
- MEET_REDIS_HOST=redis
|
||||||
|
- MEET_REDIS_PORT=6379
|
||||||
|
- MEET_REDIS_PASSWORD=redispassword
|
||||||
|
- MEET_REDIS_DB=0
|
||||||
|
volumes:
|
||||||
|
- scripts:/scripts
|
||||||
|
entrypoint: /bin/sh /scripts/entrypoint_openvidu_meet.sh
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
ready-check:
|
||||||
|
image: docker.io/openvidu/openvidu-operator:main
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: ready-check
|
||||||
|
restart: on-failure
|
||||||
|
environment:
|
||||||
|
- MODE=local-ready-check
|
||||||
|
- LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-}
|
||||||
|
- DASHBOARD_ADMIN_USERNAME=admin
|
||||||
|
- DASHBOARD_ADMIN_PASSWORD=admin
|
||||||
|
- MINIO_ACCESS_KEY=minioadmin
|
||||||
|
- MINIO_SECRET_KEY=minioadmin
|
||||||
|
- LIVEKIT_API_KEY=devkey
|
||||||
|
- LIVEKIT_API_SECRET=secret
|
||||||
|
- MEET_INITIAL_ADMIN_USER=admin
|
||||||
|
- MEET_INITIAL_ADMIN_PASSWORD=admin
|
||||||
|
- MEET_INITIAL_ADMIN_PASSWORD=meet-api-key
|
||||||
|
volumes:
|
||||||
|
- scripts:/scripts
|
||||||
|
entrypoint: /bin/sh /scripts/entrypoint_ready_check.sh
|
||||||
|
depends_on:
|
||||||
|
- openvidu
|
||||||
|
- ingress
|
||||||
|
- egress
|
||||||
|
- dashboard
|
||||||
|
- minio
|
||||||
|
- mongo
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
scripts:
|
||||||
|
name: openvidu-scripts
|
||||||
|
config:
|
||||||
|
name: openvidu-config
|
||||||
|
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
|
||||||
|
operator-deployment:
|
||||||
|
name: operator-deployment-data
|
|
@ -0,0 +1,294 @@
|
||||||
|
services:
|
||||||
|
|
||||||
|
generate-scripts:
|
||||||
|
image: alpine:3.22.1
|
||||||
|
entrypoint: ["/bin/sh", "-c"]
|
||||||
|
restart: "no"
|
||||||
|
user: root
|
||||||
|
volumes:
|
||||||
|
- scripts:/scripts
|
||||||
|
- config:/config
|
||||||
|
command:
|
||||||
|
- |
|
||||||
|
set -e
|
||||||
|
# Check if /scripts and /config are empty, if not, skip script generation
|
||||||
|
if [ "$(ls -A /scripts)" ] && [ "$(ls -A /config)" ]; then
|
||||||
|
echo "/config and /scripts are not empty, skipping script generation."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "Generating scripts..."
|
||||||
|
echo "$${SETUP_SCRIPT}" > /scripts/setup.sh
|
||||||
|
echo "$${UTILS_SCRIPT}" > /scripts/utils.sh
|
||||||
|
echo "$${READY_CHECK_ENTRYPOINT}" > /scripts/entrypoint_ready_check.sh
|
||||||
|
echo "$${CADDY_ENTRYPOINT}" > /scripts/entrypoint_caddy.sh
|
||||||
|
echo "$${OPENVIDU_ENTRYPOINT}" > /scripts/entrypoint_openvidu.sh
|
||||||
|
echo "$${OPENVIDU_V2_COMPAT_ENTRYPOINT}" > /scripts/entrypoint_openvidu_v2_compat.sh
|
||||||
|
echo "$${OPENVIDU_MEET_ENTRYPOINT}" > /scripts/entrypoint_openvidu_meet.sh
|
||||||
|
echo "$${OPENVIDU_CONFIG}" > /config/livekit.yaml
|
||||||
|
echo "$${INGRESS_CONFIG}" > /config/ingress.yaml
|
||||||
|
echo "$${EGRESS_CONFIG}" > /config/egress.yaml
|
||||||
|
echo "Generating configuration files..."
|
||||||
|
echo "Setting permissions..."
|
||||||
|
chmod +x /scripts/setup.sh
|
||||||
|
chmod +x /scripts/utils.sh
|
||||||
|
chmod +x /scripts/entrypoint_ready_check.sh
|
||||||
|
chmod +x /scripts/entrypoint_caddy.sh
|
||||||
|
chmod +x /scripts/entrypoint_openvidu.sh
|
||||||
|
chmod +x /scripts/entrypoint_openvidu_meet.sh
|
||||||
|
chmod +x /scripts/entrypoint_openvidu_v2_compat.sh
|
||||||
|
environment:
|
||||||
|
SETUP_SCRIPT: |
|
||||||
|
#!/bin/sh
|
||||||
|
echo "Setting up directories and permissions..."
|
||||||
|
mkdir -p /minio/data/
|
||||||
|
mkdir -p /mongo/data/
|
||||||
|
mkdir -p /egress/home/egress
|
||||||
|
chown 1001:1001 /minio /minio/data
|
||||||
|
chown 1001:1001 /mongo /mongo/data
|
||||||
|
chown 1001:1001 /egress
|
||||||
|
chown 1001:1001 /egress/home
|
||||||
|
chown 1001:1001 /egress/home/egress
|
||||||
|
echo "Setup complete."
|
||||||
|
UTILS_SCRIPT: |
|
||||||
|
#!/bin/sh
|
||||||
|
LAN_DOMAIN=openvidu-local.dev
|
||||||
|
if [ "$$LAN_PRIVATE_IP" != "" ]; then
|
||||||
|
export USE_HTTPS=true
|
||||||
|
export LAN_MODE=true
|
||||||
|
else
|
||||||
|
export USE_HTTPS=false
|
||||||
|
export LAN_MODE=false
|
||||||
|
fi
|
||||||
|
echo "Using LAN_PRIVATE_IP: $${LAN_PRIVATE_IP:-none}"
|
||||||
|
echo "Using USE_HTTPS: $${USE_HTTPS}"
|
||||||
|
echo "Using LAN_MODE: $${LAN_MODE}"
|
||||||
|
getDeploymentUrl() {
|
||||||
|
schema="$${1:-http}"
|
||||||
|
URL="$$schema://localhost:7880"
|
||||||
|
if [ "$${USE_HTTPS}" = 'true' ]; then
|
||||||
|
URL="$${schema}s://localhost:7443"
|
||||||
|
fi
|
||||||
|
if [ "$${LAN_MODE}" = 'true' ]; then
|
||||||
|
LAN_DOMAIN=$${LAN_DOMAIN:-"openvidu-local.dev"}
|
||||||
|
if [ "$$LAN_PRIVATE_IP" != 'none' ] && [ "$${LAN_DOMAIN}" = 'openvidu-local.dev' ]; then
|
||||||
|
# Replace dots with dashes
|
||||||
|
LAN_DOMAIN="$$(echo "$$LAN_PRIVATE_IP" | sed 's/\./-/g').openvidu-local.dev"
|
||||||
|
fi
|
||||||
|
URL="$${schema}s://$${LAN_DOMAIN}:7443"
|
||||||
|
fi
|
||||||
|
echo "$$URL"
|
||||||
|
}
|
||||||
|
READY_CHECK_ENTRYPOINT: |
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
export LAN_DOMAIN=openvidu-local.dev
|
||||||
|
if [ "$$LAN_PRIVATE_IP" != "" ]; then
|
||||||
|
export USE_HTTPS=true
|
||||||
|
export LAN_MODE=true
|
||||||
|
else
|
||||||
|
export USE_HTTPS=false
|
||||||
|
export LAN_MODE=false
|
||||||
|
fi
|
||||||
|
echo "Using LAN_PRIVATE_IP: $${LAN_PRIVATE_IP:-none}"
|
||||||
|
echo "Using LAN_DOMAIN: $${LAN_DOMAIN}"
|
||||||
|
echo "Using USE_HTTPS: $${USE_HTTPS}"
|
||||||
|
echo "Using LAN_MODE: $${LAN_MODE}"
|
||||||
|
/bin/operator
|
||||||
|
CADDY_ENTRYPOINT: |
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
export LAN_DOMAIN=openvidu-local.dev
|
||||||
|
if [ "$$LAN_PRIVATE_IP" != "" ]; then
|
||||||
|
export USE_HTTPS=true
|
||||||
|
export LAN_MODE=true
|
||||||
|
else
|
||||||
|
export USE_HTTPS=false
|
||||||
|
export LAN_MODE=false
|
||||||
|
fi
|
||||||
|
echo "Using LAN_PRIVATE_IP: $${LAN_PRIVATE_IP:-none}"
|
||||||
|
echo "Using LAN_DOMAIN: $${LAN_DOMAIN}"
|
||||||
|
echo "Using USE_HTTPS: $${USE_HTTPS}"
|
||||||
|
echo "Using LAN_MODE: $${LAN_MODE}"
|
||||||
|
/entrypoint.sh /usr/bin/caddy run --config /config/caddy/Caddyfile
|
||||||
|
OPENVIDU_ENTRYPOINT: |
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
if [ "$$LAN_PRIVATE_IP" != "" ]; then
|
||||||
|
echo "Using as NODE_IP: $$LAN_PRIVATE_IP"
|
||||||
|
export NODE_IP="$$LAN_PRIVATE_IP"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Configure container private IP as node private IP
|
||||||
|
LIVEKIT_OPENVIDU_NODE_PRIVATE_IP="$$(hostname -i)"
|
||||||
|
export LIVEKIT_OPENVIDU_NODE_PRIVATE_IP
|
||||||
|
|
||||||
|
./livekit-server "$@"
|
||||||
|
OPENVIDU_V2_COMPAT_ENTRYPOINT: |
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
. /scripts/utils.sh
|
||||||
|
|
||||||
|
URL=$(getDeploymentUrl)
|
||||||
|
export V2COMPAT_OPENVIDU_SHIM_URL="$${URL}"
|
||||||
|
export V2COMPAT_LIVEKIT_URL="$${URL}"
|
||||||
|
|
||||||
|
/bin/server
|
||||||
|
OPENVIDU_MEET_ENTRYPOINT: |
|
||||||
|
#!/bin/bash
|
||||||
|
. /scripts/utils.sh
|
||||||
|
|
||||||
|
URL=$(getDeploymentUrl ws)
|
||||||
|
export LIVEKIT_URL="$${URL}"
|
||||||
|
|
||||||
|
/usr/local/bin/entrypoint.sh
|
||||||
|
OPENVIDU_CONFIG: |
|
||||||
|
# OpenVidu configuration
|
||||||
|
openvidu:
|
||||||
|
analytics:
|
||||||
|
enabled: true
|
||||||
|
interval: 10s
|
||||||
|
expiration: 768h # 32 days
|
||||||
|
mongo_url: mongodb://mongoadmin:mongoadmin@mongo:27017/?replicaSet=rs0&readPreference=primaryPreferred
|
||||||
|
rtc:
|
||||||
|
# WebRTC engine selection
|
||||||
|
# Values: pion, mediasoup
|
||||||
|
engine: pion
|
||||||
|
mediasoup:
|
||||||
|
# Global toggle to enable debugging logs from mediasoup.
|
||||||
|
# In most debugging cases, using just an asterisk ("*") here is enough,
|
||||||
|
# but this can be fine-tuned for specific log levels.
|
||||||
|
# More info: https://mediasoup.org/documentation/v3/mediasoup/debugging/
|
||||||
|
# Default: "" (empty).
|
||||||
|
# Overridden by the `DEBUG` env var, if it is set.
|
||||||
|
debug: ""
|
||||||
|
|
||||||
|
# Logging level for logs generated by mediasoup.
|
||||||
|
# More info: https://mediasoup.org/documentation/v3/mediasoup/debugging/
|
||||||
|
# Values: debug, warn, error, none.
|
||||||
|
# Default: error.
|
||||||
|
log_level: error
|
||||||
|
|
||||||
|
# Comma-separated list of log tag names, for debugging.
|
||||||
|
# More info: https://mediasoup.org/documentation/v3/mediasoup/debugging/
|
||||||
|
# Values: info, ice, dtls, rtp, srtp, rtcp, rtx, bwe, score, simulcast, svc, sctp, message.
|
||||||
|
# Default: [info, ice, rtp, rtcp, message].
|
||||||
|
log_tags: [info, ice, rtp, rtcp, message]
|
||||||
|
|
||||||
|
# LiveKit configuration
|
||||||
|
port: 7880
|
||||||
|
bind_addresses:
|
||||||
|
- ""
|
||||||
|
rtc:
|
||||||
|
tcp_port: 7881
|
||||||
|
port_range_start: 7900
|
||||||
|
port_range_end: 7999
|
||||||
|
redis:
|
||||||
|
address: redis:6379
|
||||||
|
username: ""
|
||||||
|
password: redispassword
|
||||||
|
db: 0
|
||||||
|
use_tls: false
|
||||||
|
turn:
|
||||||
|
enabled: true
|
||||||
|
udp_port: 3478
|
||||||
|
relay_range_start: 40000
|
||||||
|
relay_range_end: 50000
|
||||||
|
keys:
|
||||||
|
devkey: secret
|
||||||
|
webhook:
|
||||||
|
api_key: devkey
|
||||||
|
urls:
|
||||||
|
- http://host.docker.internal:4443/livekit/webhook # For OpenVidu 2 compatibility
|
||||||
|
- http://host.docker.internal:6080/livekit/webhook
|
||||||
|
- http://openvidu-meet:6080/livekit/webhook
|
||||||
|
ingress:
|
||||||
|
rtmp_base_url: rtmp://localhost:1935/rtmp
|
||||||
|
whip_base_url: http://localhost:8085/whip
|
||||||
|
logging:
|
||||||
|
# Logging level for the LiveKit server.
|
||||||
|
# Values: debug, info, warn, error.
|
||||||
|
# Default: info.
|
||||||
|
level: info
|
||||||
|
|
||||||
|
# Logging level for the Pion WebRTC engine.
|
||||||
|
# Values: trace, debug, info, warn, error.
|
||||||
|
# Default: error.
|
||||||
|
pion_level: warn
|
||||||
|
|
||||||
|
INGRESS_CONFIG: |
|
||||||
|
redis:
|
||||||
|
address: redis:6379
|
||||||
|
username: ""
|
||||||
|
password: redispassword
|
||||||
|
db: 0
|
||||||
|
use_tls: false
|
||||||
|
api_key: devkey
|
||||||
|
api_secret: secret
|
||||||
|
ws_url: ws://openvidu:7880
|
||||||
|
rtmp_port: 1935
|
||||||
|
whip_port: 8085
|
||||||
|
http_relay_port: 9090
|
||||||
|
health_port: 9091
|
||||||
|
logging:
|
||||||
|
json: false
|
||||||
|
level: ""
|
||||||
|
development: false
|
||||||
|
rtc_config:
|
||||||
|
udp_port: 7895
|
||||||
|
EGRESS_CONFIG: |
|
||||||
|
redis:
|
||||||
|
address: redis:6379
|
||||||
|
username: ""
|
||||||
|
password: redispassword
|
||||||
|
db: 0
|
||||||
|
use_tls: false
|
||||||
|
api_key: devkey
|
||||||
|
api_secret: secret
|
||||||
|
ws_url: ws://openvidu:7880
|
||||||
|
health_port: 9091
|
||||||
|
|
||||||
|
# Files will be moved here when uploads fail.
|
||||||
|
backup:
|
||||||
|
prefix: /home/egress/backup_storage
|
||||||
|
|
||||||
|
# Storage for recordings.
|
||||||
|
storage:
|
||||||
|
s3:
|
||||||
|
access_key: minioadmin
|
||||||
|
secret: minioadmin
|
||||||
|
# Default region for minio
|
||||||
|
region: us-east-1
|
||||||
|
endpoint: http://minio:9000
|
||||||
|
bucket: openvidu-appdata
|
||||||
|
force_path_style: true
|
||||||
|
#azure:
|
||||||
|
# account_name: your_account_name
|
||||||
|
# account_key: your_account_key
|
||||||
|
# container_name: openvidu-appdata
|
||||||
|
|
||||||
|
# CPU cost for each type of Egress operation.
|
||||||
|
cpu_cost:
|
||||||
|
max_cpu_utilization: 0.80
|
||||||
|
room_composite_cpu_cost: 0.01
|
||||||
|
audio_room_composite_cpu_cost: 0.01
|
||||||
|
web_cpu_cost: 0.01
|
||||||
|
audio_web_cpu_cost: 0.01
|
||||||
|
participant_cpu_cost: 0.01
|
||||||
|
track_composite_cpu_cost: 0.01
|
||||||
|
track_cpu_cost: 0.01
|
||||||
|
|
||||||
|
setup:
|
||||||
|
image: docker.io/busybox:1.37.0
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: setup
|
||||||
|
restart: "no"
|
||||||
|
volumes:
|
||||||
|
- minio-data:/minio
|
||||||
|
- mongo-data:/mongo
|
||||||
|
- egress-data:/egress
|
||||||
|
- scripts:/scripts/
|
||||||
|
user: root
|
||||||
|
depends_on:
|
||||||
|
generate-scripts:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
command: /bin/sh /scripts/setup.sh
|
|
@ -0,0 +1,297 @@
|
||||||
|
services:
|
||||||
|
caddy-proxy:
|
||||||
|
image: docker.io/openvidu/openvidu-caddy-local:main
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: caddy-proxy
|
||||||
|
restart: unless-stopped
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
environment:
|
||||||
|
- LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-}
|
||||||
|
- LIVEKIT_API_KEY=devkey
|
||||||
|
- LIVEKIT_API_SECRET=secret
|
||||||
|
- DASHBOARD_ADMIN_USERNAME=admin
|
||||||
|
- DASHBOARD_ADMIN_PASSWORD=admin
|
||||||
|
- MINIO_ACCESS_KEY=minioadmin
|
||||||
|
- MINIO_SECRET_KEY=minioadmin
|
||||||
|
- V2COMPAT_OPENVIDU_SECRET=secret
|
||||||
|
- MEET_INITIAL_ADMIN_USER=admin
|
||||||
|
- MEET_INITIAL_ADMIN_PASSWORD=admin
|
||||||
|
- MEET_INITIAL_ADMIN_PASSWORD=meet-api-key
|
||||||
|
volumes:
|
||||||
|
- scripts:/scripts
|
||||||
|
entrypoint: /bin/sh /scripts/entrypoint_caddy.sh
|
||||||
|
ports:
|
||||||
|
- 5443:5443
|
||||||
|
- 6443:6443
|
||||||
|
- 7443:7443
|
||||||
|
- 7880:7880
|
||||||
|
- 9443:9443
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: docker.io/redis:7.4.4-alpine
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: redis
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- 6379:6379
|
||||||
|
volumes:
|
||||||
|
- redis:/data
|
||||||
|
command: >
|
||||||
|
redis-server
|
||||||
|
--bind 0.0.0.0
|
||||||
|
--requirepass redispassword
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
minio:
|
||||||
|
image: docker.io/bitnami/minio:2025.5.24-debian-12-r1
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: minio
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- 9000:9000
|
||||||
|
environment:
|
||||||
|
- MINIO_ROOT_USER=minioadmin
|
||||||
|
- MINIO_ROOT_PASSWORD=minioadmin
|
||||||
|
- MINIO_DEFAULT_BUCKETS=openvidu-appdata
|
||||||
|
- MINIO_CONSOLE_SUBPATH=/minio-console
|
||||||
|
- MINIO_BROWSER_REDIRECT_URL=http://localhost:7880/minio-console
|
||||||
|
volumes:
|
||||||
|
- minio-data:/bitnami/minio/data
|
||||||
|
- minio-certs:/certs
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
mongo:
|
||||||
|
image: docker.io/bitnami/mongodb:8.0.9
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: mongo
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- 27017:27017
|
||||||
|
volumes:
|
||||||
|
- mongo-data:/bitnami/mongodb
|
||||||
|
environment:
|
||||||
|
- MONGODB_ROOT_USER=mongoadmin
|
||||||
|
- MONGODB_ROOT_PASSWORD=mongoadmin
|
||||||
|
- MONGODB_ADVERTISED_HOSTNAME=mongo
|
||||||
|
- MONGODB_REPLICA_SET_MODE=primary
|
||||||
|
- MONGODB_REPLICA_SET_NAME=rs0
|
||||||
|
- MONGODB_REPLICA_SET_KEY=devreplicasetkey
|
||||||
|
- EXPERIMENTAL_DOCKER_DESKTOP_FORCE_QEMU=1
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
dashboard:
|
||||||
|
image: docker.io/openvidu/openvidu-dashboard:main
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: dashboard
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- SERVER_PORT=5000
|
||||||
|
- ADMIN_USERNAME=admin
|
||||||
|
- ADMIN_PASSWORD=admin
|
||||||
|
- DATABASE_URL=mongodb://mongoadmin:mongoadmin@mongo:27017/?replicaSet=rs0&readPreference=primaryPreferred
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
openvidu:
|
||||||
|
image: docker.io/openvidu/openvidu-server-pro:main
|
||||||
|
platform: linux/amd64
|
||||||
|
restart: unless-stopped
|
||||||
|
container_name: openvidu
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
environment:
|
||||||
|
- LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-}
|
||||||
|
- OPENVIDU_DEPLOYMENT_TYPE=local
|
||||||
|
- OPENVIDU_ENVIRONMENT=on_premise
|
||||||
|
ports:
|
||||||
|
- 3478:3478/udp
|
||||||
|
- 7881:7881/tcp
|
||||||
|
- 7900-7999:7900-7999/udp
|
||||||
|
entrypoint: /bin/sh /scripts/entrypoint_openvidu.sh
|
||||||
|
command: --config /config/livekit.yaml
|
||||||
|
volumes:
|
||||||
|
- scripts:/scripts
|
||||||
|
- config:/config
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
image: docker.io/openvidu/ingress:main
|
||||||
|
platform: linux/amd64
|
||||||
|
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=/config/ingress.yaml
|
||||||
|
volumes:
|
||||||
|
- config:/config
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
egress:
|
||||||
|
image: docker.io/livekit/egress:v1.9.1
|
||||||
|
platform: linux/amd64
|
||||||
|
restart: unless-stopped
|
||||||
|
container_name: egress
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
environment:
|
||||||
|
- EGRESS_CONFIG_FILE=/config/egress.yaml
|
||||||
|
volumes:
|
||||||
|
- config:/config
|
||||||
|
- egress-data:/home/egress/tmp
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
openvidu-meet:
|
||||||
|
image: docker.io/openvidu/openvidu-meet:main
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: openvidu-meet
|
||||||
|
restart: on-failure
|
||||||
|
ports:
|
||||||
|
- 9080:6080
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
environment:
|
||||||
|
- LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-}
|
||||||
|
- SERVER_PORT=6080
|
||||||
|
- MEET_LOG_LEVEL=info
|
||||||
|
- MEET_NAME_ID=openviduMeet-LOCAL
|
||||||
|
- MEET_INITIAL_ADMIN_PASSWORD=meet-api-key
|
||||||
|
- MEET_INITIAL_ADMIN_USER=admin
|
||||||
|
- MEET_INITIAL_ADMIN_PASSWORD=admin
|
||||||
|
- MEET_COOKIE_SECURE=false
|
||||||
|
- MEET_INITIAL_WEBHOOK_ENABLED=true
|
||||||
|
- MEET_INITIAL_WEBHOOK_URL=http://host.docker.internal:5080/webhook
|
||||||
|
- LIVEKIT_URL_PRIVATE=ws://openvidu:7880/
|
||||||
|
- LIVEKIT_API_KEY=devkey
|
||||||
|
- LIVEKIT_API_SECRET=secret
|
||||||
|
- MEET_S3_BUCKET=openvidu-appdata
|
||||||
|
- MEET_S3_SUBBUCKET=openvidu-meet
|
||||||
|
- MEET_S3_SERVICE_ENDPOINT=http://minio:9000
|
||||||
|
- MEET_S3_ACCESS_KEY=minioadmin
|
||||||
|
- MEET_S3_SECRET_KEY=minioadmin
|
||||||
|
- MEET_AWS_REGION=us-east-1
|
||||||
|
- MEET_S3_WITH_PATH_STYLE_ACCESS=true
|
||||||
|
- MEET_REDIS_HOST=redis
|
||||||
|
- MEET_REDIS_PORT=6379
|
||||||
|
- MEET_REDIS_PASSWORD=redispassword
|
||||||
|
- MEET_REDIS_DB=0
|
||||||
|
volumes:
|
||||||
|
- scripts:/scripts
|
||||||
|
entrypoint: /bin/sh /scripts/entrypoint_openvidu_meet.sh
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
openvidu-v2compatibility:
|
||||||
|
image: docker.io/openvidu/openvidu-v2compatibility:main
|
||||||
|
platform: linux/amd64
|
||||||
|
restart: unless-stopped
|
||||||
|
container_name: openvidu-v2compatibility
|
||||||
|
entrypoint: /bin/sh /scripts/entrypoint_openvidu_v2_compat.sh
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
ports:
|
||||||
|
- 4443:4443
|
||||||
|
environment:
|
||||||
|
- LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-}
|
||||||
|
- V2COMPAT_OPENVIDU_SHIM_PORT=4443
|
||||||
|
- V2COMPAT_OPENVIDU_SECRET=secret
|
||||||
|
- V2COMPAT_LIVEKIT_URL_PRIVATE=ws://openvidu:7880
|
||||||
|
- V2COMPAT_LIVEKIT_API_KEY=devkey
|
||||||
|
- V2COMPAT_LIVEKIT_API_SECRET=secret
|
||||||
|
- V2COMPAT_OPENVIDU_RECORDING_PATH=/opt/openvidu/recordings
|
||||||
|
- V2COMPAT_OPENVIDU_PRO_RECORDING_STORAGE=local
|
||||||
|
- V2COMPAT_OPENVIDU_PRO_AWS_S3_BUCKET=openvidu-appdata
|
||||||
|
- V2COMPAT_OPENVIDU_PRO_AWS_S3_SERVICE_ENDPOINT=http://minio:9000
|
||||||
|
- V2COMPAT_OPENVIDU_PRO_AWS_REGION=us-east-1
|
||||||
|
- V2COMPAT_OPENVIDU_PRO_AWS_ACCESS_KEY=minioadmin
|
||||||
|
- V2COMPAT_OPENVIDU_PRO_AWS_SECRET_KEY=minioadmin
|
||||||
|
- V2COMPAT_REDIS_HOST=redis
|
||||||
|
- V2COMPAT_REDIS_PORT=6379
|
||||||
|
- V2COMPAT_REDIS_PASSWORD=redispassword
|
||||||
|
- V2COMPAT_REDIS_DB=0
|
||||||
|
- V2COMPAT_OPENVIDU_WEBHOOK=false
|
||||||
|
- V2COMPAT_OPENVIDU_WEBHOOK_ENDPOINT=http://host.docker.internal:7777/webhook
|
||||||
|
- OPENVIDU_DEPLOYMENT_TYPE=local
|
||||||
|
volumes:
|
||||||
|
- v2compat-recordings:/opt/openvidu/recordings
|
||||||
|
- scripts:/scripts
|
||||||
|
depends_on:
|
||||||
|
setup:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
|
||||||
|
ready-check:
|
||||||
|
image: docker.io/openvidu/openvidu-operator:main
|
||||||
|
platform: linux/amd64
|
||||||
|
container_name: ready-check
|
||||||
|
restart: on-failure
|
||||||
|
environment:
|
||||||
|
- MODE=local-ready-check
|
||||||
|
- LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-}
|
||||||
|
- DASHBOARD_ADMIN_USERNAME=admin
|
||||||
|
- DASHBOARD_ADMIN_PASSWORD=admin
|
||||||
|
- MINIO_ACCESS_KEY=minioadmin
|
||||||
|
- MINIO_SECRET_KEY=minioadmin
|
||||||
|
- LIVEKIT_API_KEY=devkey
|
||||||
|
- LIVEKIT_API_SECRET=secret
|
||||||
|
- V2COMPAT_OPENVIDU_SECRET=secret
|
||||||
|
- MEET_INITIAL_ADMIN_USER=admin
|
||||||
|
- MEET_INITIAL_ADMIN_PASSWORD=admin
|
||||||
|
- MEET_INITIAL_ADMIN_PASSWORD=meet-api-key
|
||||||
|
volumes:
|
||||||
|
- scripts:/scripts
|
||||||
|
entrypoint: /bin/sh /scripts/entrypoint_ready_check.sh
|
||||||
|
depends_on:
|
||||||
|
- openvidu
|
||||||
|
- ingress
|
||||||
|
- egress
|
||||||
|
- dashboard
|
||||||
|
- minio
|
||||||
|
- mongo
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
scripts:
|
||||||
|
name: openvidu-pro-scripts
|
||||||
|
config:
|
||||||
|
name: openvidu-pro-config
|
||||||
|
agents-config:
|
||||||
|
name: openvidu-pro-agents-config
|
||||||
|
minio-certs:
|
||||||
|
name: openvidu-pro-minio-certs
|
||||||
|
mongodb-config:
|
||||||
|
name: openvidu-pro-mongodb-config
|
||||||
|
redis:
|
||||||
|
name: openvidu-pro-redis
|
||||||
|
minio-data:
|
||||||
|
name: openvidu-pro-minio-data
|
||||||
|
mongo-data:
|
||||||
|
name: openvidu-pro-mongo-data
|
||||||
|
egress-data:
|
||||||
|
name: openvidu-pro-egress-data
|
||||||
|
v2compat-recordings:
|
||||||
|
name: openvidu-pro-v2compat-recordings
|
||||||
|
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
|
name: openvidu-pro
|
Loading…
Reference in New Issue