diff --git a/.env b/.env index dc0f397..9dd5e01 100644 --- a/.env +++ b/.env @@ -6,7 +6,7 @@ USE_TLS=false # If true USE_TLS must be true LAN_MODE=false -# LAN IP Address to expose OpenVidu +# IP Address to expose OpenVidu in your LAN LAN_PRIVATE_IP=auto # LiveKit API Key and Secret used for apps to connect to the LiveKit server. diff --git a/caddy-proxy/templates/index.go b/caddy-proxy/templates/index.go index bc2d27d..71fff8b 100644 --- a/caddy-proxy/templates/index.go +++ b/caddy-proxy/templates/index.go @@ -78,8 +78,8 @@ const IndexTemplate = `
  • Minio Console: {{ .HttpUrl }}/minio-console
  • {{- if not .HttpsUrl }} -
  • OpenVidu Call: http://localdomain.com:4443/openvidu-call
  • +
  • OpenVidu Call: {{ .HttpUrl }}/openvidu-call
  • {{- end }}
    diff --git a/docker-compose.yaml b/docker-compose.yaml index f19f112..a07aabe 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -92,6 +92,8 @@ services: - LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-} ports: - "3478:3478/udp" + - "7881:7881/tcp" + - "7882-7892:7882-7892/udp" entrypoint: /bin/sh /scripts/entrypoint.sh command: --config /etc/livekit.yaml volumes: @@ -108,7 +110,7 @@ services: ports: - "1935:1935" - "8085:8085" - - "7885:7885/udp" + - "7895:7895/udp" environment: - INGRESS_CONFIG_FILE=/etc/ingress.yaml volumes: @@ -170,6 +172,13 @@ services: - LAN_DOMAIN=${LAN_DOMAIN:-} - LAN_MODE=${LAN_MODE:-false} - LAN_PRIVATE_IP=${LAN_PRIVATE_IP:-} + - OPENVIDU_SHIM_SECRET=${OPENVIDU_SHIM_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:-} depends_on: - openvidu - ingress diff --git a/ingress.yaml b/ingress.yaml index 5846e6a..cbe564d 100644 --- a/ingress.yaml +++ b/ingress.yaml @@ -16,4 +16,4 @@ logging: level: "" development: false rtc_config: - udp_port: 7885 + udp_port: 7895 diff --git a/livekit.yaml b/livekit.yaml index 26ce351..64a8142 100644 --- a/livekit.yaml +++ b/livekit.yaml @@ -12,8 +12,7 @@ bind_addresses: - "" rtc: tcp_port: 7881 - port_range_start: 50000 - port_range_end: 60000 + udp_port: 7882-7892 redis: address: redis:6379 username: "" diff --git a/openvidu_macos.sh b/openvidu_macos.sh index a9bf588..139a6aa 100644 --- a/openvidu_macos.sh +++ b/openvidu_macos.sh @@ -1 +1,81 @@ -#!/bin/bash +#!/bin/sh + +showHelp() { + echo "" + echo "Run OpenVidu Local Deployment in Linux" + echo "" + echo "-------" + echo " Usage " + echo "-------" + echo " $0 " + echo "" + echo "----------" + echo " Commands " + echo "----------" + echo " start - Start OpenVidu" + echo " stop - Stop OpenVidu" + echo " help - Show this help" + echo "" +} + +getPrivateIp() { + ip=$(ipconfig getifaddr $(route -n get default | grep interface | awk '{print $2}')) + echo "$ip" +} + +# Flags +START=false +STOP=false + +if [ -n "${1:-}" ]; then + while :; do + case "${1:-}" in + start) + START=true + shift 1 + break + ;; + stop) + STOP=true + shift 1 + break + ;; + help) + showHelp + exit 0 + ;; + *) + echo "Not a valid command. For usage information: \"$0 help\"" + exit 1 + ;; + esac + done +else + showHelp + exit +fi + +if [ "$START" = "true" ]; then + # Load environment variables + if [ -f .env ]; then + export $(grep -v '^#' .env | xargs) + fi + + if [ "$LAN_PRIVATE_IP" = "auto" ]; then + LAN_PRIVATE_IP="$(getPrivateIp)" + if [ -z "$LAN_PRIVATE_IP" ]; then + LAN_PRIVATE_IP=none + fi + export LAN_PRIVATE_IP + fi + + echo "Starting OpenVidu..." + export RUN_WITH_SCRIPT=true + docker compose down --volumes + docker compose up +fi + +if [ "$STOP" = "true" ]; then + echo "Stopping OpenVidu" + docker compose down --volumes +fi diff --git a/openvidu_windows.bat b/openvidu_windows.bat new file mode 100644 index 0000000..7ea6632 --- /dev/null +++ b/openvidu_windows.bat @@ -0,0 +1,80 @@ +@echo off +setlocal enabledelayedexpansion + +:: Function to show help +call :showHelp || exit /b 1 +goto :main + +:showHelp +echo. +echo Run OpenVidu Local Deployment in Windows +echo. +echo ------- +echo Usage +echo ------- +echo %~nx0 ^ +echo. +echo ---------- +echo Commands +echo ---------- +echo start - Start OpenVidu +echo stop - Stop OpenVidu +echo help - Show this help +echo. +exit /b 0 + +:getPrivateIp +for /f "tokens=4" %%i in ('route print ^| findstr "\<0.0.0.0\>"') do ( + set ip=%%i + goto :eof +) +goto :eof + +:main +if "%1"=="" ( + call :showHelp + goto :eof +) +if /i "%1"=="start" ( + call :startOpenVidu + goto :eof +) +if /i "%1"=="stop" ( + call :stopOpenVidu + goto :eof +) +if /i "%1"=="help" ( + call :showHelp + goto :eof +) +echo Not a valid command. For usage information: ".\%~nx0 help" +exit /b 0 + + +:startOpenVidu +if exist .env ( + for /f "usebackq tokens=*" %%a in (".env") do ( + echo %%a | findstr /v /b /c:"#" >nul + if not errorlevel 1 set %%a + ) +) + +if "%LAN_PRIVATE_IP%"=="auto" ( + call :getPrivateIp || exit /b 1 + if defined ip ( + set LAN_PRIVATE_IP=!ip! + ) else ( + set LAN_PRIVATE_IP=none + ) +) + +echo Starting OpenVidu... +set RUN_WITH_SCRIPT=true +docker-compose down --volumes || exit /b 1 +docker-compose up || exit /b 1 +exit /b 0 + +:stopOpenVidu +echo Stopping OpenVidu... +docker-compose down --volumes || exit /b 1 +exit /b 0 diff --git a/openvidu_windows.ps1 b/openvidu_windows.ps1 deleted file mode 100644 index e69de29..0000000 diff --git a/scripts/ready-check.sh b/scripts/ready-check.sh index 2e06ad5..6cb5651 100644 --- a/scripts/ready-check.sh +++ b/scripts/ready-check.sh @@ -2,6 +2,13 @@ . /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 @@ -38,7 +45,52 @@ echo '' echo '' echo '------------------------' echo 'OpenVidu is ready!' -echo "Open $URL in your browser" +echo '------------------------' +echo '' +echo '🎉🎉🎉 Welcome Page: http://localhost:8090' 🎉🎉🎉 +echo '' +echo '------------------------' +if [ "${USE_TLS}" = 'true' ]; then + echo '========================' + echo 'HTTPS services:' + echo '========================' + if [ "${LAN_MODE}" = 'true' ]; then + echo 'NOTE: You can access all of these services on any device' + echo 'connected to the same network as this machine' + fi + echo "- OpenVidu and LiveKit API: ${URL}" + echo "- OpenVidu Dashboard: ${URL}/dashboard" + echo "- Minio Console: ${URL}/minio-console" + echo "- OpenVidu Call: ${URL}/openvidu-call" + echo "- Your App*: ${URL}" + echo " *: Any application deployed at port 5442 will be accessible through ${URL}" +fi +echo '' +echo '========================' +echo 'HTTP services:' +echo '========================' +echo "- OpenVidu and LiveKit API: http://localhost:8090" +echo "- OpenVidu Dashboard: http://localhost:8090/dashboard" +echo "- Minio Console: http://localhost:8090/minio-console" +if [ "${USE_TLS}" = 'false' ]; then + echo '- OpenVidu Call: http://localhost:8090/openvidu-call' +fi +echo '' +echo '========================' +echo 'Credentials:' +echo '========================' +echo 'OpenVidu Basic Auth:' +echo ' - Username: OPENVIDUAPP' +echo " - Password: ${OPENVIDU_SHIM_SECRET}" +echo 'LiveKit API:' +echo " - Username: ${LIVEKIT_API_KEY}" +echo " - Password: ${LIVEKIT_API_SECRET}" +echo 'OpenVidu Dashboard:' +echo " - Username: ${DASHBOARD_ADMIN_USERNAME}" +echo " - Password: ${DASHBOARD_ADMIN_PASSWORD}" +echo 'Minio:' +echo " - Access Key: ${MINIO_ACCESS_KEY}" +echo " - Secret Key: ${MINIO_SECRET_KEY}" echo '------------------------' echo '' echo '' diff --git a/scripts/setup.sh b/scripts/setup.sh index 00f3f1b..50e8996 100644 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -8,7 +8,7 @@ if [ "$RUN_WITH_SCRIPT" = 'false' ]; then echo '' echo ' - Linux: ./openvidu_linux.sh start' echo ' - MacOS: ./openvidu_macos.sh start' - echo ' - Windows: ./openvidu_windows.ps1' + echo ' - Windows: ./openvidu_windows.bat start' echo '' echo '------------------------' exit 1