initial IPv6 support

This commit is contained in:
chandi 2020-07-12 19:15:40 +02:00
parent ad6075b6ca
commit 060f08e68c
9 changed files with 38 additions and 24 deletions

View File

@ -4,7 +4,7 @@ services:
image: instrumentisto/coturn:4.5 image: instrumentisto/coturn:4.5
restart: unless-stopped restart: unless-stopped
command: command:
- "--external-ip=${EXTERNAL_IP}" - "--external-ip=${EXTERNAL_IPv4}"
- "--static-auth-secret=${TURN_SECRET}" - "--static-auth-secret=${TURN_SECRET}"
volumes: volumes:
- ssl_data:/etc/resty-auto-ssl - ssl_data:/etc/resty-auto-ssl

View File

@ -31,7 +31,7 @@ services:
- SYS_RESOURCE - SYS_RESOURCE
environment: environment:
DOMAIN: ${DOMAIN} DOMAIN: ${DOMAIN}
EXTERNAL_IP: ${EXTERNAL_IP} EXTERNAL_IPv4: ${EXTERNAL_IPv4}
SIP_IP_ALLOWLIST: ${SIP_IP_ALLOWLIST} SIP_IP_ALLOWLIST: ${SIP_IP_ALLOWLIST}
NETWORK_INTERFACE: ${NETWORK_INTERFACE:-} NETWORK_INTERFACE: ${NETWORK_INTERFACE:-}
volumes: volumes:
@ -53,11 +53,13 @@ services:
- ./mod/nginx/bbb:/etc/nginx/bbb - ./mod/nginx/bbb:/etc/nginx/bbb
- ./mod/nginx/bigbluebutton:/etc/nginx/conf.d/default.conf - ./mod/nginx/bigbluebutton:/etc/nginx/conf.d/default.conf
- ${DEFAULT_PRESENTATION:-/dev/null}:/etc/nginx/html/default.pdf - ${DEFAULT_PRESENTATION:-/dev/null}:/etc/nginx/html/default.pdf
networks: network_mode: host
bbb-net:
ipv4_address: 10.7.7.13
extra_hosts: extra_hosts:
- "host.docker.internal:10.7.7.1" - "host.docker.internal:10.7.7.1"
- "core:10.7.7.2"
- "etherpad:10.7.7.4"
- "webrtc-sfu:10.7.7.10"
- "html5:10.7.7.11"
etherpad: etherpad:
build: mod/etherpad build: mod/etherpad
@ -94,7 +96,6 @@ services:
KMS_STUN_PORT: ${STUN_PORT} KMS_STUN_PORT: ${STUN_PORT}
KMS_MIN_PORT: 24577 KMS_MIN_PORT: 24577
KMS_MAX_PORT: 32768 KMS_MAX_PORT: 32768
KMS_EXTERNAL_ADDRESS: ${EXTERNAL_IP}
KMS_TURN_URL: KMS_TURN_URL:
KMS_NETWORK_INTERFACES: ${NETWORK_INTERFACE:-} KMS_NETWORK_INTERFACES: ${NETWORK_INTERFACE:-}
network_mode: host network_mode: host
@ -113,10 +114,10 @@ services:
KURENTO_NAME: kurento KURENTO_NAME: kurento
REDIS_HOST: redis REDIS_HOST: redis
FREESWITCH_IP: host.docker.internal FREESWITCH_IP: host.docker.internal
FREESWITCH_SIP_IP: ${EXTERNAL_IP} FREESWITCH_SIP_IP: ${EXTERNAL_IPv4}
ESL_IP: host.docker.internal ESL_IP: host.docker.internal
LOG_LEVEL: info LOG_LEVEL: info
NODE_CONFIG: '{"kurento":[{"ip":"${EXTERNAL_IP}","url":"ws://kurento:8888/kurento"}]}' NODE_CONFIG: '{"kurento":[{"ip":"${EXTERNAL_IPv4}","url":"ws://kurento:8888/kurento"}]}'
ports: ports:
- "127.0.0.1:3008:3008" - "127.0.0.1:3008:3008"
extra_hosts: extra_hosts:

View File

@ -1,4 +0,0 @@
<!--
IPv6 is disabled for now since there a some more configurations needed
to make it work beautifully
-->

View File

@ -60,7 +60,7 @@
--> -->
<X-PRE-PROCESS cmd="set" data="local_ip_v4=10.7.7.1"/> <X-PRE-PROCESS cmd="set" data="local_ip_v4=10.7.7.1"/>
<X-PRE-PROCESS cmd="set" data="local_ip_v6=::1"/> <X-PRE-PROCESS cmd="set" data="local_ip_v6=::1"/>
<X-PRE-PROCESS cmd="set" data="external_ip_v4={{ .Env.EXTERNAL_IP }}"/> <X-PRE-PROCESS cmd="set" data="external_ipv4_v4={{ .Env.EXTERNAL_IPv4 }}"/>
<X-PRE-PROCESS cmd="set" data="domain={{ .Env.DOMAIN }}"/> <X-PRE-PROCESS cmd="set" data="domain={{ .Env.DOMAIN }}"/>
<X-PRE-PROCESS cmd="set" data="domain_name=$${domain}"/> <X-PRE-PROCESS cmd="set" data="domain_name=$${domain}"/>
<X-PRE-PROCESS cmd="set" data="hold_music=local_stream://moh"/> <X-PRE-PROCESS cmd="set" data="hold_music=local_stream://moh"/>
@ -300,7 +300,7 @@
If unspecified, the bind_server_ip value is used. If unspecified, the bind_server_ip value is used.
Used by: sofia.conf.xml dingaling.conf.xml Used by: sofia.conf.xml dingaling.conf.xml
--> -->
<X-PRE-PROCESS cmd="set" data="external_rtp_ip={{ .Env.EXTERNAL_IP }}"/> <X-PRE-PROCESS cmd="set" data="external_rtp_ip={{ .Env.EXTERNAL_IPv4 }}"/>
<!-- external_sip_ip <!-- external_sip_ip
Used as the public IP address for SDP. Used as the public IP address for SDP.
@ -313,7 +313,7 @@
If unspecified, the bind_server_ip value is used. If unspecified, the bind_server_ip value is used.
Used by: sofia.conf.xml dingaling.conf.xml Used by: sofia.conf.xml dingaling.conf.xml
--> -->
<X-PRE-PROCESS cmd="set" data="external_sip_ip={{ .Env.EXTERNAL_IP }}"/> <X-PRE-PROCESS cmd="set" data="external_sip_ip={{ .Env.EXTERNAL_IPv4 }}"/>
<!-- unroll-loops <!-- unroll-loops
Used to turn on sip loopback unrolling. Used to turn on sip loopback unrolling.

View File

@ -1,5 +1,5 @@
location /ws { location /ws {
proxy_pass https://host.docker.internal:7443; proxy_pass https://$freeswitch_addr:7443;
proxy_http_version 1.1; proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade"; proxy_set_header Connection "Upgrade";

View File

@ -1,7 +1,13 @@
map $remote_addr $freeswitch_addr {
"~:" [::1];
default 127.0.0.1;
}
server { server {
listen 80 default_server; listen 8080 default_server;
listen [::]:8080 default_server;
server_name _; server_name _;
access_log /var/log/nginx/bigbluebutton.access.log; access_log /dev/stdout;
# redirect to greenlight # redirect to greenlight
location = / { location = / {

View File

@ -32,9 +32,11 @@ RAILS_SECRET=cdfbae48b197805a435ab7881da31c642ac1a7d4d5c006441efa8125ae63865ce7c
DOMAIN=bbb.example.com DOMAIN=bbb.example.com
EXTERNAL_IP=144.76.97.10 EXTERNAL_IPv4=144.76.97.10
# setting the network interface speeds up kurentos WebRTC connection time # setting the network interface speeds up kurentos WebRTC connection time,
# but currently also disables IPv6 for Kurento
# (https://github.com/Kurento/bugtracker/issues/500)
#NETWORK_INTERFACE=ens3 #NETWORK_INTERFACE=ens3
# STUN SERVER # STUN SERVER

View File

@ -19,7 +19,7 @@ then
fi fi
EXTERNAL_IP=$(curl -s http://whatismyip.akamai.com) EXTERNAL_IPv4=$(curl -4 -s https://icanhazip.com)
greenlight="" greenlight=""
while [[ ! $greenlight =~ ^(y|n)$ ]]; do while [[ ! $greenlight =~ ^(y|n)$ ]]; do
@ -46,9 +46,17 @@ done
ip_correct="" ip_correct=""
while [[ ! $ip_correct =~ ^(y|n)$ ]]; do while [[ ! $ip_correct =~ ^(y|n)$ ]]; do
read -p "Is $EXTERNAL_IP your external IPv4 address? (y/n): " ip_correct read -p "Is $EXTERNAL_IPv4 your external IPv4 address? (y/n): " ip_correct
done done
if [ ! "$ip_correct" == "y" ]
then
EXTERNAL_IPv4=""
while [[ ! $EXTERNAL_IPv4 =~ ^[1-9][0-9]{0,2}\.[1-9][0-9]{0,2}\.[1-9][0-9]{0,2}\.[1-9][0-9]{0,2}$ ]]; do
read -p "Please enter correct IPv4 address: " EXTERNAL_IPv4
done
fi
if [ ! "$ip_correct" == "y" ] if [ ! "$ip_correct" == "y" ]
then then
EXTERNAL_IP="" EXTERNAL_IP=""
@ -61,7 +69,7 @@ fi
# write settings # write settings
cp sample.env .env cp sample.env .env
sed -i "s/EXTERNAL_IP=.*/EXTERNAL_IP=$EXTERNAL_IP/" .env sed -i "s/EXTERNAL_IPv4=.*/EXTERNAL_IPv4=$EXTERNAL_IPv4/" .env
sed -i "s/DOMAIN=.*/DOMAIN=$DOMAIN/" .env sed -i "s/DOMAIN=.*/DOMAIN=$DOMAIN/" .env
if [ ! "$greenlight" == "y" ] if [ ! "$greenlight" == "y" ]
@ -79,7 +87,7 @@ then
sed -i "s/.*TURN_SERVER=.*/TURN_SERVER=turns:$DOMAIN:465?transport=tcp/" .env sed -i "s/.*TURN_SERVER=.*/TURN_SERVER=turns:$DOMAIN:465?transport=tcp/" .env
TURN_SECRET=$(head /dev/urandom | tr -dc A-Za-f0-9 | head -c 32) TURN_SECRET=$(head /dev/urandom | tr -dc A-Za-f0-9 | head -c 32)
sed -i "s/.*TURN_SECRET=.*/TURN_SECRET=$TURN_SECRET/" .env sed -i "s/.*TURN_SECRET=.*/TURN_SECRET=$TURN_SECRET/" .env
sed -i "s/.*STUN_IP=.*/STUN_IP=$EXTERNAL_IP/" .env sed -i "s/.*STUN_IP=.*/STUN_IP=$EXTERNAL_IPv4/" .env
else else
sed -i "s/ENABLE_COTURN.*/#ENABLE_COTURN=true/" .env sed -i "s/ENABLE_COTURN.*/#ENABLE_COTURN=true/" .env
fi fi

View File

@ -31,6 +31,7 @@ else
# rebuild everything else only when modified # rebuild everything else only when modified
./scripts/compose build --pull ./scripts/compose build --pull
sed -i 's/EXTERNAL_IP=/EXTERNAL_IPv4=/' .env
COMMIT_HASH=$(git rev-parse --short HEAD) COMMIT_HASH=$(git rev-parse --short HEAD)
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD) BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)