1、简介

OpenVidu Server(openvidu-server):是openvidu平台的大脑,负责信号层。

Kurento Media Server(kms):openvidu平台的核心,负责媒体层。

Coturm(coturn):用于允许在特殊网络上与浏览器媒体交互的服务器。

Redis(redis):管理Coturn服务器上的用户

Nginx(nginx):反向代理。用于配置SSL证书并且允许Openvidu服务器与应用通过443端口服务。

Videoconference Application(app):openvidu会话应用或者其他应用。可以禁用。

2、安装

sudo su切换到su用户,执行下面脚本

curl https://s3-eu-west-1.amazonaws.com/aws.openvidu.io/install_openvidu_latest.sh | bash

会因为网络原因执行失败。可以先下载脚本,看其逻辑。

install_openvidu_latest.sh脚本如下

#!/usr/bin/env bash# Global variables
OPENVIDU_FOLDER=openvidu
OPENVIDU_VERSION=v2.20.0
OPENVIDU_UPGRADABLE_VERSION="2.19"
DOWNLOAD_URL=https://raw.githubusercontent.com/OpenVidu/openvidu/${OPENVIDU_VERSION}fatal_error() {printf "\n     =======隆ERROR!======="printf "\n     %s" "$1"printf "\n"exit 0
}new_ov_installation() {printf '\n'printf '\n     ======================================='printf '\n          Install OpenVidu CE %s' "${OPENVIDU_VERSION}"printf '\n     ======================================='printf '\n'# Create folder openvidu-docker-composeprintf '\n     => Creating folder '%s'...' "${OPENVIDU_FOLDER}"mkdir "${OPENVIDU_FOLDER}" || fatal_error "Error while creating the folder '${OPENVIDU_FOLDER}'"# Download necessary filesprintf '\n     => Downloading OpenVidu CE files:'curl --silent ${DOWNLOAD_URL}/openvidu-server/deployments/ce/docker-compose/.env \--output "${OPENVIDU_FOLDER}/.env" || fatal_error "Error when downloading the file '.env'"printf '\n          - .env'curl --silent ${DOWNLOAD_URL}/openvidu-server/deployments/ce/docker-compose/docker-compose.override.yml \--output "${OPENVIDU_FOLDER}/docker-compose.override.yml" || fatal_error "Error when downloading the file 'docker-compose.override.yml'"printf '\n          - docker-compose.override.yml'curl --silent ${DOWNLOAD_URL}/openvidu-server/deployments/ce/docker-compose/docker-compose.yml \--output "${OPENVIDU_FOLDER}/docker-compose.yml" || fatal_error "Error when downloading the file 'docker-compose.yml'"printf '\n          - docker-compose.yml'curl --silent ${DOWNLOAD_URL}/openvidu-server/deployments/ce/docker-compose/openvidu \--output "${OPENVIDU_FOLDER}/openvidu" || fatal_error "Error when downloading the file 'openvidu'"printf '\n          - openvidu'# Add execution permissionsprintf "\n     => Adding permission to 'openvidu' program..."chmod +x "${OPENVIDU_FOLDER}/openvidu" || fatal_error "Error while adding permission to 'openvidu' program"# Change recording folder with all permissionsprintf "\n     => Adding permission to 'recordings' folder..."mkdir -p "${OPENVIDU_FOLDER}/recordings"chmod 777 "${OPENVIDU_FOLDER}/recordings"# Create own certificated folderprintf "\n     => Creating folder 'owncert'..."mkdir "${OPENVIDU_FOLDER}/owncert" || fatal_error "Error while creating the folder 'owncert'"# Create vhost nginx folderprintf "\n     => Creating folder 'custom-nginx-vhosts'..."mkdir "${OPENVIDU_FOLDER}/custom-nginx-vhosts" || fatal_error "Error while creating the folder 'custom-nginx-vhosts'"# Ready to useprintf '\n'printf '\n'printf '\n     ======================================='printf '\n     Openvidu Platform successfully installed.'printf '\n     ======================================='printf '\n'printf '\n     1. Go to openvidu folder:'printf '\n     $ cd openvidu'printf '\n'printf '\n     2. Configure DOMAIN_OR_PUBLIC_IP and OPENVIDU_SECRET in .env file:'printf '\n     $ nano .env'printf '\n'printf '\n     3. Start OpenVidu'printf '\n     $ ./openvidu start'printf '\n'printf '\n     For more information, check:'printf '\n     https://docs.openvidu.io/en/%s/deployment/deploying-on-premises/' "${OPENVIDU_VERSION//v}"printf '\n'printf '\n'exit 0
}upgrade_ov() {# Search local Openvidu installationprintf '\n'printf '\n     ============================================'printf '\n       Search Previous Installation of Openvidu'printf '\n     ============================================'printf '\n'SEARCH_IN_FOLDERS=("${PWD}""/opt/${OPENVIDU_FOLDER}")for folder in "${SEARCH_IN_FOLDERS[@]}"; doprintf "\n     => Searching in '%s' folder..." "${folder}"if [ -f "${folder}/docker-compose.yml" ]; thenOPENVIDU_PREVIOUS_FOLDER="${folder}"printf "\n     => Found installation in folder '%s'" "${folder}"breakfidone[ -z "${OPENVIDU_PREVIOUS_FOLDER}" ] && fatal_error "No previous Openvidu installation found"# Upgrade OpenviduOPENVIDU_PREVIOUS_VERSION=$(grep 'Openvidu Version:' "${OPENVIDU_PREVIOUS_FOLDER}/docker-compose.yml" | awk '{ print $4 }')[ -z "${OPENVIDU_PREVIOUS_VERSION}" ] && fatal_error "Can't find previous OpenVidu version"# In this point using the variable 'OPENVIDU_PREVIOUS_VERSION' we can verify if the upgrade is# posible or not. If it is not posible launch a warning and stop the upgrade.if [[ "${OPENVIDU_PREVIOUS_VERSION}" != "${OPENVIDU_UPGRADABLE_VERSION}."* ]]; thenfatal_error "You can't update from version ${OPENVIDU_PREVIOUS_VERSION} to ${OPENVIDU_VERSION}.\nNever upgrade across multiple major versions."fiprintf '\n'printf '\n     ======================================='printf '\n       Upgrade OpenVidu CE %s to %s' "${OPENVIDU_PREVIOUS_VERSION}" "${OPENVIDU_VERSION}"printf '\n     ======================================='printf '\n'ROLL_BACK_FOLDER="${OPENVIDU_PREVIOUS_FOLDER}/.old-${OPENVIDU_PREVIOUS_VERSION}"TMP_FOLDER="${OPENVIDU_PREVIOUS_FOLDER}/tmp"ACTUAL_FOLDER="$PWD"USE_OV_CALL=$(grep -E '^        image: openvidu/openvidu-call:.*$' "${OPENVIDU_PREVIOUS_FOLDER}/docker-compose.override.yml" | tr -d '[:space:]')printf "\n     Creating rollback folder '%s'..." ".old-${OPENVIDU_PREVIOUS_VERSION}"mkdir "${ROLL_BACK_FOLDER}" || fatal_error "Error while creating the folder '.old-${OPENVIDU_PREVIOUS_VERSION}'"printf "\n     Creating temporal folder 'tmp'..."mkdir "${TMP_FOLDER}" || fatal_error "Error while creating the folder 'temporal'"# Download necessary filesprintf '\n     => Downloading new OpenVidu CE files:'curl --silent ${DOWNLOAD_URL}/openvidu-server/deployments/ce/docker-compose/docker-compose.yml \--output "${TMP_FOLDER}/docker-compose.yml" || fatal_error "Error when downloading the file 'docker-compose.yml'"printf '\n          - docker-compose.yml'curl --silent ${DOWNLOAD_URL}/openvidu-server/deployments/ce/docker-compose/docker-compose.override.yml \--output "${TMP_FOLDER}/docker-compose.override.yml" || fatal_error "Error when downloading the file 'docker-compose.override.yml'"printf "\n          - docker-compose.override.yml"curl --silent ${DOWNLOAD_URL}/openvidu-server/deployments/ce/docker-compose/.env \--output "${TMP_FOLDER}/.env" || fatal_error "Error when downloading the file '.env'"printf '\n          - .env'curl --silent ${DOWNLOAD_URL}/openvidu-server/deployments/ce/docker-compose/openvidu \--output "${TMP_FOLDER}/openvidu" || fatal_error "Error when downloading the file 'openvidu'"printf '\n          - openvidu'# Downloading new images and stopped actual Openviduprintf '\n     => Downloading new images...'printf '\n'sleep 1printf "\n          => Moving to 'tmp' folder..."printf '\n'cd "${TMP_FOLDER}" || fatal_error "Error when moving to 'tmp' folder"docker-compose pull || trueprintf '\n     => Stopping Openvidu...'printf '\n'sleep 1printf "\n          => Moving to 'openvidu' folder..."printf '\n'cd "${OPENVIDU_PREVIOUS_FOLDER}" || fatal_error "Error when moving to 'openvidu' folder"docker-compose down || trueprintf '\n'printf '\n     => Moving to working dir...'cd "${ACTUAL_FOLDER}" || fatal_error "Error when moving to working dir"# Move old files to rollback folderprintf '\n     => Moving previous installation files to rollback folder:'mv "${OPENVIDU_PREVIOUS_FOLDER}/docker-compose.yml" "${ROLL_BACK_FOLDER}" || fatal_error "Error while moving previous 'docker-compose.yml'"printf '\n          - docker-compose.yml'if [ -n "${USE_OV_CALL}" ]; thenmv "${OPENVIDU_PREVIOUS_FOLDER}/docker-compose.override.yml" "${ROLL_BACK_FOLDER}" || fatal_error "Error while moving previous 'docker-compose.override.yml'"printf '\n          - docker-compose.override.yml'fimv "${OPENVIDU_PREVIOUS_FOLDER}/openvidu" "${ROLL_BACK_FOLDER}" || fatal_error "Error while moving previous 'openvidu'"printf '\n          - openvidu'cp "${OPENVIDU_PREVIOUS_FOLDER}/.env" "${ROLL_BACK_FOLDER}" || fatal_error "Error while moving previous '.env'"printf '\n          - .env'if [ -d "${OPENVIDU_PREVIOUS_FOLDER}/custom-nginx-vhosts" ]; thenmv "${OPENVIDU_PREVIOUS_FOLDER}/custom-nginx-vhosts" "${ROLL_BACK_FOLDER}" || fatal_error "Error while moving previous directory 'custom-nginx-vhosts'"printf '\n          - custom-nginx-vhosts'fi# Move tmp files to Openviduprintf '\n     => Updating files:'mv "${TMP_FOLDER}/docker-compose.yml" "${OPENVIDU_PREVIOUS_FOLDER}" || fatal_error "Error while updating 'docker-compose.yml'"printf '\n          - docker-compose.yml'if [ -n "${USE_OV_CALL}" ]; thenmv "${TMP_FOLDER}/docker-compose.override.yml" "${OPENVIDU_PREVIOUS_FOLDER}" || fatal_error "Error while updating 'docker-compose.override.yml'"printf '\n          - docker-compose.override.yml'elsemv "${TMP_FOLDER}/docker-compose.override.yml" "${OPENVIDU_PREVIOUS_FOLDER}/docker-compose.override.yml-${OPENVIDU_VERSION}" || fatal_error "Error while updating 'docker-compose.override.yml'"printf '\n          - docker-compose.override.yml-%s' "${OPENVIDU_VERSION}"fimv "${TMP_FOLDER}/.env" "${OPENVIDU_PREVIOUS_FOLDER}/.env-${OPENVIDU_VERSION}" || fatal_error "Error while moving previous '.env'"printf '\n          - .env-%s' "${OPENVIDU_VERSION}"mv "${TMP_FOLDER}/openvidu" "${OPENVIDU_PREVIOUS_FOLDER}" || fatal_error "Error while updating 'openvidu'"printf '\n          - openvidu'printf "\n     => Deleting 'tmp' folder"rm -rf "${TMP_FOLDER}" || fatal_error "Error deleting 'tmp' folder"# Add execution permissionsprintf "\n     => Adding permission to 'openvidu' program..."chmod +x "${OPENVIDU_PREVIOUS_FOLDER}/openvidu" || fatal_error "Error while adding permission to 'openvidu' program"# Change recording folder with all permissionsprintf "\n     => Adding permission to 'recordings' folder..."mkdir -p "${OPENVIDU_PREVIOUS_FOLDER}/recordings"chmod 777 "${OPENVIDU_PREVIOUS_FOLDER}/recordings"# Define old mode: On Premise or Cloud FormationOLD_MODE=$(grep -E "Installation Mode:.*$" "${ROLL_BACK_FOLDER}/docker-compose.yml" | awk '{ print $4,$5 }')[ -n "${OLD_MODE}" ] && sed -i -r "s/Installation Mode:.+/Installation Mode: ${OLD_MODE}/" "${OPENVIDU_PREVIOUS_FOLDER}/docker-compose.yml"# Ready to useprintf '\n'printf '\n'printf '\n     ================================================'printf "\n     Openvidu successfully upgraded to version %s" "${OPENVIDU_VERSION}"printf '\n     ================================================'printf '\n'printf "\n     1. A new file 'docker-compose.yml' has been created with the new OpenVidu %s services" "${OPENVIDU_VERSION}"printf '\n'printf "\n     2. The previous file '.env' remains intact, but a new file '.env-%s' has been created." "${OPENVIDU_VERSION}"printf "\n     Transfer any configuration you wish to keep in the upgraded version from '.env' to '.env-%s'." "${OPENVIDU_VERSION}"printf "\n     When you are OK with it, rename and leave as the only '.env' file of the folder the new '.env-%s'." "${OPENVIDU_VERSION}"printf '\n'printf "\n     3. If you were using Openvidu Call application, it has been automatically updated in file 'docker-compose.override.yml'."printf "\n     However, if you were using your own application, a file called 'docker-compose.override.yml-%s'" "${OPENVIDU_VERSION}"printf "\n     has been created with the latest version of Openvidu Call. If you don't plan to use it you can delete it."printf '\n'printf '\n     4. Start new version of Openvidu'printf '\n     $ ./openvidu start'printf '\n'printf "\n     If you want to rollback, all the files from the previous installation have been copied to folder '.old-%s'" "${OPENVIDU_PREVIOUS_VERSION}"printf '\n'printf '\n     For more information, check:'printf '\n     https://docs.openvidu.io/en/%s/deployment/deploying-on-premises/' "${OPENVIDU_VERSION//v}"printf '\n     https://docs.openvidu.io/en/%s/deployment/upgrading/' "${OPENVIDU_VERSION//v}"printf '\n'printf '\n'
}# Check docker and docker-compose installation
if ! command -v docker > /dev/null; thenecho "You don't have docker installed, please install it and re-run the command"exit 0
fiif ! command -v docker-compose > /dev/null; thenecho "You don't have docker-compose installed, please install it and re-run the command"exit 0
elseCOMPOSE_VERSION=$(docker-compose version --short | sed "s/-rc[0-9]*//")if ! printf '%s\n%s\n' "1.24" "$COMPOSE_VERSION" | sort -V -C; thenecho "You need a docker-compose version equal or higher than 1.24, please update your docker-compose and re-run the command"; \exit 0fi
fi# Check type of installation
if [[ -n "$1" && "$1" == "upgrade" ]]; thenupgrade_ov
elsenew_ov_installation
fi

依次下载

https://raw.githubusercontent.com/OpenVidu/openvidu/v2.20.0/openvidu-server/deployments/ce/docker-compose/.env

https://raw.githubusercontent.com/OpenVidu/openvidu/v2.20.0//openvidu-server/deployments/ce/docker-compose/docker-compose.override.yml

https://raw.githubusercontent.com/OpenVidu/openvidu/v2.20.0/openvidu-server/deployments/ce/docker-compose/docker-compose.yml

https://raw.githubusercontent.com/OpenVidu/openvidu/v2.20.0/openvidu-server/deployments/ce/docker-compose/openvidu

其对应脚本为

.env为

# OpenVidu configuration
# ----------------------
# Documentation: https://docs.openvidu.io/en/stable/reference-docs/openvidu-config/# NOTE: This file doesn't need to quote assignment values, like most shells do.
# All values are stored as-is, even if they contain spaces, so don't quote them.# Domain name. If you do not have one, the public IP of the machine.
# For example: 198.51.100.1, or openvidu.example.com
DOMAIN_OR_PUBLIC_IP=# OpenVidu SECRET used for apps to connect to OpenVidu server and users to access to OpenVidu Dashboard
OPENVIDU_SECRET=# Certificate type:
# - selfsigned:  Self signed certificate. Not recommended for production use.
#                Users will see an ERROR when connected to web page.
# - owncert:     Valid certificate purchased in a Internet services company.
#                Please put the certificates files inside folder ./owncert
#                with names certificate.key and certificate.cert
# - letsencrypt: Generate a new certificate using letsencrypt. Please set the
#                required contact email for Let's Encrypt in LETSENCRYPT_EMAIL
#                variable.
CERTIFICATE_TYPE=selfsigned# If CERTIFICATE_TYPE=letsencrypt, you need to configure a valid email for notifications
LETSENCRYPT_EMAIL=user@example.com# Proxy configuration
# If you want to change the ports on which openvidu listens, uncomment the following lines# Allows any request to http://DOMAIN_OR_PUBLIC_IP:HTTP_PORT/ to be automatically
# redirected to https://DOMAIN_OR_PUBLIC_IP:HTTPS_PORT/.
# WARNING: the default port 80 cannot be changed during the first boot
# if you have chosen to deploy with the option CERTIFICATE_TYPE=letsencrypt
# HTTP_PORT=80# Changes the port of all services exposed by OpenVidu.
# SDKs, REST clients and browsers will have to connect to this port
# HTTPS_PORT=443# Old paths are considered now deprecated, but still supported by default.
# OpenVidu Server will log a WARN message every time a deprecated path is called, indicating
# the new path that should be used instead. You can set property SUPPORT_DEPRECATED_API=false
# to stop allowing the use of old paths.
# Default value is true
# SUPPORT_DEPRECATED_API=true# If true request to with www will be redirected to non-www requests
# Default value is false
# REDIRECT_WWW=false# How many workers to configure in nginx proxy.
# The more workers, the more requests will be handled
# Default value is 10240
# WORKER_CONNECTIONS=10240# Access restrictions
# In this section you will be able to restrict the IPs from which you can access to
# Openvidu API and the Administration Panel
# WARNING! If you touch this configuration you can lose access to the platform from some IPs.
# Use it carefully.# This section limits access to the /dashboard (OpenVidu CE) and /inspector (OpenVidu Pro) pages.
# The form for a single IP or an IP range is:
# ALLOWED_ACCESS_TO_DASHBOARD=198.51.100.1 and ALLOWED_ACCESS_TO_DASHBOARD=198.51.100.0/24
# To limit multiple IPs or IP ranges, separate by commas like this:
# ALLOWED_ACCESS_TO_DASHBOARD=198.51.100.1, 198.51.100.0/24
# ALLOWED_ACCESS_TO_DASHBOARD=# This section limits access to the Openvidu REST API.
# The form for a single IP or an IP range is:
# ALLOWED_ACCESS_TO_RESTAPI=198.51.100.1 and ALLOWED_ACCESS_TO_RESTAPI=198.51.100.0/24
# To limit multiple IPs or or IP ranges, separate by commas like this:
# ALLOWED_ACCESS_TO_RESTAPI=198.51.100.1, 198.51.100.0/24
# ALLOWED_ACCESS_TO_RESTAPI=# Whether to enable recording module or not
OPENVIDU_RECORDING=false# Use recording module with debug mode.
OPENVIDU_RECORDING_DEBUG=false# Openvidu Folder Record used for save the openvidu recording videos. Change it
# with the folder you want to use from your host.
OPENVIDU_RECORDING_PATH=/opt/openvidu/recordings# System path where OpenVidu Server should look for custom recording layouts
OPENVIDU_RECORDING_CUSTOM_LAYOUT=/opt/openvidu/custom-layout# if true any client can connect to
# https://OPENVIDU_SERVER_IP:OPENVIDU_PORT/recordings/any_session_file.mp4
# and access any recorded video file. If false this path will be secured with
# OPENVIDU_SECRET param just as OpenVidu Server dashboard at
# https://OPENVIDU_SERVER_IP:OPENVIDU_PORT
# Values: true | false
OPENVIDU_RECORDING_PUBLIC_ACCESS=false# Which users should receive the recording events in the client side
# (recordingStarted, recordingStopped). Can be all (every user connected to
# the session), publisher_moderator (users with role 'PUBLISHER' or
# 'MODERATOR'), moderator (only users with role 'MODERATOR') or none
# (no user will receive these events)
OPENVIDU_RECORDING_NOTIFICATION=publisher_moderator# Timeout in seconds for recordings to automatically stop (and the session involved to be closed)
# when conditions are met: a session recording is started but no user is publishing to it or a session
# is being recorded and last user disconnects. If a user publishes within the timeout in either case,
# the automatic stop of the recording is cancelled
# 0 means no timeout
OPENVIDU_RECORDING_AUTOSTOP_TIMEOUT=120# Maximum video bandwidth sent from clients to OpenVidu Server, in kbps.
# 0 means unconstrained
OPENVIDU_STREAMS_VIDEO_MAX_RECV_BANDWIDTH=1000# Minimum video bandwidth sent from clients to OpenVidu Server, in kbps.
# 0 means unconstrained
OPENVIDU_STREAMS_VIDEO_MIN_RECV_BANDWIDTH=300# Maximum video bandwidth sent from OpenVidu Server to clients, in kbps.
# 0 means unconstrained
OPENVIDU_STREAMS_VIDEO_MAX_SEND_BANDWIDTH=1000# Minimum video bandwidth sent from OpenVidu Server to clients, in kbps.
# 0 means unconstrained
OPENVIDU_STREAMS_VIDEO_MIN_SEND_BANDWIDTH=300# All sessions of OpenVidu will try to force this codec. If OPENVIDU_STREAMS_ALLOW_TRANSCODING=true
# when a codec can not be forced, transcoding will be allowed
# Values: VP8, H264, NONE
# Default value is VP8
# OPENVIDU_STREAMS_FORCED_VIDEO_CODEC=VP8# Allow transcoding if codec specified in OPENVIDU_STREAMS_FORCED_VIDEO_CODEC can not be applied
# Values: true | false
# Default value is false
# OPENVIDU_STREAMS_ALLOW_TRANSCODING=false# true to enable OpenVidu Webhook service. false' otherwise
# Values: true | false
OPENVIDU_WEBHOOK=false# HTTP endpoint where OpenVidu Server will send Webhook HTTP POST messages
# Must be a valid URL: http(s)://ENDPOINT
#OPENVIDU_WEBHOOK_ENDPOINT=# List of headers that OpenVidu Webhook service will attach to HTTP POST messages
#OPENVIDU_WEBHOOK_HEADERS=# List of events that will be sent by OpenVidu Webhook service
# Default value is all available events
OPENVIDU_WEBHOOK_EVENTS=[sessionCreated,sessionDestroyed,participantJoined,participantLeft,webrtcConnectionCreated,webrtcConnectionDestroyed,recordingStatusChanged,filterEventDispatched,mediaNodeStatusChanged,nodeCrashed]# How often the garbage collector of non active sessions runs.
# This helps cleaning up sessions that have been initialized through
# REST API (and maybe tokens have been created for them) but have had no users connected.
# Default to 900s (15 mins). 0 to disable non active sessions garbage collector
OPENVIDU_SESSIONS_GARBAGE_INTERVAL=900# Minimum time in seconds that a non active session must have been in existence
# for the garbage collector of non active sessions to remove it. Default to 3600s (1 hour).
# If non active sessions garbage collector is disabled
# (property 'OPENVIDU_SESSIONS_GARBAGE_INTERVAL' to 0) this property is ignored
OPENVIDU_SESSIONS_GARBAGE_THRESHOLD=3600# Call Detail Record enabled
# Whether to enable Call Detail Record or not
# Values: true | false
OPENVIDU_CDR=false# Path where the cdr log files are hosted
OPENVIDU_CDR_PATH=/opt/openvidu/cdr# Kurento Media Server image
# --------------------------
# Docker hub kurento media server: https://hub.docker.com/r/kurento/kurento-media-server
# Uncomment the next line and define this variable with KMS image that you want use
# KMS_IMAGE=kurento/kurento-media-server:6.16.0# Kurento Media Server Level logs
# -------------------------------
# Uncomment the next line and define this variable to change
# the verbosity level of the logs of KMS
# Documentation: https://doc-kurento.readthedocs.io/en/stable/features/logging.html
# KMS_DOCKER_ENV_GST_DEBUG=# Openvidu Server Level logs
# --------------------------
# Uncomment the next line and define this variable to change
# the verbosity level of the logs of Openvidu Service
# RECOMENDED VALUES: INFO for normal logs DEBUG for more verbose logs
# OV_CE_DEBUG_LEVEL=INFO# Java Options
# --------------------------
# Uncomment the next line and define this to add
# options to java command
# Documentation: https://docs.oracle.com/cd/E37116_01/install.111210/e23737/configuring_jvm.htm#OUDIG00058
# JAVA_OPTIONS=-Xms2048m -Xmx4096m -Duser.timezone=UTC

docker-compose.override.yml为

version: '3.1'services:# --------------------------------------------------------------##   Change this if your want use your own application.#   It's very important expose your application in port 5442#   and use the http protocol.##   Default Application##   Openvidu-Call Version: 2.20.0## --------------------------------------------------------------app:image: openvidu/openvidu-call:2.20.0restart: on-failurenetwork_mode: hostenvironment:- SERVER_PORT=5442- OPENVIDU_URL=http://localhost:5443- OPENVIDU_SECRET=${OPENVIDU_SECRET}- CALL_OPENVIDU_CERTTYPE=${CERTIFICATE_TYPE}logging:options:max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}"

docker-compose.yml为

# ------------------------------------------------------------------------------
#
#    DO NOT MODIFY THIS FILE !!!
#
#    Configuration properties should be specified in .env file
#
#    Application based on OpenVidu should be specified in
#    docker-compose.override.yml file
#
#    This docker-compose file coordinates all services of OpenVidu CE Platform
#
#    This file will be overridden when update OpenVidu Platform
#
#    Openvidu Version: 2.20.0
#
#    Installation Mode: On Premises
#
# ------------------------------------------------------------------------------version: '3.1'services:openvidu-server:image: openvidu/openvidu-server:2.20.0restart: on-failurenetwork_mode: hostentrypoint: ['/usr/local/bin/entrypoint.sh']volumes:- /var/run/docker.sock:/var/run/docker.sock- ${OPENVIDU_RECORDING_PATH}:${OPENVIDU_RECORDING_PATH}- ${OPENVIDU_RECORDING_CUSTOM_LAYOUT}:${OPENVIDU_RECORDING_CUSTOM_LAYOUT}- ${OPENVIDU_CDR_PATH}:${OPENVIDU_CDR_PATH}env_file:- .envenvironment:- SERVER_SSL_ENABLED=false- SERVER_PORT=5443- KMS_URIS=["ws://localhost:8888/kurento"]- COTURN_REDIS_IP=127.0.0.1- COTURN_REDIS_PASSWORD=${OPENVIDU_SECRET}- COTURN_IP=${COTURN_IP:-auto-ipv4}logging:options:max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}"kms:image: ${KMS_IMAGE:-kurento/kurento-media-server:6.16.0}restart: alwaysnetwork_mode: hostulimits:core: -1volumes:- /opt/openvidu/kms-crashes:/opt/openvidu/kms-crashes- ${OPENVIDU_RECORDING_PATH}:${OPENVIDU_RECORDING_PATH}- /opt/openvidu/kurento-logs:/opt/openvidu/kurento-logsenvironment:- KMS_MIN_PORT=40000- KMS_MAX_PORT=57000- GST_DEBUG=${KMS_DOCKER_ENV_GST_DEBUG:-}- KURENTO_LOG_FILE_SIZE=${KMS_DOCKER_ENV_KURENTO_LOG_FILE_SIZE:-100}- KURENTO_LOGS_PATH=/opt/openvidu/kurento-logslogging:options:max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}"redis:image: openvidu/openvidu-redis:3.0.0restart: alwaysnetwork_mode: hostenvironment:- REDIS_PASSWORD=${OPENVIDU_SECRET}logging:options:max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}"coturn:image: openvidu/openvidu-coturn:5.0.0restart: on-failurenetwork_mode: hostenvironment:- REDIS_IP=127.0.0.1- DB_NAME=0- DB_PASSWORD=${OPENVIDU_SECRET}command:- --log-file=stdout- --listening-port=3478- --fingerprint- --lt-cred-mech- --min-port=57001- --max-port=65535- --realm=openvidu- --verboselogging:options:max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}"nginx:image: openvidu/openvidu-proxy:7.0.0restart: on-failurenetwork_mode: hostvolumes:- ./certificates:/etc/letsencrypt- ./owncert:/owncert- ./custom-nginx-vhosts:/etc/nginx/vhost.d/- ${OPENVIDU_RECORDING_CUSTOM_LAYOUT}:/opt/openvidu/custom-layoutenvironment:- DOMAIN_OR_PUBLIC_IP=${DOMAIN_OR_PUBLIC_IP}- CERTIFICATE_TYPE=${CERTIFICATE_TYPE}- LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}- PROXY_HTTP_PORT=${HTTP_PORT:-}- PROXY_HTTPS_PORT=${HTTPS_PORT:-}- PROXY_HTTPS_PROTOCOLS=${HTTPS_PROTOCOLS:-}- PROXY_HTTPS_CIPHERS=${HTTPS_CIPHERS:-}- PROXY_HTTPS_HSTS=${HTTPS_HSTS:-}- ALLOWED_ACCESS_TO_DASHBOARD=${ALLOWED_ACCESS_TO_DASHBOARD:-}- ALLOWED_ACCESS_TO_RESTAPI=${ALLOWED_ACCESS_TO_RESTAPI:-}- PROXY_MODE=CE- WITH_APP=true- SUPPORT_DEPRECATED_API=${SUPPORT_DEPRECATED_API:-true}- REDIRECT_WWW=${REDIRECT_WWW:-false}- WORKER_CONNECTIONS=${WORKER_CONNECTIONS:-10240}- PUBLIC_IP=${PROXY_PUBLIC_IP:-auto-ipv4}logging:options:max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}"

openvidu为

#!/bin/bashupgrade_ov() {UPGRADE_SCRIPT_URL="https://s3-eu-west-1.amazonaws.com/aws.openvidu.io/install_openvidu_OVVERSION.sh"HTTP_STATUS=$(curl -s -o /dev/null -I -w "%{http_code}" ${UPGRADE_SCRIPT_URL//OVVERSION/$1})printf "  => Upgrading OpenVidu CE to '%s' version" "$1"if [ "$HTTP_STATUS" == "200" ]; thenprintf "\n    => Downloading and upgrading new version"printf "\n"curl --silent ${UPGRADE_SCRIPT_URL//OVVERSION/$1} | bash -s upgradeelseprintf "\n     =======¡ERROR!======="printf "\n     OpenVidu CE Version '%s' not exist" "$1"printf "\n"exit 0fi
}collect_basic_information() {LINUX_VERSION=$(lsb_release -d)DOCKER_PS=$(docker ps)DOCKER_VERSION=$(docker version --format '{{.Server.Version}}')DOCKER_COMPOSE_VERSION=$(docker-compose version --short)OV_FOLDER="${PWD}"OV_VERSION=$(grep 'Openvidu Version:' "${OV_FOLDER}/docker-compose.yml" | awk '{ print $4 }')CONTAINERS=$(docker ps | awk '{if(NR>1) print $NF}')if [ -n "$(grep -E '^        image: openvidu/openvidu-call:.*$' "${OV_FOLDER}/docker-compose.override.yml" | tr -d '[:space:]')" ]; thenOV_CALL_VERSION=$(grep -E 'Openvidu-Call Version:' "${OV_FOLDER}/docker-compose.override.yml" | awk '{ print $4 }')fi[ -z "${OV_CALL_VERSION}" ] && OV_CALL_VERSION="No present"OV_TYPE_INSTALLATION=$(grep 'Installation Mode:' "${OV_FOLDER}/docker-compose.yml" | awk '{ print $4,$5 }')TREE_OV_DIRECTORY=$(find "." | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/")
}version_ov() {collect_basic_informationprintf '\nOpenvidu Information:'printf '\n'printf '\n  Installation Type: %s' "${OV_TYPE_INSTALLATION}"printf '\n  Openvidu Version: %s' "${OV_VERSION}"printf '\n  Openvidu Call Version: %s' "${OV_CALL_VERSION}"printf '\n'printf '\nSystem Information:'printf '\n'printf '\n  Linux Version:'printf '\n    - %s' "${LINUX_VERSION}"printf '\n  Docker Version: %s' "${DOCKER_VERSION}"printf '\n  Docker Compose Version: %s' "${DOCKER_COMPOSE_VERSION}"printf '\n'printf '\nInstallation Information:'printf '\n'printf '\n  Installation Folder: %s' "${OV_FOLDER}"printf '\n  Installation Folder Tree:'printf '\n%s' "$(echo "${TREE_OV_DIRECTORY}" | sed -e 's/.//' -e ':a' -e 'N;$!ba' -e 's/\n/\n\t/g')"printf '\n'printf '\nDocker Running Services:'printf '\n'printf '\n  %s' "$(echo "${DOCKER_PS}" | sed -e ':a' -e 'N;$!ba' -e 's/\n/\n\t/g')"printf '\n'
}generate_report() {collect_basic_informationREPORT_CREATION_DATE=$(date +"%d-%m-%Y")REPORT_CREATION_TIME=$(date +"%H:%M:%S")REPORT_NAME="openvidu-report-${REPORT_CREATION_DATE}-$(date +"%H-%M").txt"REPORT_OUTPUT="${OV_FOLDER}/${REPORT_NAME}"{printf "\n  ======================================="printf "\n  =         REPORT INFORMATION          ="printf "\n  ======================================="printf '\n'printf '\n  Creation Date: %s' "${REPORT_CREATION_DATE}"printf '\n  Creation Time: %s' "${REPORT_CREATION_TIME}"printf '\n'printf "\n  ======================================="printf "\n  =       OPENVIDU INFORMATION          ="printf "\n  ======================================="printf '\n'printf '\n  Installation Type: %s' "${OV_TYPE_INSTALLATION}"printf '\n  Openvidu Version: %s' "${OV_VERSION}"printf '\n  Openvidu Call Version: %s' "${OV_CALL_VERSION}"printf '\n'printf "\n  ======================================="printf "\n  =         SYSTEM INFORMATION          ="printf "\n  ======================================="printf '\n'printf '\n  Linux Version:'printf '\n    - %s' "${LINUX_VERSION}"printf '\n  Docker Version: %s' "${DOCKER_VERSION}"printf '\n  Docker Compose Version: %s' "${DOCKER_COMPOSE_VERSION}"printf '\n'printf "\n  ======================================="printf "\n  =     INSTALLATION INFORMATION        ="printf "\n  ======================================="printf '\n'printf '\n  Installation Folder: %s' "${OV_FOLDER}"printf '\n  Installation Folder Tree:'printf '\n%s' "$(echo "${TREE_OV_DIRECTORY}" | sed -e 's/.//' -e ':a' -e 'N;$!ba' -e 's/\n/\n\t/g')"printf '\n'printf "\n  ======================================="printf "\n  =      DOCKER RUNNING SERVICES        ="printf "\n  ======================================="printf '\n'printf '\n  %s' "$(echo "${DOCKER_PS}" | sed -e ':a' -e 'N;$!ba' -e 's/\n/\n\t/g')"printf '\n'printf "\n  ======================================="printf "\n  =        CONFIGURATION FILES          ="printf "\n  ======================================="printf '\n'printf '\n  ================ .env ================='printf '\n'printf '\n'cat < "${OV_FOLDER}/.env" | sed -r -e "s/OPENVIDU_SECRET=.+/OPENVIDU_SECRET=****/"printf '\n'printf '\n  ========= docker-compose.yml =========='printf '\n'printf '\n'cat "${OV_FOLDER}/docker-compose.yml"printf '\n'printf '\n  ==== docker-compose.override.yml ===='printf '\n'printf '\n'if [ -f "${OV_FOLDER}/docker-compose.override.yml" ]; thencat < "${OV_FOLDER}/docker-compose.override.yml"elseprintf '\n  The docker-compose.override.yml file is not present'fiprintf '\n'printf '\n'printf "\n  ======================================="printf "\n  =                LOGS                 ="printf "\n  ======================================="for CONTAINER in $CONTAINERSdoprintf '\n'printf "\n  ---------------------------------------"printf "\n  %s" "$CONTAINER"printf "\n  ---------------------------------------"printf '\n'docker logs "$CONTAINER"printf "\n  ---------------------------------------"printf '\n'printf '\n'doneprintf '\n'printf "\n  ---------------------------------------"printf "\n  KMS"printf "\n  ---------------------------------------"printf '\n'kurento_logsprintf "\n  ---------------------------------------"printf '\n'printf '\n'printf "\n  ======================================="printf "\n  =       CONTAINER ENVS VARIABLES      ="printf "\n  ======================================="for CONTAINER in $CONTAINERSdoprintf '\n'printf "\n  ======================================="printf "\n  %s" "$CONTAINER"printf "\n  ---------------------------------------"printf '\n'docker exec "$CONTAINER" envprintf "\n  ---------------------------------------"printf '\n'printf '\n'done} >> "${REPORT_OUTPUT}" 2>&1printf "\n  Generation of the report completed with success"printf "\n  You can get your report at path '%s'" "${REPORT_OUTPUT}"printf "\n"
}usage() {printf "Usage: \n\t openvidu [command]"printf "\n\nAvailable Commands:"printf "\n\tstart\t\t\tStart all services"printf "\n\tstop\t\t\tStop all services"printf "\n\trestart\t\t\tRestart all stopped and running services"printf "\n\tlogs [-f]\t\tShow openvidu logs."printf "\n\tkms-logs [-f]\t\tShow kms logs"printf "\n\tupgrade\t\t\tUpgrade to the latest Openvidu version"printf "\n\tupgrade [version]\tUpgrade to the specific Openvidu version"printf "\n\tversion\t\t\tShow version of Openvidu Server"printf "\n\treport\t\t\tGenerate a report with the current status of Openvidu"printf "\n\thelp\t\t\tShow help for openvidu command"printf "\n"
}kurento_logs() {if [[ "$1" == "-f" ]]; thentail -f /opt/openvidu/kurento-logs/*.logelsecat /opt/openvidu/kurento-logs/*.logfi
}case $1 instart)docker-compose up -ddocker-compose logs -f openvidu-server;;stop)docker-compose down;;restart)docker-compose downdocker-compose up -ddocker-compose logs -f openvidu-server;;logs)case $2 in"-f")docker-compose logs -f openvidu-server;;*)docker-compose logs openvidu-server;;esac;;kms-logs)kurento_logs "$2";;upgrade)if [ -z "$2" ]; thenUPGRADE_VERSION="latest"elseUPGRADE_VERSION="$2"firead -r -p "  You're about to update OpenVidu CE to '${UPGRADE_VERSION}' version. Are you sure? [y/N]: " responsecase "$response" in[yY][eE][sS]|[yY])upgrade_ov "${UPGRADE_VERSION}";;*)exit 0;;esac;;version)version_ov;;report)read -r -p "  You are about to generate a report on the current status of Openvidu, this may take some time. Do you want to continue? [y/N]: " responsecase "$response" in[yY][eE][sS]|[yY])generate_report;;*)exit 0;;esac;;*)usage;;
esac

设置.env文件中的DOMAIN_OR_PUBLIC_IP和OPENVIDU_SECRET。然后执行

sudo ./openvidu start

openvidu部署相关推荐

  1. Kurento实战之一:KMS部署和体验

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于<kurento实战>系列 <k ...

  2. 在windows下进行Openvidu webAPP开发

    在windows下进行Openvidu webAPP开发 @(Openvidu)[web,IDE] 概述 Openvidu视频会议包括KMS(媒体服务).Openvidu-server(会议服务).W ...

  3. Kubernetes 中 设置pod不部署在同一台节点上

    在k8s中,节点的调度主要由亲和性和污点来进行控制的.   而在亲和性部分由分为了节点亲和性和节点反亲和性.   节点亲和性是指在pod部署时,尽量(软策略)或者必须满足(硬策略)部署在某些节点上. ...

  4. 将jar包部署在docker上,将jar包打成镜像,使用docker部署jar包

    假设你已经准备好以下东西,即可进行服务部署 一台安装好docker的linux服务器(安装docker见安装docker) 准备好的jar包 接下来开始吧! 将jar包上传至服务器(建好文件夹存放以方 ...

  5. jar包升级部署到服务器详细流程,将服务部署在linux中

    假设你已经准备好以下东西,即可进行服务部署 一台服务器(云服务器或虚拟机皆可) 已安装好的jdk 1.8 + 的环境(可自行百度) 打好的jar包(maven打jar包) 1. 在服务器中新建好你的项 ...

  6. jar包部署shell脚本编写,在服务器上部署jar包,在Linux服务器上部署服务,设置编码格式,设置内存管理

    准备步骤: 1.安装java环境,知道java安装目录 2.将jar包拖放或发送至服务器中(目录自定义) 一.编写shell脚本,将以下代码放在shell脚本中,将shell脚本放在jar包同级目录下 ...

  7. 在docker上安装部署tomcat项目 超简单,拿来主义

    在docker中部署tomcat,非常简单,而且省去了手动安装jdk等步骤,只需要将war包复制在容器tomcat实例中的webapps下面即可.以下将详细讲解流程: 在windows中打好包以后用w ...

  8. 【CentOS】利用Kubeadm部署Kubernetes (K8s)

    [CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...

  9. CentOS Docker安装配置部署Golang web helloworld

    目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker部署Golang web helloworld 四.Docker与虚拟机的区别 五. ...

最新文章

  1. Hive1.2.1安装
  2. 年纪最小90后,他们在北大教AI
  3. java基础知识回顾之javaIO类---FileInputStream和FileOutputStream字节流复制图片
  4. 对存储还搞不清楚,先看看这篇文章-从51单片机上去理解存储器
  5. 启动mysql 1067_启动mysql遇到1067问题
  6. 想重装java jdk_jdk怎么重新安装
  7. 前端:HTML/07/综合案例:月福首页,开发网站的流程,网站布局结构,排版准备,图片热点,网页多媒体
  8. spark学习-Spark Streaming初次理解
  9. 题解 AT934 【完全数】
  10. linux常用命令 less,Linux常用基本命令(less)
  11. 有这就够了小香港五味俱全——专升本高数
  12. 小米路由器mini R1C R1CM openwrt源 换源
  13. 浏览器阻挡cookies_浏览器需要阻止第三方cookie吗?
  14. dB、dBm、dBw、dBi……到底有啥区别?
  15. 请不要“妖魔化”外包
  16. 试用mmdetection
  17. 循环-05. 兔子繁衍问题
  18. 人工智能知识全面讲解:机器学习的类型
  19. mysql 字段包含横杠_mysql数据库创建删除带横杠的数据库名
  20. 天高任鸟飞,在你还苦闷Android出路时,总有人在系统钻研为高级开发做准备

热门文章

  1. 【2015 Week Task】
  2. MFC中小笔记(三)
  3. 设计模式一 多例模式(Multition Pattern)
  4. 关于Mozilla浏览器不支持innerText的解决办法
  5. python利器app怎么查文献-科研人必备:一个工具搞定文献查阅、数据分析、模型搭建...
  6. python 爬虫实例 电影-Python爬虫入门实战之猫眼电影数据抓取(实战篇)
  7. python书籍推荐知乎-python入门书籍(爬虫方面)有哪些推荐?
  8. python 画图 内存-10种检测Python程序运行时间、CPU和内存占用的方法
  9. python在中小学教学中的应用-中小学Python编程语言教学
  10. python turtle循环图案-Python绘图Turtle库详解