docker-composeでpleromaを立ち上げた(まだインターネットにはつないでませんが)
顛末
実家(某ておくれたmastodonインスタンス)が炎上(HDDコネクタ)してサービス停止。 めでたくもぐの、家なき子に。
しばらくは駄文のはけ口をTwitterにリダイレクトしてたんだけど、おそらく今回の障害は復旧にめっちゃ時間がかかりそう。どうすっかな。
そうか!自分でインスタンスを立てればいいんだ。
と言うわけで低リソースで定評のあるActivityPub対応 SNSであるPleromaをインストールすることに。 (mastodonはなんか設定しないといけない項目がわんさかあって挫折)
折角なので最近勉強中のdocker-composeで何とかすることにしました。
(なお、実家は予想に反して8/1復活しました。これからどうすっかなこれ。)
ディレクトリ構成
pleroma/ |-- data | |-- nginx | | |-- nginx.conf | | `-- ssl | | |-- server.crt | | |-- server.csr | | `-- server.key | |-- pleroma | | |-- config | | | `-- prod.secret.exs | | `-- uploads | `-- postgres `-- docker-compose.yml
./docker-compose.yml
version: "3" services: web: image: pandentia/pleroma:latest volumes: - ./data/pleroma/config/prod.secret.exs:/pleroma/config/prod.secret.exs - ./data/pleroma/uploads:/pleroma/uploads/ db: image: postgres:9.6-alpine environment: POSTGRES_USER: pleroma POSTGRES_PASSWORD: pleroma POSTGRES_DB: pleroma volumes: - ./data/postgres:/var/lib/postgresql/data reverse-proxy: image: nginx:latest ports: - 443:443 volumes: - ./data/nginx/nginx.conf:/etc/nginx/nginx.conf - ./data/nginx/ssl/:/etc/nginx/ssl
./data/pleroma/config/prod.secret.exs
use Mix.Config config :pleroma, configurable_from_database: true config :pleroma, Pleroma.Web.Endpoint, url: [host: "ユーザーから見えるホスト名", scheme: "https", port: 443], secret_key_base: "※1", http: [ip: {0, 0, 0, 0}, port: 4000] config :pleroma, :instance, name: "<your pleroma fqdn>", email: "<your email address>", limit: 5000, registrations_open: true config :pleroma, :media_proxy, enabled: true, redirect_on_failure: true # Configure your database config :pleroma, Pleroma.Repo, adapter: Ecto.Adapters.Postgres, username: "pleroma", password: "pleroma", database: "pleroma", hostname: "db", pool_size: 10
※1 openssl rand -base64 48 で生成した文字列
./data/nginx/nginx.conf
http { server { listen 443 ssl; server_name 192.168.11.167; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; location / { proxy_pass http://web:4000/; proxy_redirect default; } } } events { worker_connections 1024; }
./data/nginx/ssl
以下のサイトの手順でserver.crtとserver.keyを生成。
この時点で一回起動
docker-compose up
pleromaのコンパイルからスタートするのでなかなか時間がかかりますが、最終的に以下の画面が出るようになれば成功です。
管理者ユーザの作成
docker-compose.ymlのあるディレクトリで以下を実行。
docker-compose exec web sh -c "MIX_ENV=prod mix pleroma.user new <username> <your@emailaddress> --admin"
ログインできるようになれば完成です。