プログラミングなんてわからないんですけど〜

元プログラマによるプライベートでのプログラミング日記。1/3のつもりだけどソフト関連はここがメイン

mastodonを連合許可モード(旧:ホワイトリストモード)で立ち上げてみた

ちょっと実験も兼ねて、mastodonを連合許可モード(旧:ホワイトリストモード)で立ち上げてみました。

ひとまず、ドメインVPSを確保します。今回は、lightsailの2GBメモリモデル(月$10)を使用しています。OSはUbuntu 20.04です。
VPSが出来たらsshでログインして以降の操作を行います。
まずは、環境構築前の設定から。

docs.joinmastodon.org

lightsailはパスワードによるssh接続がデフォルトで出来ないようになっていますので、ssh関連の設定は追加では行っていません。

続いてマストドンのセットアップを始めます。

docs.joinmastodon.org

今回はUbuntu 20.04なので、インストールするパッケージが上記リンクで記載されているものとは若干異なります。昔記事にしているのでこちらをご覧ください。

www.kaias1jp.com

実はjoinmastodonの記事が分かりにくいのですが、System packagesをインストールする前にnodejsのインストールとyarnのapt-key追加を先にやらなければいけません。 もしそのままやってしまった場合は、以下のコマンドを実行してから先に進んでください。

apt remove cmdtest
apt install -y nodejs yarn

「Setting up PostgreSQL」でmastodonユーザをpostgresqlに登録していますが、今回dockerは使わないのでmastodonユーザにパスワードを設定する必要があります。

su - postgres
psql
alter role mastodon with password 'mastodon';
\q

ここでは「mastodon」という文字列をパスワードに設定していますが、変えても構いません。

「Setting up Mastodon」まではjoinmastodonの記事の通りです。今回はv3.3.0を入れています。
「yarn install --pure-lockfile」がうまくいかないときは、上記の通りcmdtestパッケージを削除してyarnパッケージを入れなおしてください。

github.com

「Generating a configuration」を始めるといろいろ入力することになります。今回はdockerを使用しないので「Are you using Docker to run Mastodon? 」は「n」を入力。続いて「PostgreSQL host: (/var/run/postgresql) 」は「localhost」を指定します。「Password of PostgreSQL user:」でDBの設定で後から設定したパスワードを入力してください。あとは各自したいように。

「Setting up nginx」で一か所ひっかかります。このままcertbotを呼び出すとエラーになります。

vi /etc/nginx/sites-enabled/mastodon

などでmastodonファイルを書き換えます。

 -   listen 443 ssl http2;
 -   listen [::]:443 ssl http2;
 +   listen 443;# ssl http2;
 +   listen [::]:443;# ssl http2;

sslのところをひとまずコメントアウトしておきます。これでcertbotを実行してうまくいったら元に戻してください。あとは最後まで走り切ればひとまず環境は作れました。管理者でmastodonにwebからログインできるか確認してください。なお、lightsailではIPv4の443ポートはデフォルトでは解放されていないので設定が必要です。

連合制限モードの設定はこちらをご覧ください。

qiita.com

.env.productionファイルに「LIMITED_FEDERATION_MODE=true」を追加してビルドしなおしです。

mastodonユーザにて

cd ~/live
bundle install
yarn install
RAILS_ENV=production bundle exec rails assets:precompile

rootユーザにて

systemctl restart mastodon-web mastodon-sidekiq mastodon-streaming

連合制限モードですが、/aboutページも見れないようになります。そのサーバーのユーザ名がわかっていても、連合を許可しない限り別のサーバの検索画面で検索しても結果は0件になります。管理者が連合したいサーバをモデレーション画面で追加していくことになります。追加すると、追加されたサーバからユーザの検索などができるようになります。

f:id:kaias1jp:20210128215822p:plain

モデレーション画面はこんな感じです。「連合リレーはしたいけどどのサーバとお付き合いしたいかは決めたい」ときはこのモードが良いのではないかと思います。