マストドンの自鯖を立てた
今まで使ってたマストドンが画像を一切表示してくれなくなりました。
そもそも知り合いとの相当ローカルな交換日記みたいな使い方しかしてなかったので、他のサーバー探してそっちに移行するくらいなら、自分でサーバー立てられないかな?と思ったのが発端です。
サーバー設定
必要なもの
- VPSサーバー
- ドメイン
ConohaVPSで元々マイクラを遊んでいたので、それを使うことにしました。
また、ワードプレス用に使ってたドメインがあったので、それにサブドメインを設定して使うことにしました。(以降は、例としてexample.comと表記します)
ムームードメインの場合は、コントロールパネルからDNSの設定を変えられます。
ドメイン操作>ネームサーバ設定変更
ムームードメインのネームサーバ(ムームーDNS)を使用する
にチェックを入れる
ドメイン操作>ムームーDNS
ドメインの「変更」>「設定2」
サブドメインにmastodon、種別「A」、内容にVPSのアドレスxxx.xxx.xxx.xxx
マストドンのインストール
VPSのOSはCentOSです。
/opt/の下に/mastodonをクローンします。
gitのインストール
sudo yum install -y git
dockerまわりのインストール
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker
Docker compose用のインストール
mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
マストドンのcloneとstableバージョンのチェックアウト
git clone https://github.com/mastodon/mastodon.git
cd mastodon
git checkout v4.2.7
環境ファイルの編集
cp .env.production.sample .env.production
.env.productionをvim等で開いて
LOCAL_DOMAIN=mastodon.example.com
秘密鍵の生成
sudo docker compose run --rm web bundle exec rake secret
.env.productionをvim等で開いて
SECRET_KEY_BASE=上で生成したキーをここに貼る
sudo docker compose run --rm web bundle exec rake secret
OTP_SECRET=(同じく生成して貼る)
S3_ENABLED=false
にする
ビルド
sudo docker compose build --no-cache
sudo docker compose run --rm web rake db:setup
sudo docker compose run --rm web rake assets:precompile
起動
sudo docker compose up -d
nginx + SSL構成の追加
パッケージインストール
sudo yum install -y epel-release
sudo yum install -y nginx
sudo yum install -y certbot python3-certbot-nginx
nginx 設定ファイルの作成
sudo nano /etc/nginx/conf.d/mastodon.conf
ファイルに以下のコードを貼り付け
server {
listen 80;
server_name mastodon.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
※このままだと画像アップロードの制限がデフォルトの数値になってしまうので、大きめの写真とかをアップしたい場合は、server_nameの下に
client_max_body_size 32M;
を追記しましょう
再起動
sudo systemctl enable nginx
sudo systemctl start nginx
Let's Encrypt(SSL)証明書を取得
sudo certbot --nginx -d mastodon.example.com
メールアドレスの入力を求められるので、入力する
sudo systemctl reload nginx
ポート 80 / 443 を開放する
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
以下のコマンドで確認する
sudo firewall-cmd --zone=public --list-all
http httpsが表示されてればOK
動作確認してみる
curl -I https://mastodon.example.com
HTTP/1.1 200 OK
ならOK
ダメな場合…
dockerの状態を確認
sudo docker ps
upになってなかったら
sudo docker logs mastodon-web-1
などでログ確認
コンテナの再起動
sudo docker compose down
sudo docker compose up -d
ユーザー登録
管理者権限のユーザー作成
sudo docker compose run --rm web tootctl accounts create <ユーザー名> --email <メールアドレス> --confirmed --role Admin
うまくいくと、初期パスワードが発行されるので、それを使ってログインできるようになります。
管理画面は
mastodon.example.com/admin
サーバーを承認制にするなどの設定はここからします。
一般ユーザーの登録
sudo docker compose run --rm web tootctl accounts create <ユーザー名> --email <メールアドレス> --confirmed
SMTP設定
メール登録のためにほんとは設定しないといけないんですけど、知り合いしか登録しないので今のところWIP
さいごに
これで一旦形にはなりました。
Discussion