ということで、一部で大流行中の mastodon ですが、docker でイメージが公開されているため、手軽に入れて試すことができます。
とはいえ、インストールするのと、それを運用するのはまた別の次元の話なのですが。
で、FreeBSD にも docker はあるので、さっそく試してみました。
だめでした。残念。
そこであきらめたら試合終了なので、別方面から頑張ることにします。
mastodon の git を見ると、
https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/...
というのが公開されており、docker から剥がして設定するためのドキュメントがあります。
これを参考にしてやってみましょう。
さて、docker といえば軽量コンテナですが、FreeBSDにも古くより伝わるjailといコンテナシステムがあります。
そこで動かそうと、いろいろ試してみました。
まず、mastodon のインストールの前に、前提で動かさないといけないサーバがいくつかあり、あったほうがいいというサーバもいくつかあります。
DBにはPostgreSQLサーバを。
KVS には Redis サーバを。
画像の保存には S3 互換のオブジェクトストレージの minio を。
この辺をまず jail にインストールしていきます。
素の jail はいろいろとアレなので、ここでは qjail を使います。
start したり stop したりするときに便利なように mastodon というゾーンを作成してそこにjailを作るようにおきます。
この際、ホスト側が zfs を使っている場合には、先に
しておくと、いろいろとはかどります。
次に個々のコンテナを作成します。
PostgreSQLを動かすコンテナにはおまじないをします。
これで sysvipc が使えるようになります。これをやらないとqjail で PostgreSQLサーバが起動しません。
各コンテナを起動します。
mastodon zone のコンテナをすべて起動します。
設定していきましょう。
まず、DBの設定
で、dbコンテナの中に入ります。
で192.168.0.0/24 のアクセスを許可します。
でlistenするアドレスを指定(このばあい 192.168.0.41)
exit で戻って
でDBを起こします。
で、DBにユーザーmastodon を作成します。
ここまでできたら exit でDBコンテナから抜けます。
これでDBコンテナを再起動しても、自動的に PostgreSQLが上がってきます。
つぎに、redis サーバです。
これは普通に
して、中に入って
して、
を編集します。bind するアドレスと、localhost以外からのアクセスを許可するだけでとりあえず大丈夫。
あとは
して実行しておきます。netstat -a で待ち受けているかどうか確認しましょう。
minio サーバも設定します。
これも
で中に入って
しておいてから、一旦 minio サーバを起こします。
すると、 /usr/local/etc/minio/config.json が作られますので、そこに記載されている
"credential": {
"accessKey": "***********************",
"secretKey": "**********************************"
},
をメモっておきます。これはあとで mastodon の設定で使います。
また、
すると、tcp:9000 で待ち受けているはずです。
オブジェクトの保存ディレクトリが /var/db/minio のしたに作られます。これは/etc/rc.conf の中の minio_disks で指定すれば別の場所に作ることも可能です。
クライアントから接続してみましょう。
するとデフォルトで登録されているリストの一覧が出てきます。ここで、local のアクセスキーとシークレットキーが空欄になっているので設定します。
これで設定は ~/.mc に保存されました。
あとはからのバケットを作って、アクセスポリシーを設定しておきます。
これでオブジェクトストレージの準備は完了です。
ここまでは、とくに問題もなくインストール&設定&起動できました。
ちょっと長くなってきたので、ここからは次の記事にします。