BetterCrewLinkをセルフホストしてみた話
BetterCrewLinkとは?
大人気Among usの拡張ツール。ゲーム中近くにいる人とお話ができるすごいツールです。とても面白いのですが、公式サーバーだと接続が不安定だったのでセルフホストしてみました。
その結果いくつか躓いた点があったのでメモしておこうと思います。
Switch版でもスマホがあれば遊べる
Discordができる人はだいたいBetterCrewLinkを使用することができます。
DiscordのかわりにBetterCrewLinkを使うイメージです。Discordを使っているスマホやパソコンでBetterCrewLinkにアクセスしましょう。
Windows版やAndroid版のアプリも存在しますが、参加者はわざわざインストールしなくてもBetterCrewLinkで問題ないです。
ただしSwitch版はホストにはなれない
ホストが一人必要です。 ホストはAmong usのゲームの情報をBetterCrewLinkに伝える役目です。
参加者はブラウザ版で問題ありませんが、ホストはツールが必要です。
ツールはPC版かAndroid版しか存在しませんのでホストは必然的にそのどちらかを使用する必要があります。
ホストはサイトからツールをダウンロードしてください。
スマホでBetterCrewLinkとDiscordの両立はやめたほうがいい
マイクはBetterCrewLinkかDiscordのどちらかでしか使えないようです。例えばiPhoneの場合、Discordのボイスチャンネルに接続したままBetterCrewLinkにアクセスしてもうまくいかないことが多かったです。基本的にDiscordには接続しないほうが良いでしょう。
Discord内でBetterCrewLinkを開かないほうが良い
iPhoneの場合、標準設定ではDiscord内のリンクをタップするとアプリ内でサイトを閲覧します。
ただマイクの接続が意図しない方に接続されることが多いので
・Discordの設定内にあるウェブブラウザの項目をSafariにしてからアドレスを開く
・アドレスをコピーしてSafariに貼り付ける
・右下に表示されてるアイコンをタップ
この3つのうちどれかをすることをお勧めします。
No permission to use microphoneと表示される
この画面で許可を押しましょう。
connectingのまま
Searching for bettercrewlink PC players in lobby
**Please make sure there is a PC user with "Mobile Host" enabled on Crewlink in the lobby**
と表示されるならモバイルホストにチェックが入っているかどうか、ホストに確認しましょう。チェックが入っていても表示されるなら、お使いのiPhoneが古すぎる可能性もあります。
Waiting for you to join with the name hoge --> LOBBYと表示される
Waiting for you to join with the name hoge --> LOBBY
**Please make sure there is a PC user with "Mobile Host" enabled on Crewlink in the lobby**
ゲーム内と入力した名前が一致してないです。
大文字小文字も揃えて再挑戦してみてください。
セルフホストの方法
さて前置きが少し長くなりましたがセルフホストについてです。
Dockerの知識が少しだけ必要になります。
基本的にはREADMEに沿った手順です。
do all voice servers work? -> No, the mobile version only supports https servers so make sure the server starts with https like https://bettercrewl.ink or https://crewl.ink
いわくhttpsじゃないとダメだそうなのでBetterCrewLinkをhttps化します。
http化せずに挑戦もしたんですが、ホストだけ繋がったり永遠にconnectingのまんまだったりして使えませんでした。
環境
私の環境はVPSでCentOS7を走らせています。
Nginxは競合?したのでオフにしています。
証明書はcertbotを使用して発行しました。
今回必要になるのはprivkey.pemとfullchain.pemです。
Buildする場合
git clone https://github.com/OhMyGuus/BetterCrewLink-server.git
cd BetterCrewLink-server
Dockerfileを編集して/appにpemたちをコピーさせるよう指示した後以下を実行
docker build -t crewlink .
docker run -d -p 9736:9736 -e HOSTNAME=hoge.com -e HTTPS=TRUE crewlink
QuickStartの場合
docker run -d -p 9736:9736 -e HTTPS=TRUE -e PORT=9736 -e HOSTNAME=hoge.com -e SSLPATH=/ssl/ -v pemを置いてあるディレクトリ:/ssl ohmyguus/bettercrewlink-server:latest
pemを置いてあるディレクトリをマウントさせる必要があります。
ポート番号は好きな番号を使ってください。ポート開放は忘れずに。
ボイスサーバーの変更
お疲れ様です!ここまできたら後はツールorサイトにアドレスを入力するだけです。
https://hoge.com:9737がサーバーアドレスです。これをボイスサーバーの項目に入力して接続すれば繋がるはずです。
注意点:アドレスはサブディレクトリを含んではいけない
hoge.com/fugaだとサーバーの変更がそもそもできなかったので回避策としてサブドメインを使用しました。
さいごに
Dockerって便利ですね、すごい。
Special Thanks ありすさん