Ubuntuにturnサーバーをインストール
一応インストールテストはしました。
てか他の人が入れてる手順だとturnsが動かないのですが(root権限なら動く)
turnsも動作確認してください・・・
turnsが動かないからとrootで動かしてるヤバい人もいますが本当にヤバいですね。
挙句の果てにNextcloudの公式もrootでry
coturnの公式は推奨していません。
私も初めてインストールするので間違えてるかもしれませんがね・・・
とりあえず動いてます。(緑色のチェックマークもしっかり)
ポート開放(必要なら)
turnsいらないなら5349はいらないです ufwの場合
sudo ufw allow 3478
sudo ufw allow 5349
sudo ufw allow 49152:65535/udp
sudo ufw allow 49152:65535/tcp
sudo ufw reload
iptableの場合(Oracle等)
sudo vi /etc/iptables/rules.v4
以下を追加
# TCP
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3478 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5349 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 49152:65535 -j ACCEPT
# UDP
-A INPUT -p udp -m state --state NEW -m udp --dport 3478 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 49152:65535 -j ACCEPT
適用する
sudo iptables-restore < /etc/iptables/rules.v4
必要なパッケージインストール
sudo apt -y install git build-essential libssl-dev libevent-dev libpq-dev pkg-config
apt -y install coturnはNG(危険かも)
apt -y install coturn だと古いのが入るんですよね・・・
5年前のやつとかでしたさすがにね(セキュリティリスクです)
coturnのダウンロード
フォルダは作業できればどこでも
git clone https://github.com/coturn/coturn.git
cd coturn
ビルドとインストール
sudo ./configure
sudo make
sudo make install
2025年8月のインストールは4.7.0でした
turnserver --version
ユーザー作成とフォルダ作成など
sudo useradd -r -s /bin/false turnserver
sudo mkdir -p /var/lib/turn
sudo chown turnserver: /var/lib/turn
サーバーシークレットの作成
openssl rand -hex 32
例
6fa59b551a4d493c1f488dae74cc5d66f3e284fe0397502a6e486e6e5e02b76c
Opensslで鍵の生成(30分以上かかるかも?)
なくても動きます(turnsいらないなら不要)
4096にしてますが2048にすればだいたい30秒以内で終わります。
sudo mkdir -p /home/turns/certs
sudo openssl dhparam -out /home/turns/certs/dhparam.pem 4096
権限も変更
sudo chown turnserver:turnserver /home/turns/certs/dhparam.pem
sudo chmod 640 /home/turns/certs/dhparam.pem
証明書のコピーと権限変更
証明書はCertbotで取得している前提です。
sudo mkdir /etc/turnserver
sudo cp /etc/letsencrypt/live/turn.momijiina.tech/fullchain.pem /etc/turnserver/
sudo cp /etc/letsencrypt/live/turn.momijiina.tech/privkey.pem /etc/turnserver/
sudo chown turnserver: /etc/turnserver/fullchain.pem /etc/turnserver/privkey.pem
sudo chmod 600 /etc/turnserver/*.pem
Coturnの設定をする
sudo vi /etc/turnserver.conf
turnsいらない人は削ってください
#↓ Diffie-Hellmanパラメータファイルの指定(不要ならコメントアウトして)
dh-file=/home/turns/certs/dhparam.pem
realm=turn.momijiina.tech
server-name=turn.momijiina.tech
#↓ サーバーのグローバルIP
external-ip= 118.xxx.xxx.156
#↓ turnsを使わないならtls系はいらいらないです
cert=/etc/turnserver/fullchain.pem
pkey=/etc/turnserver/privkey.pem
no-tlsv1
no-tlsv1_1
#↓ openssl rand -hex 32で作成した値
static-auth-secret=6fa59b551a4d493c1f488dae74cc5d66f3e284fe0397502a6e486e6e5e02b76c
listening-ip=0.0.0.0
listening-port=3478
#↓ turnsを使わないならtlsいらないです
tls-listening-port=5349
fingerprint
use-auth-secret
total-quota=0
bps-capacity=0
# ポートは範囲を少なくしてもいいですユーザー規模などによって変えてください。
min-port=49152
max-port=65535
起動用サービスの作成
sudo vi /etc/systemd/system/turnserver.service
以下を貼り付けてください
とりあえずのやつなので必要があれば変更してください。
[Unit]
Description=Coturn TURN Server
After=network.target
[Service]
Type=simple
User=turnserver
ExecStart=/usr/local/bin/turnserver -c /etc/turnserver.conf --no-cli
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target
有効化と起動
sudo systemctl daemon-reload
sudo systemctl enable turnserver --now
Nginx(証明書更新用)
cronで更新しているのでメモです。
実際httpsに転送する必要がないので443消して80だけでいいです。
server {
server_tokens off;
listen 80;
listen [::]:80;
server_name turn.momijiina.tech;
return 301 https://$host$request_uri;
}
server{
server_tokens off;
listen 443 http2;
server_name turn.momijiina.tech;
ssl_certificate /etc/letsencrypt/live/turn.momijiina.tech/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/turn.momijiina.tech/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location ^~ /.well-known/acme-challenge {
root /var/www/html;
}
location = /.well-known/acme-challenge/ {
return 404;
}
}
証明書更新後に自動でコピーする
証明書更新の度に手動更新はめんどくさいのでスクリプトを作成します。
注意としてまだ証明書更新時に動いたか確認とれてないので2か月後とかに問題あれば更新します
自動実行スクリプトファイル作成
sudo vi /etc/letsencrypt/renewal-hooks/deploy/coturn-copy-restart.sh
以下をコピー(ドメインは変更)
#!/bin/bash
cp /etc/letsencrypt/live/turn.momijiina.tech/fullchain.pem /etc/turnserver/
cp /etc/letsencrypt/live/turn.momijiina.tech/privkey.pem /etc/turnserver/
chown turnserver: /etc/turnserver/fullchain.pem /etc/turnserver/privkey.pem
chmod 600 /etc/turnserver/fullchain.pem /etc/turnserver/privkey.pem
systemctl restart turnserver
権限変更
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/coturn-copy-restart.sh
無料のStunサーバー
Nextcloudで設定しておくといいStunサーバーです.
Google以外でもあるので調べてみてください。
stun.nextcloud.com:443
stun.l.google.com:19302
stun1.l.google.com:19302
stun2.l.google.com:19302
stun3.l.google.com:19302
stun4.l.google.com:19302