妄想日記 by 妄想エンジン


mastodon インスタンスをたてる(準備編)

ということで、一部で大流行中の mastodon ですが、docker でイメージが公開されているため、手軽に入れて試すことができます。

とはいえ、インストールするのと、それを運用するのはまた別の次元の話なのですが。

で、FreeBSD にも docker はあるので、さっそく試してみました。

ERROR: client and server don't have same version (client API version: 1.22, server API version: 1.19)

だめでした。残念。

そこであきらめたら試合終了なので、別方面から頑張ることにします。
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 を使います。

$ sudo pkg install qjail
$ sudo qjail install -z mastodon

start したり stop したりするときに便利なように mastodon というゾーンを作成してそこにjailを作るようにおきます。
この際、ホスト側が zfs を使っている場合には、先に

$ sudo zfs create zroot/usr/jail.mastodon

しておくと、いろいろとはかどります。

次に個々のコンテナを作成します。

$ sudo qjail create -z mastodon -4 192.168.0.40 -n em0 mastodon-web
$ sudo qjail create -z mastodon -4 192.168.0.41 -n em0 mastodon-db
$ sudo qjail create -z mastodon -4 192.168.0.42 -n em0 mastodon-redis
$ sudo qjail create -z mastodon -4 192.168.0.43 -n em0 mastodon-minio

PostgreSQLを動かすコンテナにはおまじないをします。

$ sudo qjail config -z mastodon -y mastodon_db

これで sysvipc が使えるようになります。これをやらないとqjail で PostgreSQLサーバが起動しません。

各コンテナを起動します。

$ sudo qjail start -z mastodon

mastodon zone のコンテナをすべて起動します。

設定していきましょう。
まず、DBの設定

$ sudo qjail console -z mastodon mastodon_db

で、dbコンテナの中に入ります。

# pkg install postgresql96-server
# sysrc postgresql_enable="YES"
# service postgresql initdb
# su - postgre
$ vi data96/pg_hba.conf

で192.168.0.0/24 のアクセスを許可します。

$ vi data96/postgresql.conf

でlistenするアドレスを指定(このばあい 192.168.0.41)
exit で戻って

# service postgresql start

でDBを起こします。

# su - postgres -C 'psql -c "CREATE USER mastodon CREATEDB;"'

で、DBにユーザーmastodon を作成します。
ここまでできたら exit でDBコンテナから抜けます。
これでDBコンテナを再起動しても、自動的に PostgreSQLが上がってきます。

つぎに、redis サーバです。
これは普通に

$ sudo qjail console -z mastodon mastodon_redis

して、中に入って

# pkg install redis
# sysrc redis_enable="YES"

して、

# vi /usr/local/etc/redis.conf

を編集します。bind するアドレスと、localhost以外からのアクセスを許可するだけでとりあえず大丈夫。
あとは

# service redis start

して実行しておきます。netstat -a で待ち受けているかどうか確認しましょう。

minio サーバも設定します。
これも

$ sudo qjail console -z mastodon mastodon_minio

で中に入って

# pkg install minio minio-client
# sysrc minio_enable="YES"

しておいてから、一旦 minio サーバを起こします。

# service minio start

すると、 /usr/local/etc/minio/config.json が作られますので、そこに記載されている
"credential": {
"accessKey": "***********************",
"secretKey": "**********************************"
},
をメモっておきます。これはあとで mastodon の設定で使います。
また、

# netstat -a

すると、tcp:9000 で待ち受けているはずです。
オブジェクトの保存ディレクトリが /var/db/minio のしたに作られます。これは/etc/rc.conf の中の minio_disks で指定すれば別の場所に作ることも可能です。
クライアントから接続してみましょう。

# minio-client config host list

するとデフォルトで登録されているリストの一覧が出てきます。ここで、local のアクセスキーとシークレットキーが空欄になっているので設定します。

# minio-client config host add local http://localhost:9000 <先ほどメモったアクセスキー> <先ほどメモったシークレットキー>

これで設定は ~/.mc に保存されました。

あとはからのバケットを作って、アクセスポリシーを設定しておきます。

# minio-client mb local/mastodon-web
# minio-client policy -r public local/mastodon-web

これでオブジェクトストレージの準備は完了です。

ここまでは、とくに問題もなくインストール&設定&起動できました。
ちょっと長くなってきたので、ここからは次の記事にします。

ツイート
|top |アフィリエイト |windowsネタ |料理メモ |コンタクト |twitter |
さわやかなエロスを目指す--妄想エンジン ©1996-2022
コンテンツ配信