ラズパイ上でmastodonインスタンスを建てるシリーズ第3回。前回まででネットワークの設定が終わっているので、いよいよmastodonをインストールしていく。
・公式ドキュメントを見ろ
基本的にインストールの手順は公式ドキュメント(Preparing your machine, Installing from source)に載っているのでこれに従ってやればよい。ただし現時点(2020/06/04)ではドキュメントの前提環境がUbuntu18.04なので、そのままやると若干躓く箇所がある。これはライブラリのバージョンなどに依ってその時々で異なると思うので、あまりこの記事を過信せず臨機応変に対応されたい。
・ざっくりした手順
- ①fail2ban・iptables-persistentをインストール、ファイアウォールを構築
- ②システムの依存パッケージのインストール
- ③Rubyインストール
- ④データベース(PostgreSQL)セットアップ
- ⑤mastodonのセットアップ
- ⑥nginxのセットアップ
- ⑦SSL証明書取得
- ⑧サービスの設定
以下に実際に躓いたポイントを挙げていくが、あくまでドキュメントに従ってやっていき、もしこの記事と同じところでうまくいかなかったら参考にする程度でやるべきである。なお見出しの番号は上の手順のものと対応している。
・①: iptables-persistentのリロードに失敗する
iptables-persistentの設定ファイルを書き換えた後、設定ファイルをロードするために
With iptables-persistent, that configuration will be loaded at boot time. But since we are not rebooting right now, we need to load it manually for the first time:
$ iptables-restore < /etc/iptables/rules.v4
となっているが、これに従うと、
iptables-restore v1.8.2 (nf_tables) chain 'reject' does not exist
とエラーを吐かれる。
設定ファイルは起動時読み込みであるので、ラズパイを再起動すれば問題ない。再起動後に
$ sudo iptables -L
を打って、設定ファイルに書いた内容が反映されていればOKだ。
・②: libgdbm5がインストールできない
E: Unable to locate package libgdbm5
というエラーが吐かれる。
今動かしているRaspbian BusterはDebian 10(Buster)ベースなのでlibgdbm6が対応している。
$ sudo apt install libgdbm6
とすればよい。
・③: Rubyのインストールにはクソ時間がかかる
これは上手くいかないというわけではないが、1時間くらいはかかるので覚悟しておいたほうが良い。
・③: bcryptのコンパイルに失敗する
An error occurred while installing bcrypt (3.1.13), and Bundler cannot continue.
Make sure that `gem install bcrypt -v '3.1.13'` succeeds before bundling.
というエラーが出る。
これはGitHubでIssueが立っているが、まだ解決していないっぽいのでbcryptは3.1.12に戻しておくのがよさそうだ。
Gemfile.lock
ファイルの中に、bcrypt (3.1.13)
と書かれた行があるので、これをbcrypt (3.1.12)
にすれば大丈夫だと思う。
・⑦: SSL証明書にはドメインが必要
SSL証明書はドメインに対して発行されるものなのでドメインはちゃんと取っておこう(前回の記事から順番に来た人は大丈夫なはずだ)。ドメインなしでローカルIPで試したいと思っても、mastodonはSSL接続しか受けないようになっているのでローカルIPで接続はできない。nginxの設定ファイルを弄って443番(ポート)で受けている部分を80で受けるように書き換えたらできるかもしれないが、潜在的なバグの要因になりかねないので止めたほうが良い。
・接続テストをする前に...
公式ドキュメント通りに最後まで従えばこれでmastodonのインストールはできているはずだ。ここで意気込んでブラウザの窓にドメイン名を打ち込んでみると...多分サーバーが見つかりませんとかそんな感じのエラーが出るのではないだろうか。これは冷静に考えると当然のことで、ルーターは自分から自分のネットワークに繋ぐようにはできてないのである。
じゃあローカルIPの192.168.128.82を入れてみればいいじゃないかと思うかもしれないが、そうすると多分nginxのウェルカムページが出てくるはずだ(設定で切ったら出てこないかもしれないが、とにかくmastodonの画面にはならない)。これは、同じIPアドレスにアクセスしてもnginx側で「どのドメインにアクセスしようとしたか」を見ているからで、これを解消する方法は2通りある。
1つはパソコン側のhostsファイルを弄る方法で、WindowsならC:\Windows\System32\drivers\etc\hosts
にある。ここに
192.168.128.82 mstdn.mell0w-5phere.net
といった感じで追記すればよい。localhost
が127.0.0.1につながるのもhostsファイルのおかげである。
もう1つはnginxの設定ファイルを弄る方法で、次のように/etc/nginx/sites-enabled/mastodon
のserver_name
にローカルIPを追記する方法だ。
server_name mstdn.mell0w-5phere.net 192.168.128.82;
これだとSSL証明書のドメインが食い違うのでブラウザで見ると警告画面が出ると思うが、一応スルーして見ることができる。
前者は簡単だが使うパソコンが複数ある時はそれぞれに設定しないといけないので面倒臭い、後者は警告が出るのが面倒臭いで一長一短だが、個人的にはhostsファイル弄るほうが良いと思う。
そんな感じで大長編Raspberry Piにmastodonのインスタンス建てるシリーズは終了である。そのほかにmastodonとは直接関係ないが個人的に引っかかったポイントの記事もぼちぼち書く予定だ。よいmastodon on Raspberry Piライフを。