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"
ログインできるようになれば完成です。