Google Compute Engineの無料枠でAutoMuteUs最新版環境を導入した話

Among Us楽しいです!!!(2回目)

2021年11月9日、大規模アップデートきましたね!
事前告知があった新役職シェイプシフターをはじめ、新しい要素もりだくさんでめっちゃ楽しいです!

今回はそんなAmong Usを快適に過ごすためのツール「AutoMuteUs」をオンラインに設置してサーバ内のみんなが使えるようにした記録をお届けします!
参考になれば幸いです!

[Ad]

AutoMuteUsとは

Among Usのプレイ状況に合わせてマイクとスピーカーのミュート・アンミュートを自動で切り替えてくれる超便利ツール。
以前の記事ではローカルマシン(自分のPC)に導入していましたが、今回はこれをサーバー上に設置して、プレイサーバー内の誰でも使えるようにしてみた、というものです。
どうせDocker導入するならサーバーに置いといた方がみんなも使えていいじゃん! って思ってね…

ローカルマシン上で2.4.3を使う場合はこちら↓

注意書き

一応、見たまま、書いてあるまま実行すれば誰でも出来るように書いていくつもりですが、基本的にはサーバー操作に慣れている人とか、操作中に何かあっても適当に先の手順に行ける人向けです。
アルファベットの羅列が苦手な人とかシェル操作怖いですって人には絶対おすすめできないので、素直に上の記事を読んでローカルマシン(自分のPC)に導入しましょう。

なお、この記事を書いている私・アカツキユウは、SE職経験がありシェル操作はチョットデキルなんですが、サーバー操作経験はあまりないです。

ローカルマシンにも最新版をホスト出来ます

今回の記事はサーバーに設置しますが、ローカルマシン上に導入して最新版を動作させることも出来ます。
Dockerのインストールについては公式のドキュメント等を参考にしてください。
この記事ではローカル環境にインストールする方法については扱いません。
AutoMuteUs+Dockerの組み合わせで検索しても記事が色々出てくると思いますが、私はサーバーに導入する方が楽だったのでやってません

使用するサーバーについて

先にどんなものを利用するのか書いておきます。

と言ってもタイトルの通りですが、今回はGoogle Cloud Platform (以下、GCP)で使えるGoogle Compute Engine (以下、GCE)を利用します。
どんなモンかっていうと、スマホゲーとかで良く使われてるAmazonのAWS(のEC2)とかMicrosoft Azure的なやつです。
細かいことは各々調べていただくとして、雑に言うと「Googleがサーバー使わせてくれるサービス」って感じです。

無料枠の話

更に、料金が気になると思うので、これも先に書いておきます。
この手のサービスではトライアル(試用)期間があるのですが、それとは別に無料枠(Free Tier)というものがあります。
GCPではAlwaysFreeという名前で提供されてます。
GCEは特定のリージョン・特定のスペック・特定の利用範囲内という設定で利用している限り、無期限無料です。
下はGoogleのドキュメント。

Google Cloud の無料プログラム

AutoMuteUsは実行環境(Docker)とAutoMuteUs本体を合わせても無料枠のスペックで十分動きます。
有難く使わせていただきましょう。有難うGoogle。

実際無料なわけ?

11月いっぱい運用してみました。
基本的に私のサーバー内でのプレイに使った結果です。
と言っても使用頻度自体はあまり高くない(月5日~7日、約12時間程度)ので、使用頻度が高い場合がどうなのかまでが分からないのですが、参考程度にどうぞ。
Core runningが147.71hourとか590.84hourとかなってるのは、多分後述のVMインスタンスを起動しっぱなしだからだと思います。

botを作る

サーバーを準備する前に、まずはDiscordのbotを作ります。
ここの手順はローカルマシンに導入する場合と全く一緒なので、既に導入済の方もおられると思いますが、今一度手順を記載しておきます。
(内容はローカルマシンに導入する場合の記事の方のほぼコピペです)

botを既に1つ導入済で、それをそのまま使う予定の方はワーカbot・キャプチャbotの作成に飛んでください。
ここではAutoMuteUsを追加するサーバーはもう作ってあるものとします。

開発者モードへ変更

botを生成する前に「開発者モード」への変更が必要です。
以下の画像はDiscordのWindows版クライアント上の操作画面ですが、ブラウザ版でもだいたい同じだと思います。

Discordのユーザー設定を開く。矢印のところ。

左の「アプリの設定」グループの1番下、「詳細設定」を開く。

「開発者モード」のスイッチをONに。(画像はONの状態)
これでbotを作ったり追加したり出来る状態になります。

メインbotの作成

この↓リンクにアクセスすると、Discordの開発者の画面に飛びます。
全部英語ですが、説明画像の通りやればいいので大丈夫。
不安な人はGoogle Chromeを使って翻訳させながらやりましょう。

https://discord.com/developers/applications

アクセス時にブラウザでDiscordにログインしてない場合は、先にログイン画面が出ますので、ログインしてくださいね。
画面の右上、自分のアイコンの真横にある「New Application(新しいアプリ)」のボタンを押します。

追加するアプリの名前を聞かれます。
名前は適当でいいです。分かりやすい名前にしときましょう。
無難にAutoMuteとかそういうのでもいいし、太郎でもタマでもいいです。
ここで決めたアプリ名がそのままbotのアカウント名のデフォルトになります。

さて、この↓画面になったら、左側のメニューの「bot」を開きます。

右側の「Add Bot」を押す。

「ADD A BOT TO THIS APP?(このアプリにbotを追加する?)」って聞かれますので「Yes,do it!(するよ!)」を押します。

画面が変わり↓ます。
アイコンやユーザーネームはNew Applicationで追加した時のものがデフォルトで入ってます。

次の画面に行く前に、botのtokenというものを保存します。
これがないとAutoMuteUsが動作しません。
この↓赤枠の部分の「Click to Reveal Token」やその下の「copy」を押すことでtokenを得られます。
「Regenerate」は触らないでね…

このtokenはDevelop Portalのこの画面にくればいつでも参照出来ますが、ひとまずここでtokenをコピーします。
そして、メモ帳(もしくは任意のテキストエディタ)を開いて、ペーストしておきます。
※このtokenは特別な理由がない限り、他人と共有しないようにしてください。

次に左メニュー、「OAuth2」を開きます。
ごちゃごちゃありますが、必要なのは画面の下半分にある「SCOPES」のところの「bot」にチェックを入れることです。

チェックを入れると、画面の下に「BOT PERMISSIONS」というエリアが追加されます。
PERMISSIONSっていうのは、botの権限です。botが何を出来るかを決めます。
特に何も気にならない人は左上の「Administrator(管理者)」にチェックを入れます。
気になる人は後述の「botの権限」に記載の通りにチェックを入れて下さい。

ここでは「Administrator」にチェックを入れたものとして先へ進めます。
チェックを入れた後、BOT PERMISSIONSの上のエリアにURLが発行されます。
このURLをコピーしてアクセスします。Copyボタンを押せばコピーされます。

すると↓どこのサーバーに設置するか聞かれます。
AutoMuteUsを設置したい、管理者権限を持っているサーバーを選択して「はい」を押します。

次の↓画面になったら、チェックボックスを触らずに「認証」を押します。
「認証」を押した次の画面で「もう閉じていいよ!」的なメッセージが出たら、タブを閉じます。
これでbotの追加は完了です。

botの権限

上で設定した「Administrator(管理者)」というのは非常に強い権限です。
botの向こうにあるプログラムの種類によっては、サーバーを乗っ取ることも出来てしまいます。
AutoMuteUsはそういうプログラムではない(と思います)ですけど、念のためbotには必要な権限だけ与えましょう、というのがこの項目の主旨です。

botの追加手順で「Administrator」にチェックを入れるステップのところを、以下のようにします。
画像2枚ありますが、片方はChromeで日本語訳されてるページのスクショです。
現在は「thread(スレッド)」関係の権限が追加されていますが、元々AutoMuteUsはthreadの機能を使っていないはずなので、「thread」って入ってるところはチェック入れなくていいと思います。

ワーカbot・キャプチャbotの作成

AutoMuteUs最新版ではメインの補助をするワーカbotとキャプチャbotの2つを作っておくと、動作が高速になるとのこと。
Discord側のAPI制限に関係しているそうなので、サーバーのスペックとかはあんまり関係ないかも。

少人数でプレイする場合は(多分)ワーカbotがあってもなくてもそう変わらないように思いますが、大人数(特に10人を超えている時)になると、メンバーのうち数人が10秒以上遅延してミュート・アンミュートされる、という状態になります。
なので、最新版を使うならばワーカbotを入れて高速化した方が絶対ストレスが無いです。
(これはセルフホスト2.4.3-15でプレイしている時ずっと不満だったことです)

ワーカbotもキャプチャbotも、メインbotと同様の手順で追加出来ます。
但し、権限設定のところでは、Mute MembersとDeafen Membersのみ与えればOKとのことです。
あんまりbotに最上位権限与えるのは好ましくないので、必要な権限だけ与えましょう。

そしてbotを作ったら、各botのtokenを控え、サーバーに招待しておきます。
どのtokenがどのbotのものか分かるようにしておきましょう。

参考:Among Us 用ボット AutoMuteUs のあまり知られていない便利な機能 | kurokobo.com

Google Compute Engineの準備

ここからがいよいよ本題です。
画面の情報量が多いですが頑張りましょう。

GCPアカウントの作成

まずはGCP⇒GCEの利用を開始するためにアカウントを作ります。
ログイン自体は普段使っているGoogleアカウントで出来ますが、利用に際しては改めて情報入力が必要であることに加え、クレジットカード情報が必要です。
「無料範囲で使うのにクレカ情報要るんかい」って話ですが、この手のサービスではよくあること…

途中までは、以下の記事と手順が全く一緒ですので、こちらの記事を参考に「プロジェクトの作成」まで完了させてください。
プロジェクト名は何でもいいですが、分かりやすい名前にしておきましょう。

これから始めるGCP(GCE) 安全に無料枠を使い倒せ – Qiita

VMインスタンスを作成する

上の記事でプロジェクトを作るところまで済んでいるものとして先に進めます。
実際にAutoMuteUsを設置する場所を作ります。
VMインスタンスって何ぞっていうのはこの際置いとくので興味あったらググってください。
今回は本題ではないので、そういうのは飛ばしておきます。

①画面↓左のメニューのボタンをクリック。
②メニューの下の方にある「コンピューティング」カテゴリの「Compute Engine」の右→を開き、
③「VMインスタンス」をクリックします。

作成するVMインスタンスの設定をしていきます。
情報がめっちゃ多いので、ひとつずつ確実にやっていきましょう。
設定する箇所は画像にまとめました。
テキストで書くより見た方が早いので先に画像。

  1. インスタンス名は何でもいいです。好きな名前で。
  2. リージョンは無料枠で使えるところを。日本から物理距離が近い「us-west1(オレゴン)」を選択しています。
  3. マシンタイプは無料枠の「e2-micro」
  4. ディスクの設定を変更します
  5. OSはプレミアムイメージ以外を選択します。今回はデフォルトのDebianを使います(後述)
  6. ブートディスクの種類は「標準永続ディスク」を選択します。これ以外は課金対象です。デフォルトの「バランス永続ディスク」も課金対象です。変更しましょう。
  7. ファイアウォールのトラフィック許可は、一応両方チェックします。

ここまで設定したら、「作成」を押して完了します。

「月間予測」が$0じゃないけど?

私も最初それで詰まってたんですが、これは無料枠が適用されなかった場合の料金です。
無料枠に当てはまらないような使い方した場合にこの料金予測のような金額が請求されるんだと思います。
今回は無料枠内でしか使わないので無視して大丈夫です。

無料枠対象は「f1-micro」じゃないの?

GCP関係のちょっと古い記事だと、無料枠対象が「f1-micro」になっているものがあります。
しかし現在は上で貼った無料枠の説明ドキュメントに書いてある通り「e2-micro」が無料枠の対象になっています。
逆に、f1-microで作ると料金が発生します。
f1-microで作ったインスタンスは、開始しようとするとこういう↓メッセージが出る。
※e2-microでも出るのかは試していません、起動しっぱなしなので

更に下↓はf1-microをしばらく起動していた結果の請求画面です。
実際に環境を作ったのが月末なのと、この時は起動したり停止したりしていたので大した数字じゃないのですが、このまま使い続けて試用期間が終わると請求が発生したことでしょう。
無料枠のところに貼った画像もこの画像も「プロモーション」で減額されていることは一緒なのですが、上の画像の方の請求では「無料トライアルの残り」が減っておらず、こちらの画像の方の請求では「残り」が減っているので、請求が来るかどうかの違いが確認出来ます。

OSは変更していい?

プレミアムイメージでなければどれでもいいと思います。
私は最初CentOSとかUbuntuとか選ぼうとしましたが、各OSの違いを調べ直して「Debian GNU/Linux 10 (buster)」を選択しました。

理由:どうせシェル操作しかしない。
理由:デスクトップ環境入ってるとOSだけで容量が大きくなる。
理由:DockerのインストールドキュメントのデフォルトがDebianぽかった

宗教上の理由でもなければ素直にDebianにしましょう。
参考:【超ざっくりわかる】DebianとUbuntuの違いを比較しました

ディスクのサイズはどうしよう?

デフォルトは10GBです。30GBまでが無料枠です。
画像ではデフォルトのまま10GBになってますが、ディスク容量は多い方がいいじゃん、等がある人は30GBにします。
あと、OSを変更する人(後述)や、同サーバーに色々入れようとしている人も、気になるなら30GBにしておく方が良いでしょう。
現在、私の環境では、AutoMuteUsを動かすのに必要なもの+αをインストールした状態で、現在使用量はだいたい4GBです。

実態が良く分からないのですが、GCEの無料枠は「インスタンス数」ではなく「起動時間単位」の範囲で決まっているらしいです。
なのでディスク総容量が30GBを超えていなければインスタンスは何個作ってもいいみたいですが、複数を同時起動していると「起動時間」の枠を超過して課金対象になるのではないかと思われます。

DockerとDocker-composeをインストール

いよいよインストール作業に入ります。
非プログラマのひとたちが好まない、真っ黒な画面にアルファベットの羅列が並ぶアレを触りますが、以下書いてあるとおりに入力するだけではあります。

ターミナルの起動

VMインスタンスの一覧のここ↓からターミナルを起動出来ます。
「SSH」って書いてあるところをクリックするだけなので簡単です。

この↓画面になったら操作出来ます。
「SSH」ボタンを押してウィンドウが出てからこの画面に来るまでには結構かかります。約15秒。

以降、VMインスタンス一覧からSSHターミナルを開いて実行しているものとして進めます。
TeraTermなどのターミナルソフトを使いたい場合は、記事末尾の「ターミナルソフトを使う」を参照してください。

Dockerのインストール

Install Docker Engine on Debian | Docker Documentation

まずはDockerをインストールします。
各コマンドで何やってるかとかは細かく解説しませんので、必要なら公式のドキュメントを読んでください。
また、Debian以外のOSにインストールする場合は、上のページの左サイドバーから使いたいOSを選んでそちらを見ましょう。

手順について

ここでは公式のインストール手順にのっとって進行します。
新規インストールなので必要ないステップももちろんあると思いますが、「公式の手順」で実行するのが最も安心出来ると思いますので、こちらを採用しています。

上でSSHのターミナルを起動した直後のままであると思います。
その前に入力コマンドの説明。
背景が黒くなっているところがコマンドです。
コマンドの前に「$」が書かれていますが、この「$」自体は入力しません。コピペも出来ないようになってます。
この「$」は入力待機中になってる時に左側に表示されてる場所を指してます。
これのこと↓。

以下、各項目のコマンドを上から順番に1行ずつ実行します。
見出し区切りは公式が表示している見出しと同じものです。
ドキュメントのどこを実行しているのかを見失わないようにするためです

Uninstall old versions

sudo apt-get remove docker docker-engine docker.io containerd runc

Set up the repository

sudo apt-get update

sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release

コマンドが2つあります。2つめは複数行にわたってます。
「\」を入力すると、その行は実行されず、次の行で入力待機状態になります。
不安なら1行ずつコピペしましょう。

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Install Docker Engine

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io

ここ(ドキュメントの1.)まで実行するとかなり長々とログが出ますが、ここでインストールをしています。
途中でログが止まっているので、「大丈夫? フリーズしてない?」って不安になりますがそのままにしましょう。
インストールには10分以上かかります。

ドキュメントの2.は最新版以外をインストールするためのステップなので飛ばします。

sudo docker run hello-world

これ↑を実行すると、プログラミングではお決まり、「hello-world」を実行します。
…と言っても、ここではDockerが用意しているhello-worldのメッセージが表示され、Dockerが利用可能になったよ、と知らせてくれます。
ここまで出来たら、次はDocker-composeをインストールします。

Docker-composeのインストール

Install Docker Compose | Docker Documentation

同じく公式のドキュメントの手順に従ってインストールします。
「Install Compose」のところでは各OSごとにタブが分かれていますので、ここでは「Linux」を選択して進めます。
名前が「Debian」じゃないですけど、DebianはLinux系OSのひとつなのでこれで大丈夫。

Install Compose on Linux systems

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

ドキュメントの2.にあるFor example:のところのコマンドは飛ばす。

docker-compose --version

この↑コマンドは、Docker-composeのバージョンを表示するコマンドです。
正しくDocker-composeがインストールされていれば、インストールされているバージョンが表示されます。
これでDockerとDocker-composeのインストールが完了しました。

AutoMuteUsを導入

いざ! 実行するAutoMuteUsを環境に入れます。
GitHubからソースを持ってきますが、わざわざソースコードをダウンロードしてサーバーに上げて…とかしなくても、コマンドひとつでgitからソースコードを引っ張って来れるのです。便利。

その前に、gitが使えるかどうか確認します。

git --versions

git version xx.xx.x のように表示されたら、gitコマンドが使える状態です。
多分ここまでの手順で使えないことはないはずなので、使えなかった場合の手順は飛ばします。

AutoMuteUsのソースコードを入れる

実際にAutoMuteUsのソースコードを引っ張ってきます。

git clone https://github.com/denverquane/automuteus.git

「Cloning into ‘automuteus’…」から始まって、またずらずらっとログが並びます。
入力待機状態になるまで待ちましょう。
入力待機状態になったら、

ls

を実行すると、「automuteus」と表示されるはずです。
ここにautomuteusというフォルダが生成されたということです。
で、その中にAutoMuteUsの色々なファイルが格納されています。

.envファイルの書き換え

環境設定のためのファイル「.env」を書きます。
このステップではvimという、ターミナル上で使えるテキストエディタを使います…が
このvimはちょっとクセがあります。
こちらの記事など、「vimの使い方」を参照してください。
ここではvimの操作方法については触れません。

初心者のためのvim入門~インストールから基本操作まで~ – RAKUS Developers Blog | ラクス エンジニアブログ

以下の順にコマンドを実行します。

cd automuteus
cp sample.env .env
vim .env

とすると、画面がガラッと変わります。
これがvimの画面で、表示されているのはファイル「.env」の内容です。
画面はTeraTermの画面なので、GCEのSSHの画面だとちょっと違うと思います

書き換えるのは、.envの上から順に

  1. AUTOMUTEUS_TAG=
  2. GALACTUS_TAG=
  3. DISCORD_BOT_TOKEN=
  4. GALACTUS_HOST=
  5. GALACTUS_EXTERNAL_PORT=
  6. WORKER_BOT_TOKENS=

です。
ひとつひとつ解説します。

AUTOMUTEUS_TAG

ここにはAutoMuteUsのバージョン番号を書きます。
AutoMuteUsのGitHubのページの右側、「Releases」のところにバージョン番号が書かれているので、それを記入すればOKです。
記事執筆時点の最新版は6.15.2です。

GALACTUS_TAG

ここにはGalactusのバージョン番号を書きます。
Galactusっていうのは、ミュート・アンミュート処理を高速化するためのプログラムです。
AutoMuteUsのGalactusの項に書いてあります。
バージョン番号を何処で見るかというと、Galactusのリポジトリを見ます。
リポジトリへのリンク、面倒なのでタグ一覧のページにリンクしています。

このページの中から「-test」以外のタグを選びます。
この記事を書いた時点では2.4.1が最新です。

Galactusも導入しなければいけないのでは? と思った方はご安心ください。
AutoMuteUsの初回起動時に取得して来てくれます。
なので、タグだけちゃんと書いておきましょう。

DISCORD_BOT_TOKEN

上の方で作ったbotのtokenをここで使います。
権限をmute/deafenだけ与えたものではなく、必要な権限をきちんと与えた方の、1つめのbotのtokenを入れます。
ちなみにVMインスタンスのリストから起動したSSHの画面は、CTRL+Vが使えますので、メモ帳でtokenをコピーした後、SSHの画面上でCTRL+Vして貼り付けしましょう。
(クライアントソフトを使用している場合は、各ソフトの操作方法に従ってペーストする)

GALACTUS_HOST、GALACTUS_EXTERNAL_PORT

どこのサーバー、ポート番号で動かすかの情報です。
IPアドレスはVMインスタンスの一覧の画面の「外部IP」のところに書いてあるIPアドレスを指定します。
静的IPを取得→ドメイン(サブドメイン)に割り当てて運用している場合は、IPアドレスの代わりに該当のドメインを記述します。
以下のようにします。

GALACTUS_HOST=http://<ここにIPアドレス>:8123
GALACTUS_EXTERNAL_PORT=8123

本来はHOSTのとこにポート番号の「:8123」を書かなくていいはずなんですけど、何故か私の環境では動作しなかったので、ポート番号もちゃんと書いた。
「http://」からきちんと書くのもポイントです。

WORKER_BOT_TOKENS

上の方で作ったbotのうち、mute/deafen権限だけ与えた方のtokenを書きます。
カンマ区切りで複数指定出来ます。私は2つ入れてます。(=合計3botで動作中)

全部書けたら

書き終わったら、escを押した後に「:wq」と入力してenter。
.envを保存してvimを終了します。

AutoMuteUs起動

vimを終了するとDockerとかをインストールしてたときの入力画面に戻ってきます。
ここまで来たらいよいよAutoMuteUsを起動します。

sudo docker-compose up -d

初回起動時はGalactusを引っ張ってくるので起動に時間がかかります。
2回目以降はスルッと起動するようになります。

.envの内容を書き換えたりする際は、一度AutoMuteUsを停止します。

sudo docker-compose down

似たような動作をするコマンドに、起動(start)と停止(stop)がありますが、これらを実行しても、書き換え後の.envの設定内容を反映してくれません。
なので、単にプログラムを起動・停止する場合はstart/stop、.envの内容を変更した場合はup/downを使います。
…とはいえ、.envを書き換える時以外、基本的に停止する必要がないので、start/stopは使わない気がします。

docker-compose upを実行すると、サーバーに招待済のbotがオンラインになるので確認してみてください。
もしオンラインになってなかったら、何らかの理由でbotとAutoMuteUsが連携出来ていません。
私はメインのbotとワーカbotの計3つが稼働しているので、この通りです。

お疲れさまでした、導入出来ました!

あとはAutoMuteUs公式botを導入する場合や、ローカルにAutoMuteUsを導入してホストする場合と使い方は同様です。
botを動作させる人はAmongUs Captureを導入が必要です。
詳しい使い方は公式の説明を読んでくださいね!(雑!)

それでは、楽しいAmong Usライフを!

サーバー設定やAutoMuteUsに関するあれこれ

ここからはAutoMuteUs設置の手順以外のあれやこれやです。
AutoMuteUsの動作自体にはあんまりかかわらない事項もあるので、おわりにまで飛ばしちゃっても大丈夫です。

チャンネルごとに動作botを切り分ける

うちのサーバーでは長いこと、AutoMuteUs公式のbotとセルフホスト用のbotが同居していました。
その場合、チャンネルに起動コマンドを打つと両方のbotが反応してしまっていました。
そこで、別々のチャンネルを作り、片方では公式bot、もう片方ではセルフホストbotが反応するように設定を変えていました。

設定の仕方は実に単純です。
botを反応させたくないチャンネルの「チャンネルの権限」設定で、botのロールに対して「チャンネルを見る」権限を禁止するだけです。
ここでのポイントは「ロールで制限」すること。
「ユーザーで制限」しようとしても設定を無視して反応してくるので、必ず「ロールで制限」してください。
(おそらくbotが権限を所持しているせい。ロールで制御されているから、ロールでの指定は効くものと思われる)

AutoMuteUsの各種設定はサーバー単位

「.au settings」コマンドで、ミュートまでの待機時間などの設定を変更したりなどが出来ます。
この設定は、AutoMuteUsでいうguild、つまりサーバー単位で保存されるようです。
自分のサーバーでミュート待機時間の設定を変更した後、別のサーバーに招待して使おうとしたところ、設定が初期状態でしたので、多分そうなのだと思います。

ちなみに、AutoMuteUs最新ではゲームの戦績も記録してくれるのですが、それもサーバー(guild)&ユーザー単位だと思います。
あと.envの記述からすると、データベースはPostgreSQLですね。

ファイアウォールの設定

上では書きませんでしたが、不正アクセス対策にファイアウォールの設定をしておくといいと思います。
が、どういう動作をしているのかを良く分かっておらず解説出来ないので、詳しくは他の記事を読んでください。
一応、私はAutoMuteUsを動作させる8123番ポートと自宅からのsshアクセスに関する設定をしてあります。

参考:GCP の永久無料枠を使って無料で Among Us のミュートボットを運用したかった
参考:これから始めるGCP(GCE) 安全に無料枠を使い倒せ – Qiita

静的IPの取得

静的IP、あるいは固定IPとも。
静的IPを取得しておけば、AutoMuteUsの環境設定でIPを書き直したりする必要がないのでこれをやっとくといいかも。
必要があれば、手持ちのサブドメインに登録したりも出来ます。
なお、静的IPを取得した後は、インスタンスを起動しっぱなしにしておく必要があります。
起動していないインスタンスに割り当てられた静的IPは課金対象になりますので、うっかりVMインスタンスを停止させないこと。

参考:GCP Compute Engineで静的IPアドレスを割り当てる | yusuke.blog

(サブ)ドメインに登録、SSL化

AutoMuteUsを設置した本人以外が使う場合にIPアドレスが丸出しになるのが気になる人は、上で取得した静的IPをサブドメインに割り当てておきましょう。
ドメインサービスごとに操作メニューが異なるのでここには手順を書きませんが、やることは「Aレコードにサブドメイン名とVMインスタンスの静的IP」を登録するだけです。
ネームサーバーなどは変更しません。

また、(サブ)ドメインを利用する場合、SSL化することが出来ます。
AutoMuteUsを動かすだけならDocker・Docker-compose導入のみで済みますが、SSL化するときにはNginxやApacheなどのWebサーバーや、Let’s Encryptを自動更新させるためのCertbotなどの導入が必要です。
更にSSL対応をするように.envを書き換える必要があります。

SSL化については調べるだけ調べて私は実行していません……
読んだのは下の記事です。

参考:Among Us の便利ボット AutoMuteUs の通信をリバースプロキシ(Nginx/Caddy)と Let’s Encrypt で暗号化する | kurokobo.com

TeraTermなどのターミナルからSSH接続したい

上で書いた通り、VMインスタンスの一覧からSSHターミナルを立ち上げられるので、基本的には要らないです。
そんなにしょっちゅうアクセスするもんでもないので、そういう意味でもターミナルの導入は要らないと思う。
しかし私は立ち上がるまでに結構時間がかかるのと、ログを取りたかったので、TeraTermなどで接続したいと思いました。

手順自体は以下のサイトのやり方でいけました。
何故かPoderosaからは接続出来なかった(ユーザー名のあたりのせいかな?)ので、素直にTeraTermを使います。
参考:【GCP】TeratermからGCP(GCE)VMインスタンスへSSHログインする設定方法(はじめてのGCP構築 3) – とあるインフラエンジニアのテクニカルノート

1点注意…というか、私が悪かったのかは分からない事項として。
VMインスタンス一覧の「SSH」ボタンから起動するユーザーと、今回TeraTerm環境で作ったユーザー、別にしちゃってました。というより、VMインスタンス側で起動する方のユーザーの環境を作れたのかはよく分からない。とりあえず別ユーザーでした。
で、そのままTeraTerm環境で環境構築しました。
その後、VMインスタンス一覧の「SSH」ボタンからターミナル起動して、AutoMuteUs環境をいじろうと思ったら、環境がない。
lsしてもAutoMuteUsをインストールしたフォルダが見当たらない。

サーバ扱う人からしたら当たり前の事項かもしれないのですが、サーバ扱う、シェル触るようなことがほとんどない私のような者はちょっと慌てました。
まぁTeraTermでアクセスすればいいだけではありますが。
上の記事以外でも、GCE上で進める手順もあるのですが、私は何故か上手く行きませんでした。何でだろ。

再度書きますが、基本的にはVMインスタンス一覧の「SSH」ボタンから起動出来るターミナルで操作すれば大丈夫です。そんなにしょっちゅういじったりもしないので。

ところでTeraTermのログ、タイプミスして書き直しているところまできっちりログ取っちゃうらしくて、私がタイプミスした痕跡が残ってました。
1行実行したらログ取ってよぉ……

おわりに

公式のドキュメントと結構にらめっこしながら導入したこのAutoMuteUs環境ですが、導入後はすごく快適に遊べています!
AutoMuteUsというツールを作ってくれた人や手順を書き記してくれた先人の皆様ありがとう……

画像が多くてページが超長くなりましたが、参考になれば幸いです!

よろしければ

今後ともまとめを作っていきたいと思います。
マシュマロへ応援メッセージや、Donationのリンクからお茶奢っていただけたりすると励みになります~よろしくお願いします!

週末あもあす会やってます!

毎週土曜22:30~、私主催の「週末あもあす会」をやってます!
よかったら見に来てくださいね!

これは現時点で最新の配信アーカイブ↓

Among Us絡みの記事

公式ドキュメント、参考にした記事まとめ