Pleromaの構築で躓いた点

2018.04.21

Pleroma を Raspberry Pi 3で構築したときに躓いた点. 基本,Pleroma / pleroma · GitLabを見れば良い. Systemdのテンプレートまである.

noyuno/pleroma: pleroma instance

s.noyuno.space

ここで扱うこと

  • Pleroma インスタンスを立ち上げるところまで
  • カスタム絵文字

Let’s encrypt

  • ドメインごとに最大数が決まっているのでDDNSでは実質できない
  • *で汎用SANはできない
  • 再発行は月5回まで.ただしSANの拡張は無制限?

Nginx

  • SSLはcert.pemではなくfullchain.pemを指定しないと他のインスタンスからメッセージを送るときに502が出て送れない
    • チェーンがわからないと,鍵の検証ができないため.curlでも確認できる.
  • .well-known/certbotで使いたいかもしれないが,OStatusで使うのでaliasしてはならない.
    • 何のエラーも出ないため要注意

Pleroma

  • ログレベルはerror, info, debugの3つ.Systemd serviceとして動かすにはerrorが現実的.
  • prodで動かすにはMIX_ENV=prod mix ...とすべてのコマンドに変数を与える.
  • v0.9.0masterも古く,どんどん仕様が変わっているので,developで建てる.
  • メールアドレスの認証をしない

フロントエンド

  • ちょっと古めかしい
  • /webにアクセスするとMastodon UI風になる.
  • 通知がMastodon UIとPleroma FEと別に鳴るのでちょっとうるさい.
  • ユーザに通知する手段が左下のパネルぐらいで少ない
  • タイムラインは現在自動更新できている
  • 状態遷移がバグることがある

コマンド

  • 起動:phx.server
  • パスワードリセット:generate_password_reset username
  • モデレータ:set_moderator username [true|false]

OStatus

  • Federationはこのインスタンスにいる誰かがフォローしに行かないと流れない. 勝手に何らかのSNSネットワークに繋がってダーと流れるわけではない.
  • リモートフォローした時点以降のトゥートしか流れない.

PostgreSQL

  • バージョンのアップグレード前に,古いバージョンのバイナリをaptとかで消してはならない. 特に古いバージョンだと「仮想パッケージ」になりaptで再インストールできなくなり, 移行時にバックアップからリストアしないといけなくなる(バックアップがないと死ぬ).
  • データベースのディスク使用量を見るにはSELECT datname, pg_size_pretty(pg_database_size(datname)) FROM pg_database;
  • バックアップするにはsudo -u postgres pg_dump pleroma_dev >/a/b/c/file.sql. ただし,書き込み先の階層全てに+xがないとPermission Deniedになり失敗した. 例えば/a/b/c/file.sqlであれば/a/bに+xがないだけで失敗した.
  • リストアするには
sudo -u postgres psql -c "create database pleroma_dev owner pleroma;"
sudo -u postgres psql -d pleroma_dev < pleroma.sql

パフォーマンス

  • 色々同居させているが480/977MB.いいね
  • ログイン,登録は数秒から十数秒かかる.それ以外は快適

Git

  • 手癖でgit clean -fdxしない
  • 更新はgit merge upstream/develop

カスタム絵文字

How to add custom emoji · Wiki · Pleroma / pleroma · GitLab

mstdn.jp の絵文字を拝借するには

  1. mstdn.jpでF12を開いてカスタム絵文字が列挙してある部分をコピペして保存する.
  2. jq -r '.custom_emojis[] | "curl -o "+.shortcode+".png "+.url' < emoji.json > download.sh
  3. find . -type f|while read line ; do f=$(echo $line | awk -F/ '{print $2}'); n=$(echo $f | awk -F. '{print $1}'); echo $n,/emoji/mstdn.jp/$f >> custom_emoji.txt ; done
  4. PNGを/priv/static/emoji/mstdn.jp/以下に移動する.
  5. custom_emoji.txtconfig/custom_emoji.txt に移動する.
  6. Pleromaバックエンドを再起動

カスタム絵文字は,新たなトゥートのみ有効である.

パスワードリセット

パスワードリセットリンク作成はgenerate_password_reset usernameでできるが,これにはメール送信機能がないので,管理者が送る必要がある. 少なくともバックエンド側でメールアドレスを表示させる機能がないと,このリンクを確実に,かつ他の人に知らせずに送れない. たいてい,パスワードリセットが必要なときは,ログインできず,ダイレクトメッセージが読めないのだから.

とりあえず,psql -d pleroma_dev -c "select nickname,email from users where local='t' and nickname='username'"で表示させることができたが, これはまっとうなやり方なのか?

面倒なのでできればこういうのは自動化したい.


新しい記事: Virtual YouTuberの感想 2018.04.21
古い記事: 1年間Arch Linuxを使った雑感 2018.04.21