くんすとの備忘録

IT系技術メモ

移転しました。

15秒後に自動的にリダイレクトします。

DockerとLet's Encryptで自分用Mastodon鯖を立ててみた

自分用の設定メモ

事前準備

  • conohaでdockerのインスタンスを作成
    • 2.イメージ -> イメージタイプ = アプリケーション に「Docker」っていうのがある
  • docker-composeのインストール
  • ドメインの取得
  • ufwで80番と443番のポートを開放

構成

docker-composeを使って、以下の2つの環境を作成

  • mastodon

    • mastodonのAPサーバ
    • ポートフォワードはやらない
  • https-portal

    • Let’s Encryptを使ったHTTPS対応を全自動でやってくれるコンテナ
    • 80番と443番のポートを開放する
    • mastodonのネットワークに接続してmastodon/webを公開する

手順(というか設定メモ)

mastodon の環境作成

github.com

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

https-portal