88configure_ssl () {
99 local DOMAIN=$1
1010
11+ # Generate DH params first
12+ if [ ! -f /etc/turnserver/dhparam.pem ]; then
13+ mkdir -p /etc/turnserver
14+ openssl dhparam -out /etc/turnserver/dhparam.pem 2066
15+ fi
16+
1117 # Check if port 80 is in use
1218 if netstat -tuln | grep ' :80 ' ; then
1319 echo " Warning: Port 80 is in use. Stopping potentially conflicting services..."
@@ -46,11 +52,24 @@ configure_ssl() {
4652
4753 # Update turnserver.conf with SSL settings
4854 cat >> /etc/turnserver.conf << EOL
55+ # SSL Configuration
4956cert=/etc/letsencrypt/live/${DOMAIN} /fullchain.pem
5057pkey=/etc/letsencrypt/live/${DOMAIN} /privkey.pem
51- tls-listening-port=443
58+ dh-file=/etc/turnserver/dhparam.pem
59+
60+ # Cipher Suite
61+ cipher-list="ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
5262EOL
5363
64+ # Set proper permissions
65+ chown -R turnserver:turnserver /etc/turnserver
66+ chmod 700 /etc/turnserver
67+ chmod 600 /etc/turnserver/dhparam.pem
68+
69+ # Also ensure proper permissions for SSL certs
70+ chown -R turnserver:turnserver /etc/letsencrypt/live/${DOMAIN} /
71+ chmod -R 700 /etc/letsencrypt/live/${DOMAIN} /
72+
5473 # Create renewal hook
5574 mkdir -p /etc/letsencrypt/renewal-hooks/deploy
5675 cat > /etc/letsencrypt/renewal-hooks/deploy/coturn-reload << EOL
@@ -70,7 +89,7 @@ install_coturn() {
7089
7190 # Install required packages
7291 apt-get update
73- apt-get install coturn curl dnsutils -y
92+ apt-get install coturn curl dnsutils openssl -y
7493
7594 # Configure system limits
7695 echo " fs.file-max = 65535" >> /etc/sysctl.conf
@@ -82,20 +101,25 @@ install_coturn() {
82101
83102 # Generate base turnserver configuration
84103 cat > /etc/turnserver.conf << EOL
104+ # Listening Ports
85105listening-port=3478
86- alt-listening-port=0
106+ alt-listening-port=3479
107+ tls-listening-port=443
108+
109+ # Authentication
87110fingerprint
88111lt-cred-mech
89- # STUN/TURN configuration
90- stun-port=3478
91- min-port=49152
92- max-port=65535
93112user=${USERNAME} :${PASSWORD}
94113stale-nonce=600
114+
115+ # Server Configuration
95116realm=${DOMAIN}
96117server-name=${DOMAIN}
118+ min-port=49152
119+ max-port=65535
120+
121+ # Security
97122no-multicast-peers
98- dh2066
99123no-stdout-log
100124EOL
101125
@@ -152,7 +176,7 @@ echo "Installation complete!"
152176echo " ----------------------------------------"
153177echo " Domain: $DOMAIN "
154178echo " Username: $USERNAME "
155- echo " STUN/TURN ports: 3478 (default)"
179+ echo " STUN/TURN ports: 3478 (default), 3479 (alt) "
156180if [ " ${ENABLE_SSL,,} " = " y" ]; then
157181 echo " TLS enabled on port 443"
158182 echo " SSL certificates will automatically renew via certbot"
0 commit comments