Merge pull request #10 from OpenVidu/development

Merge 3.4.0
This commit is contained in:
Carlos Ruiz Ballesteros 2025-10-01 19:25:16 +02:00 committed by GitHub
commit a9d78ea908
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
18 changed files with 190 additions and 248 deletions

View File

@ -30,9 +30,7 @@ MINIO_SECRET_KEY=minioadmin
MONGO_ADMIN_USERNAME=mongoadmin
MONGO_ADMIN_PASSWORD=mongoadmin
# Default App (OpenVidu Call)
CALL_PRIVATE_ACCESS=false
CALL_USER=
CALL_SECRET=
CALL_ADMIN_USER=admin
CALL_ADMIN_SECRET=admin
# OpenVidu Meet configuration.
MEET_INITIAL_ADMIN_USER=admin
MEET_INITIAL_ADMIN_PASSWORD=admin
MEET_INITIAL_API_KEY=meet-api-key

View File

@ -1,16 +1,22 @@
# Docker image of the agent.
docker_image: docker.io/openvidu/agent-speech-processing:3.3.0
docker_image: docker.io/openvidu/agent-speech-processing:main
# Whether to run the agent or not.
enabled: false
# Maximum CPU load threshold for the agent to accept new jobs. Value between 0 and 1.
load_threshold: 1.0
# Log level for the agent [DEBUG, INFO, WARNING, ERROR, CRITICAL]
log_level: INFO
live_captions:
# How this agent will connect to Rooms [automatic, manual]
# - automatic: the agent will automatically connect to new Rooms.
# - manual: the agent will connect to new Rooms only when your application dictates it by using the Agent Dispatch API.
processing: automatic
# Which speech-to-text AI provider to use [aws, azure, google, opeanai, groq, deepgram, assemblyai, fal, clova, speechmatics, gladia, sarvam]
# Which speech-to-text AI provider to use [aws, azure, google, openai, groq, deepgram, assemblyai, fal, clova, speechmatics, gladia, sarvam, spitch]
# The custom configuration for the selected provider must be set below
provider:
@ -154,8 +160,8 @@ live_captions:
detect_language: false
# Whether to return interim (non-final) transcription results. Defaults to true. See https://developers.deepgram.com/docs/interim-results
interim_results: true
# Whether to apply smart formatting to numbers, dates, etc. Defaults to true. See https://developers.deepgram.com/docs/smart-format
smart_format: true
# Whether to apply smart formatting to numbers, dates, etc. Defaults to false. See https://developers.deepgram.com/docs/smart-format
smart_format: false
# When smart_format is used, ensures it does not wait for sequence to be complete before returning results. Defaults to true. See https://developers.deepgram.com/docs/smart-format#using-no-delay
no_delay: true
# Whether to add punctuations to the transcription. Defaults to true. Turn detector will work better with punctuations. See https://developers.deepgram.com/docs/punctuation
@ -222,7 +228,7 @@ live_captions:
speaker_sensitivity:
# See https://docs.speechmatics.com/features/diarization#prefer-current-speaker
prefer_current_speaker:
# Permitted puctuation marks for advanced punctuation. See https://docs.speechmatics.com/features/punctuation-settings
# Permitted punctuation marks for advanced punctuation. See https://docs.speechmatics.com/features/punctuation-settings
# Commented is an example of punctuation settings
punctuation_overrides:
# permitted_marks: [ ".", "," ]

View File

@ -1,6 +1,6 @@
services:
caddy-proxy:
image: docker.io/openvidu/openvidu-caddy-local:3.3.0
image: docker.io/openvidu/openvidu-caddy-local:main
platform: linux/amd64
container_name: caddy-proxy
restart: unless-stopped
@ -17,6 +17,9 @@ services:
- DASHBOARD_ADMIN_PASSWORD=${DASHBOARD_ADMIN_PASSWORD:-}
- MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY:-}
- MINIO_SECRET_KEY=${MINIO_SECRET_KEY:-}
- MEET_INITIAL_ADMIN_USER=${MEET_INITIAL_ADMIN_USER:-}
- MEET_INITIAL_ADMIN_PASSWORD=${MEET_INITIAL_ADMIN_PASSWORD:-}
- MEET_INITIAL_API_KEY=${MEET_INITIAL_API_KEY:-}
volumes:
- ./custom-layout:/var/www/custom-layout
ports:
@ -24,6 +27,7 @@ services:
- 6443:6443
- 7443:7443
- 7880:7880
- 9443:9443
depends_on:
setup:
condition: service_completed_successfully
@ -66,7 +70,7 @@ services:
condition: service_completed_successfully
mongo:
image: docker.io/openvidu/mongodb:8.0.9
image: docker.io/openvidu/mongodb:8.0.12-r0
platform: linux/amd64
container_name: mongo
restart: unless-stopped
@ -87,7 +91,7 @@ services:
condition: service_completed_successfully
dashboard:
image: docker.io/openvidu/openvidu-dashboard:3.3.0
image: docker.io/openvidu/openvidu-dashboard:main
platform: linux/amd64
container_name: dashboard
restart: unless-stopped
@ -101,7 +105,7 @@ services:
condition: service_completed_successfully
openvidu:
image: docker.io/openvidu/openvidu-server:3.3.0
image: docker.io/openvidu/openvidu-server:main
platform: linux/amd64
restart: unless-stopped
container_name: openvidu
@ -109,6 +113,7 @@ services:
- host.docker.internal:host-gateway
environment:
- LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-}
- LAN_MODE=${LAN_MODE:-false}
ports:
- 3478:3478/udp
- 7881:7881/tcp
@ -123,7 +128,7 @@ services:
condition: service_completed_successfully
ingress:
image: docker.io/openvidu/ingress:3.3.0
image: docker.io/openvidu/ingress:main
platform: linux/amd64
container_name: ingress
restart: unless-stopped
@ -142,7 +147,7 @@ services:
condition: service_completed_successfully
egress:
image: docker.io/livekit/egress:v1.9.1
image: docker.io/livekit/egress:v1.10.0
platform: linux/amd64
restart: unless-stopped
container_name: egress
@ -157,36 +162,45 @@ services:
setup:
condition: service_completed_successfully
default-app:
image: docker.io/openvidu/openvidu-call:3.3.0-demo
openvidu-meet:
image: docker.io/openvidu/openvidu-meet:main
platform: linux/amd64
container_name: openvidu-call
container_name: openvidu-meet
restart: on-failure
ports:
- 9080:6080
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:-}
- SERVER_PORT=6080
- CALL_NAME_ID=OpenViduCall-LOCAL
- MEET_LOG_LEVEL=${MEET_LOG_LEVEL:-info}
- MEET_NAME_ID=openviduMeet-LOCAL
- MEET_INITIAL_API_KEY=${MEET_INITIAL_API_KEY:-meet-api-key}
- MEET_INITIAL_ADMIN_USER=${MEET_INITIAL_ADMIN_USER:-admin}
- MEET_INITIAL_ADMIN_PASSWORD=${MEET_INITIAL_ADMIN_PASSWORD:-admin}
- MEET_COOKIE_SECURE=false
- MEET_INITIAL_WEBHOOK_ENABLED=true
- MEET_INITIAL_WEBHOOK_URL=${MEET_INITIAL_WEBHOOK_URL:-http://host.docker.internal:6080/webhook}
- LIVEKIT_URL_PRIVATE=ws://openvidu:7880/
- LIVEKIT_API_KEY=${LIVEKIT_API_KEY}
- LIVEKIT_API_SECRET=${LIVEKIT_API_SECRET}
- CALL_PRIVATE_ACCESS=${CALL_PRIVATE_ACCESS:-false}
- CALL_USER=${CALL_USER:-}
- CALL_SECRET=${CALL_SECRET:-}
- CALL_RECORDING=${CALL_RECORDING:-}
- CALL_ADMIN_USER=${CALL_ADMIN_USER:-admin}
- CALL_ADMIN_SECRET=${CALL_ADMIN_SECRET:-admin}
- CALL_LOG_LEVEL=${CALL_LOG_LEVEL:-info}
- CALL_S3_BUCKET=${CALL_S3_BUCKET:-openvidu-appdata}
- CALL_S3_SERVICE_ENDPOINT=${CALL_S3_SERVICE_ENDPOINT:-http://minio:9000}
- CALL_S3_ACCESS_KEY=${MINIO_ACCESS_KEY}
- CALL_S3_SECRET_KEY=${MINIO_SECRET_KEY}
- CALL_AWS_REGION=${CALL_AWS_REGION:-us-east-1}
- CALL_S3_WITH_PATH_STYLE_ACCESS=${CALL_S3_WITH_PATH_STYLE_ACCESS:-true}
- MEET_S3_BUCKET=${MEET_S3_BUCKET:-openvidu-appdata}
- MEET_S3_SUBBUCKET=${MEET_S3_SUBBUCKET:-openvidu-meet}
- MEET_S3_SERVICE_ENDPOINT=${MEET_S3_SERVICE_ENDPOINT:-http://minio:9000}
- MEET_S3_ACCESS_KEY=${MINIO_ACCESS_KEY}
- MEET_S3_SECRET_KEY=${MINIO_SECRET_KEY}
- MEET_AWS_REGION=${MEET_AWS_REGION:-us-east-1}
- MEET_S3_WITH_PATH_STYLE_ACCESS=${MEET_S3_WITH_PATH_STYLE_ACCESS:-true}
- MEET_REDIS_HOST=redis
- MEET_REDIS_PORT=6379
- MEET_REDIS_PASSWORD=${REDIS_PASSWORD:-}
- MEET_REDIS_DB=0
volumes:
- ./scripts/entrypoint_default_app.sh:/scripts/entrypoint.sh
- ./scripts/entrypoint_openvidu_meet.sh:/scripts/entrypoint.sh
- ./scripts/utils.sh:/scripts/utils.sh
entrypoint: /bin/sh /scripts/entrypoint.sh
depends_on:
@ -194,7 +208,7 @@ services:
condition: service_completed_successfully
operator:
image: docker.io/openvidu/openvidu-operator:3.3.0
image: docker.io/openvidu/openvidu-operator:main
platform: linux/amd64
container_name: operator
restart: unless-stopped
@ -219,21 +233,26 @@ services:
condition: service_completed_successfully
ready-check:
image: docker.io/curlimages/curl:8.13.0
image: docker.io/openvidu/openvidu-operator:main
platform: linux/amd64
container_name: ready-check
restart: on-failure
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:-}
- 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:-}
- LIVEKIT_API_KEY=${LIVEKIT_API_KEY:-}
- LIVEKIT_API_SECRET=${LIVEKIT_API_SECRET:-}
- MEET_INITIAL_ADMIN_USER=${MEET_INITIAL_ADMIN_USER:-}
- MEET_INITIAL_ADMIN_PASSWORD=${MEET_INITIAL_ADMIN_PASSWORD:-}
- MEET_INITIAL_API_KEY=${MEET_INITIAL_API_KEY:-}
depends_on:
- openvidu
- ingress
@ -241,10 +260,6 @@ services:
- dashboard
- minio
- mongo
volumes:
- ./scripts/ready-check.sh:/scripts/ready-check.sh
- ./scripts/utils.sh:/scripts/utils.sh
command: /bin/sh /scripts/ready-check.sh
setup:
image: docker.io/busybox:1.37.0

View File

@ -27,6 +27,10 @@ storage:
# account_name: your_account_name
# account_key: your_account_key
# container_name: openvidu-appdata
# gcp:
# credentials_json: |
# your_credentials_json
# bucket: openvidu-appdata
# CPU cost for each type of Egress operation.
cpu_cost:
@ -38,3 +42,12 @@ cpu_cost:
participant_cpu_cost: 0.01
track_composite_cpu_cost: 0.01
track_cpu_cost: 0.01
openvidu:
# Allocation strategy for new egress requests
# - cpuload: the node with the lowest CPU load will be selected. Distributes the CPU load evenly across all nodes.
# - binpack: some node already hosting at least one Egress will be selected. Fills up nodes before assigning work to new ones.
allocation_strategy: cpuload
# Disables the automatic killing of the most expensive egress when CPU is overloaded.
# The default "false" value helps keeping the node stable, but may cause unexpected egress terminations under high load.
disable_cpu_overload_killer: false

View File

@ -31,7 +31,7 @@ webhook:
api_key: devkey
urls:
- http://host.docker.internal:6080/livekit/webhook
- http://default-app:6080/livekit/webhook
- http://openvidu-meet:6080/livekit/webhook
ingress:
rtmp_base_url: rtmp://localhost:1935/rtmp
whip_base_url: http://localhost:8085/whip

View File

@ -1,7 +1,8 @@
#!/bin/sh
set -e
if [ "$LAN_PRIVATE_IP" != "none" ]; then
if [ "$LAN_PRIVATE_IP" != "" ] && [ "$LAN_MODE" = 'true' ]; then
echo "Using as NODE_IP: $LAN_PRIVATE_IP"
export NODE_IP="$LAN_PRIVATE_IP"
fi

View File

@ -2,7 +2,7 @@
. /scripts/utils.sh
URL=$(getDeploymentUrl)
URL=$(getDeploymentUrl ws)
export LIVEKIT_URL="${URL}"
/usr/local/bin/entrypoint.sh

View File

@ -1,70 +0,0 @@
#!/bin/sh
. /scripts/utils.sh
trap 'handle_sigint' SIGINT
handle_sigint() {
echo "SIGINT signal received, exiting..."
exit 1
}
wait_for_service() {
SERVICE_NAME=$1
SERVICE_URL=$2
shift 2
EXTRA=$@
if [ -n "$EXTRA" ]; then
until curl $EXTRA $SERVICE_URL > /dev/null; do
echo "Waiting for $SERVICE_NAME to start...";
sleep 1;
done;
else
until curl --silent --head --fail $SERVICE_URL > /dev/null; do
echo "Waiting for $SERVICE_NAME to start...";
sleep 1;
done;
fi;
}
wait_for_service 'OpenVidu' 'http://openvidu:7880'
wait_for_service 'Ingress' 'http://ingress:9091'
wait_for_service 'Egress' 'http://egress:9091'
wait_for_service 'Dashboard' 'http://dashboard:5000'
wait_for_service 'Minio' 'http://minio:9000/minio/health/live'
wait_for_service 'Minio Console' 'http://minio:9001/minio-console'
wait_for_service 'Mongo' 'http://mongo:27017' --connect-timeout 10 --silent
LAN_HTTP_URL=$(getDeploymentUrl http)
LAN_WS_URL=$(getDeploymentUrl ws)
for i in $(seq 1 10); do
echo 'Starting OpenVidu... Please be patient...'
sleep 1
done;
echo ''
echo ''
echo '========================================='
echo '🎉 OpenVidu is ready! 🎉'
echo '========================================='
echo ''
echo 'OpenVidu Server & LiveKit Server URLs:'
echo ''
echo ' - From this machine:'
echo ''
echo ' - http://localhost:7880'
echo ' - ws://localhost:7880'
echo ''
echo ' - From other devices in your LAN:'
echo ''
echo " - $LAN_HTTP_URL"
echo " - $LAN_WS_URL"
echo ''
echo '========================================='
echo ''
echo 'OpenVidu Developer UI (services and passwords):'
echo ''
echo ' - http://localhost:7880'
echo " - $LAN_HTTP_URL"
echo ''
echo '========================================='

View File

@ -1,6 +1,11 @@
#!/bin/sh
if [ -z "$LAN_PRIVATE_IP" ]; then
if [ "$LAN_MODE" = 'true' ] && [ "$USE_HTTPS" = 'false' ]; then
echo 'LAN_MODE cannot be "true" if USE_HTTPS is "false"'
exit 1
fi
if [ "$LAN_MODE" = 'true' ] && [ -z "$LAN_PRIVATE_IP" ]; then
echo '------------------------'
echo ''
echo 'LAN_PRIVATE_IP is required in the .env file.'
@ -14,7 +19,9 @@ if [ -z "$LAN_PRIVATE_IP" ]; then
echo 'If it can'\''t be found, you can manually set it in the .env file'
echo '------------------------'
exit 1
else
fi
if [ "$LAN_MODE" = 'true' ] && [ -n "$LAN_PRIVATE_IP" ]; then
# Check if the LAN_PRIVATE_IP is reachable
if ! ping -c 1 -W 1 "$LAN_PRIVATE_IP" > /dev/null; then
echo "ERROR: LAN_PRIVATE_IP $LAN_PRIVATE_IP is not reachable"
@ -26,15 +33,16 @@ else
echo " - MacOS: ./configure_lan_private_ip_macos.sh"
echo " - Windows: .\configure_lan_private_ip_windows.bat"
echo ""
echo " If you don't want to access OpenVidu through your LAN,"
echo " you can run without LAN_MODE enabled, simply set"
echo " the following variables in the .env file:"
echo " USE_HTTPS=false"
echo " LAN_MODE=false"
echo ""
exit 1
fi
fi
if [ "$LAN_MODE" = 'true' ] && [ "$USE_HTTPS" = 'false' ]; then
echo 'LAN_MODE cannot be "true" if USE_HTTPS is "false"'
exit 1
fi
# Prepare volumes
mkdir -p /minio/data
mkdir -p /mongo/data

View File

@ -30,9 +30,7 @@ MINIO_SECRET_KEY=minioadmin
MONGO_ADMIN_USERNAME=mongoadmin
MONGO_ADMIN_PASSWORD=mongoadmin
# Default App (OpenVidu Call)
CALL_PRIVATE_ACCESS=false
CALL_USER=
CALL_SECRET=
CALL_ADMIN_USER=admin
CALL_ADMIN_SECRET=admin
# OpenVidu Meet configuration.
MEET_INITIAL_ADMIN_USER=admin
MEET_INITIAL_ADMIN_PASSWORD=admin
MEET_INITIAL_API_KEY=meet-api-key

View File

@ -1,16 +1,22 @@
# Docker image of the agent.
docker_image: docker.io/openvidu/agent-speech-processing:3.3.0
docker_image: docker.io/openvidu/agent-speech-processing:main
# Whether to run the agent or not.
enabled: false
# Maximum CPU load threshold for the agent to accept new jobs. Value between 0 and 1.
load_threshold: 1.0
# Log level for the agent [DEBUG, INFO, WARNING, ERROR, CRITICAL]
log_level: INFO
live_captions:
# How this agent will connect to Rooms [automatic, manual]
# - automatic: the agent will automatically connect to new Rooms.
# - manual: the agent will connect to new Rooms only when your application dictates it by using the Agent Dispatch API.
processing: automatic
# Which speech-to-text AI provider to use [aws, azure, google, opeanai, groq, deepgram, assemblyai, fal, clova, speechmatics, gladia, sarvam]
# Which speech-to-text AI provider to use [aws, azure, google, openai, groq, deepgram, assemblyai, fal, clova, speechmatics, gladia, sarvam, spitch]
# The custom configuration for the selected provider must be set below
provider:
@ -154,8 +160,8 @@ live_captions:
detect_language: false
# Whether to return interim (non-final) transcription results. Defaults to true. See https://developers.deepgram.com/docs/interim-results
interim_results: true
# Whether to apply smart formatting to numbers, dates, etc. Defaults to true. See https://developers.deepgram.com/docs/smart-format
smart_format: true
# Whether to apply smart formatting to numbers, dates, etc. Defaults to false. See https://developers.deepgram.com/docs/smart-format
smart_format: false
# When smart_format is used, ensures it does not wait for sequence to be complete before returning results. Defaults to true. See https://developers.deepgram.com/docs/smart-format#using-no-delay
no_delay: true
# Whether to add punctuations to the transcription. Defaults to true. Turn detector will work better with punctuations. See https://developers.deepgram.com/docs/punctuation
@ -222,7 +228,7 @@ live_captions:
speaker_sensitivity:
# See https://docs.speechmatics.com/features/diarization#prefer-current-speaker
prefer_current_speaker:
# Permitted puctuation marks for advanced punctuation. See https://docs.speechmatics.com/features/punctuation-settings
# Permitted punctuation marks for advanced punctuation. See https://docs.speechmatics.com/features/punctuation-settings
# Commented is an example of punctuation settings
punctuation_overrides:
# permitted_marks: [ ".", "," ]

View File

@ -1,6 +1,6 @@
services:
caddy-proxy:
image: docker.io/openvidu/openvidu-caddy-local:3.3.0
image: docker.io/openvidu/openvidu-caddy-local:main
platform: linux/amd64
container_name: caddy-proxy
restart: unless-stopped
@ -18,6 +18,9 @@ services:
- MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY:-}
- MINIO_SECRET_KEY=${MINIO_SECRET_KEY:-}
- V2COMPAT_OPENVIDU_SECRET=${LIVEKIT_API_SECRET:-}
- MEET_INITIAL_ADMIN_USER=${MEET_INITIAL_ADMIN_USER:-}
- MEET_INITIAL_ADMIN_PASSWORD=${MEET_INITIAL_ADMIN_PASSWORD:-}
- MEET_INITIAL_API_KEY=${MEET_INITIAL_API_KEY:-}
volumes:
- ./custom-layout:/var/www/custom-layout
ports:
@ -25,6 +28,7 @@ services:
- 6443:6443
- 7443:7443
- 7880:7880
- 9443:9443
depends_on:
setup:
condition: service_completed_successfully
@ -66,7 +70,7 @@ services:
condition: service_completed_successfully
mongo:
image: docker.io/openvidu/mongodb:8.0.9
image: docker.io/openvidu/mongodb:8.0.12-r0
platform: linux/amd64
container_name: mongo
restart: unless-stopped
@ -87,7 +91,7 @@ services:
condition: service_completed_successfully
dashboard:
image: docker.io/openvidu/openvidu-dashboard:3.3.0
image: docker.io/openvidu/openvidu-dashboard:main
platform: linux/amd64
container_name: dashboard
restart: unless-stopped
@ -101,13 +105,14 @@ services:
condition: service_completed_successfully
openvidu:
image: docker.io/openvidu/openvidu-server-pro:3.3.0
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_MODE=${LAN_MODE:-false}
- LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-}
- OPENVIDU_DEPLOYMENT_TYPE=local
- OPENVIDU_ENVIRONMENT=on_premise
@ -125,7 +130,7 @@ services:
condition: service_completed_successfully
ingress:
image: docker.io/openvidu/ingress:3.3.0
image: docker.io/openvidu/ingress:main
platform: linux/amd64
container_name: ingress
restart: unless-stopped
@ -144,7 +149,7 @@ services:
condition: service_completed_successfully
egress:
image: docker.io/livekit/egress:v1.9.1
image: docker.io/livekit/egress:v1.10.0
platform: linux/amd64
restart: unless-stopped
container_name: egress
@ -159,36 +164,45 @@ services:
setup:
condition: service_completed_successfully
default-app:
image: docker.io/openvidu/openvidu-call:3.3.0-demo
openvidu-meet:
image: docker.io/openvidu/openvidu-meet:main
platform: linux/amd64
container_name: openvidu-call
container_name: openvidu-meet
restart: on-failure
ports:
- 9080:6080
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:-}
- SERVER_PORT=6080
- CALL_NAME_ID=OpenViduCall-LOCAL
- MEET_LOG_LEVEL=${MEET_LOG_LEVEL:-info}
- MEET_NAME_ID=openviduMeet-LOCAL
- MEET_INITIAL_API_KEY=${MEET_INITIAL_API_KEY:-meet-api-key}
- MEET_INITIAL_ADMIN_USER=${MEET_INITIAL_ADMIN_USER:-admin}
- MEET_INITIAL_ADMIN_PASSWORD=${MEET_INITIAL_ADMIN_PASSWORD:-admin}
- MEET_COOKIE_SECURE=false
- MEET_INITIAL_WEBHOOK_ENABLED=true
- MEET_INITIAL_WEBHOOK_URL=${MEET_INITIAL_WEBHOOK_URL:-http://host.docker.internal:6080/webhook}
- LIVEKIT_URL_PRIVATE=ws://openvidu:7880/
- LIVEKIT_API_KEY=${LIVEKIT_API_KEY}
- LIVEKIT_API_SECRET=${LIVEKIT_API_SECRET}
- CALL_PRIVATE_ACCESS=${CALL_PRIVATE_ACCESS:-false}
- CALL_USER=${CALL_USER:-}
- CALL_SECRET=${CALL_SECRET:-}
- CALL_RECORDING=${CALL_RECORDING:-}
- CALL_ADMIN_USER=${CALL_ADMIN_USER:-admin}
- CALL_ADMIN_SECRET=${CALL_ADMIN_SECRET:-admin}
- CALL_LOG_LEVEL=${CALL_LOG_LEVEL:-info}
- CALL_S3_BUCKET=${CALL_S3_BUCKET:-openvidu-appdata}
- CALL_S3_SERVICE_ENDPOINT=${CALL_S3_SERVICE_ENDPOINT:-http://minio:9000}
- CALL_S3_ACCESS_KEY=${MINIO_ACCESS_KEY}
- CALL_S3_SECRET_KEY=${MINIO_SECRET_KEY}
- CALL_AWS_REGION=${CALL_AWS_REGION:-us-east-1}
- CALL_S3_WITH_PATH_STYLE_ACCESS=${CALL_S3_WITH_PATH_STYLE_ACCESS:-true}
- MEET_S3_BUCKET=${MEET_S3_BUCKET:-openvidu-appdata}
- MEET_S3_SUBBUCKET=${MEET_S3_SUBBUCKET:-openvidu-meet}
- MEET_S3_SERVICE_ENDPOINT=${MEET_S3_SERVICE_ENDPOINT:-http://minio:9000}
- MEET_S3_ACCESS_KEY=${MINIO_ACCESS_KEY}
- MEET_S3_SECRET_KEY=${MINIO_SECRET_KEY}
- MEET_AWS_REGION=${MEET_AWS_REGION:-us-east-1}
- MEET_S3_WITH_PATH_STYLE_ACCESS=${MEET_S3_WITH_PATH_STYLE_ACCESS:-true}
- MEET_REDIS_HOST=redis
- MEET_REDIS_PORT=6379
- MEET_REDIS_PASSWORD=${REDIS_PASSWORD:-}
- MEET_REDIS_DB=0
volumes:
- ./scripts/entrypoint_default_app.sh:/scripts/entrypoint.sh
- ./scripts/entrypoint_openvidu_meet.sh:/scripts/entrypoint.sh
- ./scripts/utils.sh:/scripts/utils.sh
entrypoint: /bin/sh /scripts/entrypoint.sh
depends_on:
@ -196,7 +210,7 @@ services:
condition: service_completed_successfully
openvidu-v2compatibility:
image: docker.io/openvidu/openvidu-v2compatibility:3.3.0
image: docker.io/openvidu/openvidu-v2compatibility:main
platform: linux/amd64
restart: unless-stopped
container_name: openvidu-v2compatibility
@ -238,22 +252,27 @@ services:
condition: service_completed_successfully
ready-check:
image: docker.io/curlimages/curl:8.13.0
image: docker.io/openvidu/openvidu-operator:main
platform: linux/amd64
container_name: ready-check
restart: on-failure
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:-}
- V2COMPAT_OPENVIDU_SECRET=${LIVEKIT_API_SECRET:-}
- 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:-}
- LIVEKIT_API_KEY=${LIVEKIT_API_KEY:-}
- LIVEKIT_API_SECRET=${LIVEKIT_API_SECRET:-}
- V2COMPAT_OPENVIDU_SECRET=${LIVEKIT_API_SECRET:-}
- MEET_INITIAL_ADMIN_USER=${MEET_INITIAL_ADMIN_USER:-}
- MEET_INITIAL_ADMIN_PASSWORD=${MEET_INITIAL_ADMIN_PASSWORD:-}
- MEET_INITIAL_API_KEY=${MEET_INITIAL_API_KEY:-}
depends_on:
- openvidu
- ingress
@ -261,13 +280,9 @@ services:
- dashboard
- minio
- mongo
volumes:
- ./scripts/ready-check.sh:/scripts/ready-check.sh
- ./scripts/utils.sh:/scripts/utils.sh
command: /bin/sh /scripts/ready-check.sh
operator:
image: docker.io/openvidu/openvidu-operator:3.3.0
image: docker.io/openvidu/openvidu-operator:main
platform: linux/amd64
container_name: operator
restart: unless-stopped

View File

@ -27,6 +27,10 @@ storage:
# account_name: your_account_name
# account_key: your_account_key
# container_name: openvidu-appdata
# gcp:
# credentials_json: |
# your_credentials_json
# bucket: openvidu-appdata
# CPU cost for each type of Egress operation.
cpu_cost:
@ -38,3 +42,12 @@ cpu_cost:
participant_cpu_cost: 0.01
track_composite_cpu_cost: 0.01
track_cpu_cost: 0.01
openvidu:
# Allocation strategy for new egress requests
# - cpuload: the node with the lowest CPU load will be selected. Distributes the CPU load evenly across all nodes.
# - binpack: some node already hosting at least one Egress will be selected. Fills up nodes before assigning work to new ones.
allocation_strategy: cpuload
# Disables the automatic killing of the most expensive egress when CPU is overloaded.
# The default "false" value helps keeping the node stable, but may cause unexpected egress terminations under high load.
disable_cpu_overload_killer: false

View File

@ -56,7 +56,7 @@ webhook:
urls:
- http://host.docker.internal:4443/livekit/webhook # For OpenVidu 2 compatibility
- http://host.docker.internal:6080/livekit/webhook
- http://default-app:6080/livekit/webhook
- http://openvidu-meet:6080/livekit/webhook
ingress:
rtmp_base_url: rtmp://localhost:1935/rtmp
whip_base_url: http://localhost:8085/whip

View File

@ -1,7 +1,8 @@
#!/bin/sh
set -e
if [ "$LAN_PRIVATE_IP" != "none" ]; then
if [ "$LAN_PRIVATE_IP" != "" ] && [ "$LAN_MODE" = 'true' ]; then
echo "Using as NODE_IP: $LAN_PRIVATE_IP"
export NODE_IP="$LAN_PRIVATE_IP"
fi

View File

@ -2,7 +2,7 @@
. /scripts/utils.sh
URL=$(getDeploymentUrl)
URL=$(getDeploymentUrl ws)
export LIVEKIT_URL="${URL}"
/usr/local/bin/entrypoint.sh

View File

@ -1,70 +0,0 @@
#!/bin/sh
. /scripts/utils.sh
trap 'handle_sigint' SIGINT
handle_sigint() {
echo "SIGINT signal received, exiting..."
exit 1
}
wait_for_service() {
SERVICE_NAME=$1
SERVICE_URL=$2
shift 2
EXTRA=$@
if [ -n "$EXTRA" ]; then
until curl $EXTRA $SERVICE_URL > /dev/null; do
echo "Waiting for $SERVICE_NAME to start...";
sleep 1;
done;
else
until curl --silent --head --fail $SERVICE_URL > /dev/null; do
echo "Waiting for $SERVICE_NAME to start...";
sleep 1;
done;
fi;
}
wait_for_service 'OpenVidu' 'http://openvidu:7880'
wait_for_service 'Ingress' 'http://ingress:9091'
wait_for_service 'Egress' 'http://egress:9091'
wait_for_service 'Dashboard' 'http://dashboard:5000'
wait_for_service 'Minio' 'http://minio:9000/minio/health/live'
wait_for_service 'Minio Console' 'http://minio:9001/minio-console'
wait_for_service 'Mongo' 'http://mongo:27017' --connect-timeout 10 --silent
LAN_HTTP_URL=$(getDeploymentUrl http)
LAN_WS_URL=$(getDeploymentUrl ws)
for i in $(seq 1 10); do
echo 'Starting OpenVidu... Please be patient...'
sleep 1
done;
echo ''
echo ''
echo '========================================='
echo '🎉 OpenVidu is ready! 🎉'
echo '========================================='
echo ''
echo 'OpenVidu Server & LiveKit Server URLs:'
echo ''
echo ' - From this machine:'
echo ''
echo ' - http://localhost:7880'
echo ' - ws://localhost:7880'
echo ''
echo ' - From other devices in your LAN:'
echo ''
echo " - $LAN_HTTP_URL"
echo " - $LAN_WS_URL"
echo ''
echo '========================================='
echo ''
echo 'OpenVidu Developer UI (services and passwords):'
echo ''
echo ' - http://localhost:7880'
echo " - $LAN_HTTP_URL"
echo ''
echo '========================================='

View File

@ -1,6 +1,11 @@
#!/bin/sh
if [ -z "$LAN_PRIVATE_IP" ]; then
if [ "$LAN_MODE" = 'true' ] && [ "$USE_HTTPS" = 'false' ]; then
echo 'LAN_MODE cannot be "true" if USE_HTTPS is "false"'
exit 1
fi
if [ "$LAN_MODE" = 'true' ] && [ -z "$LAN_PRIVATE_IP" ]; then
echo '------------------------'
echo ''
echo 'LAN_PRIVATE_IP is required in the .env file.'
@ -14,7 +19,9 @@ if [ -z "$LAN_PRIVATE_IP" ]; then
echo 'If it can'\''t be found, you can manually set it in the .env file'
echo '------------------------'
exit 1
else
fi
if [ "$LAN_MODE" = 'true' ] && [ -n "$LAN_PRIVATE_IP" ]; then
# Check if the LAN_PRIVATE_IP is reachable
if ! ping -c 1 -W 1 "$LAN_PRIVATE_IP" > /dev/null; then
echo "ERROR: LAN_PRIVATE_IP $LAN_PRIVATE_IP is not reachable"
@ -26,15 +33,16 @@ else
echo " - MacOS: ./configure_lan_private_ip_macos.sh"
echo " - Windows: .\configure_lan_private_ip_windows.bat"
echo ""
echo " If you don't want to access OpenVidu through your LAN,"
echo " you can run without LAN_MODE enabled, simply set"
echo " the following variables in the .env file:"
echo " USE_HTTPS=false"
echo " LAN_MODE=false"
echo ""
exit 1
fi
fi
if [ "$LAN_MODE" = 'true' ] && [ "$USE_HTTPS" = 'false' ]; then
echo 'LAN_MODE cannot be "true" if USE_HTTPS is "false"'
exit 1
fi
# Prepare volumes
mkdir -p /minio/data
mkdir -p /mongo/data