# ------------------------------------------------------------------------------ # # 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 Pro Platform # # This file will be overridden when update OpenVidu Platform # # Openvidu Version: 2.30.0 # # Installation Mode: On Premises # # ------------------------------------------------------------------------------ version: '3.1' services: openvidu-server: image: openvidu/openvidu-server-pro:2.30.0 restart: on-failure network_mode: host entrypoint: ['/usr/local/bin/entrypoint.sh'] volumes: - ./coturn:/run/secrets/coturn - /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} - ./cluster:/opt/openvidu/cluster - .env:${PWD}/.env env_file: - .env environment: - SERVER_SSL_ENABLED=false - SERVER_PORT=5443 - KMS_URIS=[] - COTURN_IP=${COTURN_IP:-auto-ipv4} - COTURN_PORT=${COTURN_PORT:-3478} - OPENVIDU_PRO_CLUSTER=true - OPENVIDU_PRO_ELASTICSEARCH=${OPENVIDU_PRO_ELASTICSEARCH:-true} - OPENVIDU_PRO_KIBANA_HOST=${OPENVIDU_PRO_KIBANA_HOST:-http://127.0.0.1/kibana} - OPENVIDU_PRO_ELASTICSEARCH_HOST=${OPENVIDU_PRO_ELASTICSEARCH_HOST:-http://127.0.0.1:9200} - WAIT_KIBANA_URL=${OPENVIDU_PRO_KIBANA_HOST:-http://127.0.0.1/kibana} - DOTENV_PATH=${PWD} - OPENVIDU_PRO_COTURN_IN_MEDIA_NODES=${OPENVIDU_PRO_COTURN_IN_MEDIA_NODES:-false} - OPENVIDU_PRO_COTURN_PORT_MEDIA_NODES=${OPENVIDU_PRO_COTURN_PORT_MEDIA_NODES:-443} - OPENVIDU_PRO_MEDIA_NODE_PUBLIC_IP_AUTODISCOVER=${OPENVIDU_PRO_MEDIA_NODE_PUBLIC_IP_AUTODISCOVER:-auto-ipv4} logging: options: max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}" coturn: image: openvidu/openvidu-coturn:2.30.0 restart: on-failure network_mode: host env_file: - .env volumes: - ./coturn:/run/secrets/coturn command: - --log-file=stdout - --external-ip=$$(detect-external-ip) - --listening-port=${COTURN_PORT:-3478} - --fingerprint - --min-port=${COTURN_MIN_PORT:-40000} - --max-port=${COTURN_MAX_PORT:-65535} - --realm=openvidu - --verbose - --use-auth-secret - --static-auth-secret=$${COTURN_SHARED_SECRET_KEY} logging: options: max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}" nginx: image: openvidu/openvidu-proxy:2.30.0 restart: always network_mode: host volumes: - ./certificates:/etc/letsencrypt - ./owncert:/owncert - ./custom-nginx-vhosts:/etc/nginx/vhost.d/ - ./custom-nginx-locations:/custom-nginx-locations - ${OPENVIDU_RECORDING_CUSTOM_LAYOUT}:/opt/openvidu/custom-layout environment: - 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=PRO - WITH_APP=true - SUPPORT_DEPRECATED_API=${SUPPORT_DEPRECATED_API:-false} - 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}" elasticsearch: image: openvidu/openvidu-elasticsearch:7.8.0 restart: always environment: - discovery.type=single-node - xpack.security.enabled=true - "ES_JAVA_OPTS=${ES_JAVA_OPTS:--Xms2g -Xmx2g}" ports: - 9200:9200 volumes: - ./elasticsearch:/usr/share/elasticsearch/data command: > /bin/bash -c "elasticsearch-users useradd ${ELASTICSEARCH_USERNAME} -p ${ELASTICSEARCH_PASSWORD} -r superuser; elasticsearch-users passwd ${ELASTICSEARCH_USERNAME} -p ${ELASTICSEARCH_PASSWORD}; docker-entrypoint.sh" logging: options: max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}" kibana: image: docker.elastic.co/kibana/kibana:7.8.0 restart: always environment: - SERVER_BASEPATH="/kibana" - xpack.security.enabled=true - ELASTICSEARCH_USERNAME=${ELASTICSEARCH_USERNAME} - ELASTICSEARCH_PASSWORD=${ELASTICSEARCH_PASSWORD} ports: - 5601:5601 logging: options: max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}" metricbeat: image: docker.elastic.co/beats/metricbeat-oss:7.8.0 network_mode: host restart: always user: root env_file: - .env environment: - OPENVIDU_PRO_ELASTICSEARCH_HOST=${OPENVIDU_PRO_ELASTICSEARCH_HOST:-http://127.0.0.1:9200} - OPENVIDU_PRO_STATS_MONITORING_INTERVAL=${OPENVIDU_PRO_STATS_MONITORING_INTERVAL:-10} volumes: - /var/run/docker.sock:/var/run/docker.sock - ./beats/metricbeat.yml:/usr/share/metricbeat/metricbeat.yml:ro - /proc:/hostfs/proc:ro - /sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro - /:/hostfs:ro entrypoint: > /bin/bash -c 'if [[ $${OPENVIDU_PRO_ELASTICSEARCH_HOST} =~ ^(https?://)?([^:/]+)(:([0-9]+))?(/.*)?$$ ]]; then ES_PROTO=$${BASH_REMATCH[1]} ES_HOST=$${BASH_REMATCH[2]} ES_PORT=$${BASH_REMATCH[4]} ES_PATH=$${BASH_REMATCH[5]} if [[ $$ES_PROTO == "https://" ]] && [[ -z $$ES_PORT ]]; then ES_PORT=443 elif [[ $$ES_PROTO == "http://" ]] && [[ -z $$ES_PORT ]]; then ES_PORT=80 fi export OPENVIDU_PRO_ELASTICSEARCH_HOST=$${ES_PROTO}$${ES_HOST}:$${ES_PORT}$${ES_PATH} else exit 1 fi; exec /bin/bash -c "$$@"' command: > /bin/bash -c "metricbeat -e -strict.perms=false -e -system.hostfs=/hostfs `if [ ! -z $ELASTICSEARCH_USERNAME ]; then echo '-E output.elasticsearch.username=$ELASTICSEARCH_USERNAME'; fi` `if [ ! -z $ELASTICSEARCH_PASSWORD ]; then echo '-E output.elasticsearch.password=$ELASTICSEARCH_PASSWORD'; fi`" logging: options: max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}" filebeat: image: docker.elastic.co/beats/filebeat-oss:7.8.0 network_mode: host restart: always user: root env_file: - .env environment: - OPENVIDU_PRO_ELASTICSEARCH_HOST=${OPENVIDU_PRO_ELASTICSEARCH_HOST:-http://127.0.0.1:9200} volumes: - ./beats/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro - /var/lib/docker:/var/lib/docker:ro - /var/run/docker.sock:/var/run/docker.sock entrypoint: > /bin/bash -c 'if [[ $${OPENVIDU_PRO_ELASTICSEARCH_HOST} =~ ^(https?://)?([^:/]+)(:([0-9]+))?(/.*)?$$ ]]; then ES_PROTO=$${BASH_REMATCH[1]} ES_HOST=$${BASH_REMATCH[2]} ES_PORT=$${BASH_REMATCH[4]} ES_PATH=$${BASH_REMATCH[5]} if [[ $$ES_PROTO == "https://" ]] && [[ -z $$ES_PORT ]]; then ES_PORT=443 elif [[ $$ES_PROTO == "http://" ]] && [[ -z $$ES_PORT ]]; then ES_PORT=80 fi export OPENVIDU_PRO_ELASTICSEARCH_HOST=$${ES_PROTO}$${ES_HOST}:$${ES_PORT}$${ES_PATH} else exit 1 fi; exec /bin/bash -c "$$@"' command: > /bin/bash -c "filebeat -e -strict.perms=false `if [ ! -z $ELASTICSEARCH_USERNAME ]; then echo '-E output.elasticsearch.username=$ELASTICSEARCH_USERNAME'; fi` `if [ ! -z $ELASTICSEARCH_PASSWORD ]; then echo '-E output.elasticsearch.password=$ELASTICSEARCH_PASSWORD'; fi`" logging: options: max-size: "${DOCKER_LOGS_MAX_SIZE:-100M}"