DockerとLet's Encryptで自分用Mastodon鯖を立ててみた
自分用の設定メモ
事前準備
- conohaでdockerのインスタンスを作成
2.イメージ -> イメージタイプ = アプリケーション
に「Docker」っていうのがある
- docker-composeのインストール
- curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
- ドメインの取得
- ufwで80番と443番のポートを開放
構成
docker-composeを使って、以下の2つの環境を作成
mastodon
- mastodonのAPサーバ
- ポートフォワードはやらない
https-portal
- Let’s Encryptを使ったHTTPS対応を全自動でやってくれるコンテナ
- 80番と443番のポートを開放する
- mastodonのネットワークに接続して
mastodon/web
を公開する
手順(というか設定メモ)
mastodon の環境作成
READMEの通りに進める。
※解説はいろんな人が書いてるので省略
最終的な設定ファイルはこんな感じ。
docker-compose.yml
データの永続化部分のコメントを外して、ポートフォワードの部分をコメント化
version: '2' services: db: restart: always image: postgres:alpine ### 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 web: restart: always build: . image: gargron/mastodon env_file: .env.production command: bundle exec rails s -p 3000 -b '0.0.0.0' # ports: # - "3000:3000" depends_on: - db - redis volumes: - ./public/assets:/mastodon/public/assets - ./public/system:/mastodon/public/system streaming: restart: always build: . image: gargron/mastodon env_file: .env.production command: npm run start # ports: # - "4000:4000" depends_on: - db - redis sidekiq: restart: always build: . image: gargron/mastodon env_file: .env.production command: bundle exec sidekiq -q default -q mailers -q pull -q push depends_on: - db - redis volumes: - ./public/system:/mastodon/public/system
.env.production
SECRETとドメインとSMTPの設定をしただけ。 SMTPにはとりあえずで使い捨てのGMailアカウントを使用。
11行目付近
# Federation LOCAL_DOMAIN=mastodon.kunst1080.net LOCAL_HTTPS=true
36行目付近
# E-mail configuration # Note: Mailgun and SparkPost (https://sparkpo.st/smtp) each have good free tiers SMTP_SERVER=smtp.gmail.com SMTP_PORT=587 SMTP_LOGIN=<GMailのメールアドレス> SMTP_PASSWORD=<GMailのパスワード> SMTP_FROM_ADDRESS=<GMailのメールアドレス> SMTP_OPENSSL_VERIFY_MODE=none
https-portal の環境作成
docker-compose.yml
mastodonのネットワーク(mastodon_default)へ接続して、mastodonのweb:3000
を公開する。
version: '2' services: https-portal: image: steveltn/https-portal:1.0.1 ports: - '80:80' - '443:443' restart: always environment: DOMAINS: 'mastodon.kunst1080.net -> http://web:3000' FORCE_RENEW: 'true' STAGE: 'production' networks: - mastodon_default networks: mastodon_default: external: true
※STAGE: 'production'
を付けないとオレオレ証明書になってしまうので注意。
おまけ: 管理者の設定方法
$ docker-compose run --rm web rails mastodon:make_admin USERNAME=kunst1080
参考URL
Mastodon
- GitHub - tootsuite/mastodon: A GNU Social-compatible microblogging server
- Emails are not sent - Actionmailer: "End of file reached" · Issue #934 · tootsuite/mastodon · GitHub
- Dockerで雑にMastodonを起動する方法 - Qiita