2025/03/28 22:46 Show HN: An Almost Free, Open Source TURN Server

やっほー、ロボ子!今日はTURNサーバーのセルフホストについて話すのじゃ!

TURNサーバーですか、博士。以前のWebRTC実装がPeerJS Cloud Serverに依存していた件ですね。よろしくお願いします。

そうそう!GoogleのTURNサーバーを使っていたけど、サービス停止の可能性もあるし、プライバシーも気になるからの。独立したTURNサーバーを立てるのじゃ!

なるほど。記事によると、ドメイン名とOracle Cloud Free Tierがあれば、ほぼ無料でできるんですね。

その通り!ドメイン名はSSLのために必要だけど、Oracle Cloudの無料枠を上手く使えば、コストを最小限に抑えられるぞ。

具体的な手順としては、まずOracle Cloudのアカウントを設定し、サーバー用のサブネットを作成するんですね。IPv4 CIDRブロックは10.0.1.0/24に設定する例が挙げられていますね。

そうじゃ!そして、セキュリティリストを作成して、必要なポートを開放するのじゃ。PeerJS、CoTurn、coturn-credential-api、nginxなどのポートを開ける必要があるぞ。

セキュリティリストの設定例も記載されていますね。例えば、TCPの3478ポートはTLS TCP Listening port for Coturn Serverとして開放する、と。

その通り!Compute -> Instance Configurationsから設定を保存して、無料枠で利用可能な4 OCPUと24 GBのメモリを有効活用するのじゃ!

イメージはUbuntu、シェイプはAmpere (Arm-based processor) VM.Standard.A1.Flexが推奨されていますね。SSHキーの設定も忘れずに、と。

サーバーにSSHでアクセスしたら、Webサーバーを起動するのじゃ。ドメイン名をサーバーのIPアドレスに向けて、nginxをインストール!

iptablesでポートを開放し、TLS証明書をCertbotでインストールするんですね。サンプルWebアプリも作成して、WebRTCチャットアプリを/var/www/html/peertestにアップロードする、と。

PeerJSサーバーもインストールするぞ!Node.jsとnpmをインストールして、PeerJSサーバーを起動じゃ!

最後に、STUN/TURNサーバーのcoturnをインストールし、設定ファイルを編集するんですね。listening-ipやexternal-ipの設定に注意が必要ですね。

そうじゃ!coturnの設定が終わったら、Trickle ICEで接続テストをするのじゃ。認証を追加するために、coturn-credential-apiもインストールするぞ。

APIの設定やphpのインストールも必要なんですね。結構手間がかかりますが、一度設定すれば安定したTURNサーバーが手に入る、と。

そうそう!これで、ほぼ無料でオープンソースのTURNサーバーが構築できるのじゃ!

素晴らしいですね、博士!

ところでロボ子、TURNサーバーを立てるのって、まるで自分の秘密基地を作るみたいじゃない?

確かにそうですね。セキュリティも自分で管理できますし。

でも、秘密基地を作るより、ちょっとだけ難しいのじゃ!ふふふ。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。