dockerで簡単におひとりさまMastodonを構築する

タイトルに簡単って書きましたけど素人には全く簡単ではないです。
いろんなサイト見ながら構築してたんですけど、1年前の記事ばかりで半分くらい当てにならなかったんで引っかかりやすそうなところをメモっておきます。

この記事ガイドに補足を付け加える感じで書いてみます
対象はcentos7
sshやドメイン取得などの初期設定についてはできているものと想定して書きます

最初にdockerですが公式のガイドを見ながらやってください
リポジトリ登録してインストールしてください
"curl -sSL https://get.docker.com/ | sh"でもインストールできるみたいですが私は試してないのでわからないです。

次にdocker-composeをインストール
リリースページに書いてあるとおりにコマンドを書けば入ります。
その後ユーザーをdockerというgroupにいれてください
"gpasswd -a [user] docker"とかやっときゃ行けると思います
ログインし直して"docker-compose version"が動いたら完璧です

Nginxもインストールします
vim /etc/yum.repos.d/nginx.repo
で開いてiで挿入モードにしたあと

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

をコピペ

yum -y --enablerepo=nginx install nginx

でインストール

ssl接続できないとならないのでletsencryptをしてください
ホームディレクトリ(cd ~/)で
git clone https://github.com/letsencrypt/letsencrypt
cd letsencypt
./letsencypt-auto
の順に実行するとあとは対話式で証明書の発行をしてもらえます

つづいて好きなディレクトリでmastodonをcloneしてください
多分ホームディレクトリ(cd ~/)が一番やりやすいかとは思いますが
git clone https://github.com/tootsuite/mastodon.git
で持ってこられます
masterのソースコードでいろいろやるとまぁまず失敗するので(1敗)今(9月現在)なら
git checkout v2.5.0
のようにコマンド打ち込んでバージョンを指定してください
現在の最新版はこちらを参考にするかgit tagで見てください

ここからは
cd mastodon
でフォルダの中で行います

次にdocker-compose.ymlをvimなんかで書き換えていきます
iで挿入モードにして書き換えていきます

事前にbuildされたイメージをひっぱってきて使うことができるんですが私が構築するときなぜかうまく動かなかったので自前でbuildさせるほうがいいと思います
なのでbuild : .をコメントアウトしないようにしてください

image: tootsuite/mastodon
の行は書き換えなくてもいいっぽいのですが私は
image: tootsuite/mastodon:v2.5.0
って書いております

次にvolumeの永続化です
### Uncomment to enable DB persistance
#    volumes:
#      - ./postgres:/var/lib/postgresql/data
  redis:
    restart: always
    image: redis:alpine
### Uncomment to enable REDIS persistance
#    volumes:
#      - ./redis:/data
この部分のコメントアウトされてる4行だけをアンコメントしてください
気を使って他の部分も変えると大変なことになります(1敗)
書き換えが終わったら:wqで終わらせるなり間違ったら:q!で抜け出すなり

続いて
cp .env.production.sample .env.production
をコピペして実行してください
後々使います

docker-compose build
でbuildします

最後に
chown -R 991:991 public
をsudoで実行してください
多分普通のユーザーじゃできないとは思いますが
これをやっておかないと多分動いても画像などを上げられず詰みます(1敗)

ここまできたらあとは流れで
docker-compose run --rm web bundle exec rake mastodon:setup
でフィニッシュ…と思いきや問題が発生すると思います
このコマンドで対話式のsetupができるのですが、どういうわけだかdockerではsetupした設定ファイルが保存されず空の.env.productionでmastodonを作り出そうとして失敗します
多分バグなのでそのうち直るとは思いますが…

なので直接.env.productionを書き換えていきます
vi .env.production
で書き換え開始

最初のredisとDBは触らないでください
setupでも聞かれたらenter連打しちゃっていいです

続いてLOCAL_DOMAIN=example.comの部分を自分のドメインに変更してくだしあ

次に

# Application secrets
# Generate each with the `RAILS_ENV=production bundle exec rake secret` task (`docker-compose run --rm web rake secret` if you use docker compose)
SECRET_KEY_BASE=
OTP_SECRET=

この部分は文字通りです
一旦vimを抜け出して
docker-compose run --rm web rake secret
を2回実行して出てきた文字列を1箇所ずつコピペしてください

# VAPID keys (used for push notifications
# You can generate the keys using the following command (first is the private key, second is the public one)
# You should only generate this once per instance. If you later decide to change it, all push subscription will
# be invalidated, requiring the users to access the website again to resubscribe.
#
# Generate with `RAILS_ENV=production bundle exec rake mastodon:webpush:generate_vapid_key` task (`docker-compose run --rm web rake mastodon:webpush:generate_vapid_key` if you use docker compose)
#
# For more information visit https://rossta.net/blog/using-the-web-push-api-with-vapid.html
VAPID_PRIVATE_KEY=
VAPID_PUBLIC_KEY=

ここも同様に
docker-compose run --rm web rake mastodon:webpush:generate_vapid_key
を実行して出てきた文字列をコピペしてください
こちらは1回だけで

VAPID_PRIVATE_KEY=ほにゃらら
VAPID_PUBLIC_KEY=ほにゃらら

みたいに出力されるので本当に全文コピペでいいかと

難関なのはe-mailです
sparkpostだのなんだのといろんなサイトに書いてあるのですがgmailを使いましょう
googleの2段階認証を利用するようにしておいてください
こちらのサイトを参考に

SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_LOGIN=[my.gmail.account]@gmail.com
SMTP_PASSWORD=
SMTP_FROM_ADDRESS=[my.gmail.account]@gmail.com


こんな感じに編集してください
PASSWORDの部分だけは特殊です
こちらのサイトを参考にアプリパスワードを作成してください
アプリの名前はmastodonだのご自由にどうぞ
出来上がった文字列をそのままPASSWORDのところにコピペしてください

ここまできたら
docker-compose run --rm web bundle exec rake mastodon:setup
でsetupを始めてください
色々聞かれるので設定通りに書き込んでいってください
gmailのパスワードのところなんかは画面に表示されませんがコピペすればちゃんとコピペされます

あとは勝手にbuildとかやってくれますのでのんびり紅茶でも飲んでてください

終わったら
docker-compose up -d
してください

これでmastodonは動いていると思います


Nginxを動かしたいのでその設定に入ります
vi /etc/nginx/conf.d/mastodon.conf
で設定ファイルを作って
こっちのガイドから全部コピペしてください
server_name example.com;
が2箇所と

ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

の2箇所のexample.comを自分のドメインに置き換えてください

あとはsystemctl reload nginxで動くと思います
お疲れ様でした

なんども失敗してこなれてくると実働時間10分くらいで建てられるようになるかと思います。
そんなに失敗したくなかった…
まぁ今はさくらVPSがスタートアップスクリプト出してくれてるんで何も苦労することないと思います
時間ができたらドメインのあたりとか毎週cronでやらなきゃいけないコマンド実行とかどういう設定したのか追記するかと





コメント

このブログの人気の投稿

mac book proにubuntuを入れるとなぜかファンがうまく回らないので設定してみた

v2cmod-zをいれてついでにB11でパッチしてRhinoスクリプトエンジンまで入れてしまおうというめんどくさい解説

Mirakurun+epgstation+KonomiTVを改めてdockerで構築したので未来の自分のためのメモ書き