ちょっと実験も兼ねて、mastodonを連合許可モード(旧:ホワイトリストモード)で立ち上げてみました。
ひとまず、ドメインとVPSを確保します。今回は、lightsailの2GBメモリモデル(月$10)を使用しています。OSはUbuntu 20.04です。
VPSが出来たらsshでログインして以降の操作を行います。
まずは、環境構築前の設定から。
lightsailはパスワードによるssh接続がデフォルトで出来ないようになっていますので、ssh関連の設定は追加では行っていません。
続いてマストドンのセットアップを始めます。
今回はUbuntu 20.04なので、インストールするパッケージが上記リンクで記載されているものとは若干異なります。昔記事にしているのでこちらをご覧ください。
実は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パッケージを入れなおしてください。
「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ポートはデフォルトでは解放されていないので設定が必要です。
連合制限モードの設定はこちらをご覧ください。
.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件になります。管理者が連合したいサーバをモデレーション画面で追加していくことになります。追加すると、追加されたサーバからユーザの検索などができるようになります。
モデレーション画面はこんな感じです。「連合リレーはしたいけどどのサーバとお付き合いしたいかは決めたい」ときはこのモードが良いのではないかと思います。