個人インスタンスだし別にいいかな?って思っていたのですが、
今回master追随の試験インスタンスを作るに
本稼働インスタンスとデータを共有した状態にしたくて
オブジェクトストレージへ移行したのでその忘却禄をメモします。
まず、移行の流れですが
1. S3準拠のオブジェクトストレージを用意する。(今回はminioを使用)
2. public/system配下のデータをオブジェクトストレージへコピーする。
3. mastodonの設定を変更する。
っといった感じです。
最後の設定に手間取りましたがファイルのコピーはコマンド一発なので
わかってしまえばそれほど難しいことではないです。
では、細かい手順を書いていきます。
■S3準拠のオブジェクトストレージを用意する
DockerHubでminioのイメージが配布されていますのでこれを利用します。
mastodonのdocker-compose.ymlを以下のように修正
# webとstreamingのdepends_on:設定にminioへの内部リンクを追記 depends_on: - db - redis ↓ depends_on: - db - redis - minio # 末尾に追記 minio: image: minio/minio restart: always ports: - "9000:9000" volumes: - /root/mastodon-volume/minio/data:/data - /root/mastodon-volume/minio/config:/root/.minio command: [server, /data]
Dockerを起動したらaccessKeyとsecretKeyを起動ログから入手しましょう。
# docker-compose up -d # docker logs mastodon_minio_1 [root@localhost mastodon]# docker logs mastodon_minio_1 Endpoint: http://172.18.0.5:9000 http://127.0.0.1:9000 AccessKey: {accessKey} SecretKey: {secretKey} :
※ これは以降の手順で必要となりますのできちんとメモしておきましょう
■public/system配下のデータをオブジェクトストレージへコピーする
まずは、オブジェクトストレージにファイルを配置する場所(bucket)を作成します。
http://[IPアドレス]:9000/にアクセスしてください。
上記の画面が表示されたらメモしたaccessKeyとsecretKeyでログインします。
ログインしたら右下の「+」からbucketを作成してください。
(今回は「media」という名前で作成しています)
次にアクセス権を設定します。
「media」の右側に出る「・・・」をクリックしてください。
入力欄には何も入力せずにAddでポリシーを追加します。
(Read Onlyとして外部からオブジェクトストレージへの参照ができるようにします)
bucketの作成が終わったらファイルをコピーしていきます。
コピーにはminioのcliクライアントを利用しますので、まずはcliクライアントをインストールします。
# curl https://dl.minio.io/client/mc/release/linux-amd64/mc -o /usr/local/bin/mc # chmod +x /usr/local/bin/mc
インストールしたら以下のコマンドでローカルファイルをminioに登録していきます。
(自身の永続化設定に合わせてpublic/systemのパスはよみかえてください)
# mc config host add mastodon_minio_1 http://127.0.0.1:9000 {accessKey} {secretKey} # mc -r public/system mastodon_minio_1/media
※ ファイル量によってコピーに時間はかかりますが、気長に待ちましょう。
■mastodonの設定を変更する
オブジェクトストレージを使用するように.env.productionを編集します。
minio用のひな型が記載されているのでコメントを外して以下のように設定します。
# S3 (Minio Config (optional) Please check Minio instance for details) S3_ENABLED=true S3_BUCKET=media AWS_ACCESS_KEY_ID={accessKey} AWS_SECRET_ACCESS_KEY={secretKey} # S3_REGION= S3_PROTOCOL=https S3_HOSTNAME={インスタンスのドメイン} S3_ENDPOINT=http://minio:9000/
設定が終わったらdocker-compose up -dで再作成&再起動しましょう。
以上でオブジェクトストレージへの移行は完了します。
頻繁に外部からトゥートが来る環境の場合、
設定を先に行い、ファイルコピーを後にするといいかもしれません。