mirror of https://github.com/OpenVidu/openvidu.git
Add docker-compose and corturn image
parent
68dfd4414a
commit
73e542b42a
|
@ -0,0 +1,12 @@
|
||||||
|
FROM ubuntu:16.04
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y coturn curl
|
||||||
|
|
||||||
|
COPY ./configuration-files.sh /tmp/
|
||||||
|
COPY ./entrypoint.sh /usr/local/bin
|
||||||
|
|
||||||
|
RUN chmod +x /tmp/configuration-files.sh \
|
||||||
|
&& chmod +x /usr/local/bin/entrypoint.sh
|
||||||
|
|
||||||
|
CMD /usr/local/bin/entrypoint.sh
|
|
@ -0,0 +1,36 @@
|
||||||
|
# Coturn OpenVidu
|
||||||
|
|
||||||
|
This is a docker image to launch a coturn server. Environment variables can be defined to modify the files `/etc/default/coturn` and `cat>/etc/turnserver.conf`.
|
||||||
|
|
||||||
|
## Environment variables
|
||||||
|
|
||||||
|
### Turn configuration
|
||||||
|
- TURN_PUBLIC_IP: Public ip where coturn will be placed. If this environment variable is not setted, it will get the ip returned by `curl ifconfig.co`.
|
||||||
|
- TURN_LISTEN_PORT: Port where turn will be listening.
|
||||||
|
|
||||||
|
### Turn credentials
|
||||||
|
- REDIS_IP: Redis where credentials are stored
|
||||||
|
- DB_NAME: Name of the database in redis
|
||||||
|
- DB_PASSWORD: Password of the redis database
|
||||||
|
|
||||||
|
# Execution example
|
||||||
|
|
||||||
|
Actual version of OpenVidu need to be located in the same node because tokens sends the url for turn/stun connections with the host url.
|
||||||
|
|
||||||
|
## Execute turn locally next to the redis database
|
||||||
|
|
||||||
|
You need to have a redis database running:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run --rm --name some-redis -d -p 6379:6379 redis
|
||||||
|
```
|
||||||
|
|
||||||
|
Get the ip of the container and after that, run coturn, you can use url as ip too, in this example I am running coturn with nip.io:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run -it -e REDIS_IP=172.17.0.2 -e DB_NAME=0 -e DB_PASSWORD=turn -e MIN_PORT=40000 -e MAX_PORT=65535 -e TURN_LISTEN_PORT=3478 --network=host coturn-openvidu
|
||||||
|
```
|
||||||
|
|
||||||
|
# Kubernetes
|
||||||
|
|
||||||
|
TODO
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Enable turn
|
||||||
|
cat>/etc/default/coturn<<EOF
|
||||||
|
TURNSERVER_ENABLED=1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Turn server configuration
|
||||||
|
cat>/etc/turnserver.conf<<EOF
|
||||||
|
external-ip=${TURN_PUBLIC_IP}
|
||||||
|
listening-port=${TURN_LISTEN_PORT}
|
||||||
|
fingerprint
|
||||||
|
lt-cred-mech
|
||||||
|
max-port=${MAX_PORT:-65535}
|
||||||
|
min-port=${MIN_PORT:-40000}
|
||||||
|
pidfile="/var/run/turnserver.pid"
|
||||||
|
realm=openvidu
|
||||||
|
simple-log
|
||||||
|
redis-userdb="ip=${REDIS_IP} dbname=${DB_NAME} password=${DB_PASSWORD} connect_timeout=30"
|
||||||
|
verbose
|
||||||
|
EOF
|
|
@ -0,0 +1,46 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Set debug mode
|
||||||
|
DEBUG=${DEBUG:-false}
|
||||||
|
[ "$DEBUG" == "true" ] && set -x
|
||||||
|
|
||||||
|
#Check parameters
|
||||||
|
[[ ! -z "${TURN_PUBLIC_IP}" ]] && echo "TURN public IP: ${TURN_PUBLIC_IP}" ||
|
||||||
|
export TURN_PUBLIC_IP=$(curl ifconfig.co)
|
||||||
|
|
||||||
|
[[ ! -z "${TURN_LISTEN_PORT}" ]] && echo "TURN listening port: ${TURN_LISTEN_PORT}" ||
|
||||||
|
{ echo "TURN_LISTEN_PORT environment variable is not defined"; exit 1; }
|
||||||
|
|
||||||
|
|
||||||
|
[[ ! -z "${REDIS_IP}" ]] && echo "REDIS IP: ${REDIS_IP}" || { echo "REDIS_IP environment variable is not defined"; exit 1; }
|
||||||
|
|
||||||
|
[[ ! -z "${DB_NAME}" ]] || { echo "DB_NAME environment variable is not defined"; exit 1; }
|
||||||
|
|
||||||
|
[[ ! -z "${DB_PASSWORD}" ]] || { echo "DB_PASSWORD environment variable is not defined"; exit 1; }
|
||||||
|
|
||||||
|
[[ ! -z "${MIN_PORT}" ]] && echo "Defined min port coturn: ${MIN_PORT}" || echo "Min port coturn: 40000"
|
||||||
|
|
||||||
|
[[ ! -z "${MAX_PORT}" ]] && echo "Defined max port coturn: ${MAX_PORT}" || echo "Max port coturn: 65535"
|
||||||
|
|
||||||
|
# Load configuration files of coturn
|
||||||
|
source /tmp/configuration-files.sh
|
||||||
|
|
||||||
|
# Remove temp file with configuration parameters
|
||||||
|
rm /tmp/configuration-files.sh
|
||||||
|
|
||||||
|
# Save coturn External IP for other services
|
||||||
|
|
||||||
|
|
||||||
|
# Execute turn daemon
|
||||||
|
/usr/bin/turnserver -c /etc/turnserver.conf -v &
|
||||||
|
|
||||||
|
|
||||||
|
MAX_SECONDS=30
|
||||||
|
# K8s only show turn server log in this way
|
||||||
|
while [ -z $(ls /var/log/ | grep turn_) ] && [ $SECONDS -lt $MAX_SECONDS ]
|
||||||
|
do
|
||||||
|
echo "Waiting turnserver to be running"
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
|
||||||
|
tail -f /var/log/turn_*.log
|
|
@ -0,0 +1,2 @@
|
||||||
|
openvidu_public_ip=192.168.1.66
|
||||||
|
openvidu_secret="MY_SECRET"
|
|
@ -0,0 +1,49 @@
|
||||||
|
version: '3.1'
|
||||||
|
|
||||||
|
services:
|
||||||
|
redis-db:
|
||||||
|
image: redis
|
||||||
|
network_mode: host
|
||||||
|
|
||||||
|
openvidu-coturn:
|
||||||
|
image: openvidu-coturn
|
||||||
|
network_mode: host
|
||||||
|
environment:
|
||||||
|
- REDIS_IP=${openvidu_public_ip}
|
||||||
|
- TURN_PUBLIC_IP=${openvidu_public_ip}
|
||||||
|
- TURN_LISTEN_PORT=3478
|
||||||
|
- DB_NAME=0
|
||||||
|
- DB_PASSWORD=turn
|
||||||
|
- MIN_PORT=40000
|
||||||
|
- MAX_PORT=65535
|
||||||
|
|
||||||
|
kms:
|
||||||
|
image: kurento/kurento-media-server
|
||||||
|
network_mode: host
|
||||||
|
environment:
|
||||||
|
- KMS_EXTERNAL_ADDRESS=${openvidu_public_ip}
|
||||||
|
|
||||||
|
openvidu-ce:
|
||||||
|
image: openvidu/openvidu-server
|
||||||
|
entrypoint: ["java", "-jar", "-Dserver.ssl.enabled=false", "-Dopenvidu.publicurl=https://${openvidu_public_ip}:4443", "-Dserver.port=5443", "/openvidu-server.jar"]
|
||||||
|
network_mode: host
|
||||||
|
environment:
|
||||||
|
- openvidu.secret=${openvidu_secret}
|
||||||
|
- kms.uris="[\"ws://${openvidu_public_ip}:8888/kurento\"]"
|
||||||
|
|
||||||
|
proxy:
|
||||||
|
image: nginx
|
||||||
|
network_mode: host
|
||||||
|
volumes:
|
||||||
|
- ./kms.conf:/etc/nginx/conf.d/kms.conf
|
||||||
|
- ./openvidu-call.conf:/etc/nginx/conf.d/openvidu-call.conf
|
||||||
|
- ./openvidu.cert:/etc/ssl/openvidu/openvidu.cert
|
||||||
|
- ./openvidu.key:/etc/ssl/openvidu/openvidu.key
|
||||||
|
command: /bin/bash -c "rm /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
|
||||||
|
|
||||||
|
openvidu-call:
|
||||||
|
image: openvidu-call
|
||||||
|
network_mode: host
|
||||||
|
environment:
|
||||||
|
- OPENVIDU_URL=https://${openvidu_public_ip}:4443
|
||||||
|
- OPENVIDU_SECRET=${openvidu_secret}
|
|
@ -0,0 +1,26 @@
|
||||||
|
server {
|
||||||
|
listen 4443 ssl;
|
||||||
|
# server_name example.name.es;
|
||||||
|
|
||||||
|
ssl on;
|
||||||
|
ssl_certificate /etc/ssl/openvidu/openvidu.cert;
|
||||||
|
ssl_certificate_key /etc/ssl/openvidu/openvidu.key;
|
||||||
|
ssl_trusted_certificate /etc/ssl/openvidu/openvidu.cert;
|
||||||
|
|
||||||
|
proxy_set_header Host \$host;
|
||||||
|
proxy_set_header X-Real-IP \$remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto \$scheme;
|
||||||
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
|
proxy_headers_hash_bucket_size 512;
|
||||||
|
proxy_redirect off;
|
||||||
|
|
||||||
|
# Websockets
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade \$http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://localhost:5443;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
# server_name example.name.es;
|
||||||
|
|
||||||
|
ssl on;
|
||||||
|
ssl_certificate /etc/ssl/openvidu/openvidu.cert;
|
||||||
|
ssl_certificate_key /etc/ssl/openvidu/openvidu.key;
|
||||||
|
ssl_trusted_certificate /etc/ssl/openvidu/openvidu.cert;
|
||||||
|
|
||||||
|
ssl_session_cache shared:SSL:50m;
|
||||||
|
ssl_session_timeout 5m;
|
||||||
|
ssl_stapling on;
|
||||||
|
ssl_stapling_verify on;
|
||||||
|
|
||||||
|
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||||
|
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
|
||||||
|
|
||||||
|
ssl_prefer_server_ciphers on;
|
||||||
|
|
||||||
|
proxy_set_header Host \$host;
|
||||||
|
proxy_set_header X-Real-IP \$remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto \$scheme;
|
||||||
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
|
proxy_headers_hash_bucket_size 512;
|
||||||
|
proxy_redirect off;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://localhost:80;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
gA8xtH0C9OuQlb8fKcjw
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1,52 @@
|
||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
pvKVbFdUERY36zzq38p2cAXo8Z/e2Eji
|
||||||
|
-----END PRIVATE KEY-----
|
Loading…
Reference in New Issue