「図書館でお茶会を始めて国際法茶館に計画」に参加される方へ に戻る
なお,本件は以下のサイト・本を参考にしています。
「PleromaをConoHaのVPS(Ubuntu20.04)で立てる」
国見小道 他「分散SNS萬本 vol.2」2020年

Pleromaサーバーを立てられるかな?

コンピューターを利用した情報交換システムの1つに,Social Networking Serviceがあるのですが,単独の会社がサービスを提供するtwitterなどに対し,多くの人がサービスを提供しつつ,相互にデータの交換を行うことで,あたかも見かけ上は1つのサービスを利用しているかのように思わせることができるものがあります。分散型SNSと呼ばれています。
分散型SNSを実現するためには,データの交換に際し,共通の約束事(protocol)を決めておく必要がありますが,そのprotocolに則っていれば,具体的なサーバープログラムは違っていてもあまり困りません。今最大勢力と言えるのは「Mastodon」ですが,「Pleroma」というのもあります。
Pleromaの利点はいろいろ言われていますが,「図書館でお茶会を始めて国際法茶館に計画」lufimianet.jpがhostdon.jpによるpleromaホスティングサービスを利用しているのは「設定ファイルの書き換えだけで,最大65000字投稿を可能にしている」点にあります。
さて,最初にMastodonのブームが来た際,「自分でもサーバーを立てられる」ことが話題となり,実際試してみたら立てられたのです。
Pleromaは,Mastodonよりも立てやすいし,資源が少なくとも運用できるとも言われているので,Mastodonも立てられたのなら当然できるだろうと思って挑戦したのですが……。

なぜかうまくいきません!(泣)

というので,世に流れている手順の意味を解釈しながら,どこで失敗したかを記録しつつ,次に活かそうという試みです。

VPSと独自ドメインを結び付けよう

本格的に運用する場合,「VPSを借りる」「独自ドメインをとる」で運用することが多いように見えますので,そのための手順です。
自宅内でだけ運用する場合には不要です。

作業用ユーザー設定

Linuxだとrootで作業させてくれないディストリが多いんだよね〜。特に初心者にやさしいって謳い文句のところ。
まあそれは一理あるところなんだけど……。
※だからって「su使え」「su使うなsudo使え」「sudo su禁止」とかいろいろ変遷したあげく「sudo suはおじさん」とか言われると世知辛いなあ。
 BSDは「rootでやってもいいけど,気をつけてね。自己責任だからね。」の方が実はやさしくないか?

rootでログイン
# adduser 作業用ユーザー名
# passwd: 【ここでパスワードを入力】
# logout
作業用ユーザー名でログイン
以下の作業は一般ユーザーである作業用ユーザー名で行う。

セキュリティ設定

pleromaを設置するコンピューターに外部から接続したいが,自分以外の接続はpleromaに正規の権限で接続する以外は遮断したい場合に,必須となる作業です。
VPSを借りてかつ自分のコンピューターから接続して作業したい場合がその典型例です。
外部から接続できるコンピューターを使う場合でも,そのコンピューターをネットワーク経由ではなく直接操作する場合,外部からの接続を制限するセキュリティ対策は必要ですが,この手順でいいかどうかは要検討です。
外部からは接続できない場合には不要だと思います。
例 プログラムの解析のために宅内LANにすらつながないで単体で使用する場合や宅内LANにはつなぐけどルーターの設定を信用できる場合

Pleroma本体のインストール

1 まずはOSのアップデート

$ sudo apt-get update
$ sudo apt-get dist-upgrade
萬本では
$ sudo apt update
$ sudo apt dist-upgrade

2 swap設定


$ sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
$ swapon -s
でswapファイルが表示されていれば問題なし

2-2 起動時にswapファイルが自動マウントされるように設定

$ sudo nano -w /etc/fstab
nanoが起動したら
/swapfile none swap sw 0 0
を追加します。ちなみに空白ではなくtabで区切るのがお約束。
追加が終わったら保存して終了します。
$ sudo reboot

3 Pleroma本体のインストール

PostgreSQL

$ sudo apt install git build-essential postgresql postgresql-contrib cmake libmagic-dev
萬本では $ sudo apt install git build-essential postgresql postgresql-contrib

Elixir Erlang ErlangVM

$ wget -P /tmp/ https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb
$ sudo dpkg -i /tmp/erlang-solutions_2.0_all.deb
※萬本は2020年9月発行で,原稿が春頃と思われますが,その当時でErlang/OTP23とpleromaの相性が悪いという指摘をしていて,上の手順だとErlang/OTP23が自然に入ってしまうから,別の手段でErlang/OTP22をインストールしておくか,asdf-vmというバージョン管理ソフトを使って,インストールコマンドが通るかどうかのチェックをひとつひとつしていくことが必要ではないかという示唆をしています。
$ sudo apt update
$ sudo apt install elixir erlang-dev erlang-nox

メディア

$ sudo apt install imagemagick ffmpeg libimage-exiftool-perl

ユーザーpleromaの追加

$ sudo useradd -r -s /bin/false -m -d /var/lib/pleroma -U pleroma

Pleroma BackEnd

$ sudo mkdir -p /opt/pleroma
$ sudo chown -R pleroma:pleroma /opt/pleroma
$ sudo -Hu pleroma git clone -b stable https://git.pleroma.social/pleroma/pleroma /opt/pleroma
萬本ではdevelopに追従しているのでこの部分を変更

ディレクトリの変更

$ cd /opt/pleroma

設定ファイル作成

$ sudo -Hu pleroma mix deps.get (Hexのインストールが必要と言われたらインストールする。)
$ sudo -Hu pleroma MIX_ENV=prod mix pleroma.instance gen (rebar3のインストールが必要かと言われたらインストールする。)
萬本では
$ sudo -Hu pleroma mix pleroma.instance gen (rebar3のインストールが必要かと言われたらインストールする。)
ここでは、ドメイン名、インスタンスの名前、自らの連絡先メールアドレス、ハンドル名、写真のGPS情報を除去するかどうか等が問われる。
PostgreSQLの名前などは、Enterキーを押してデフォルトで進めてOK。

【2021.6.16】
VPSでもここでエラーが出ました。
というのでローカルのコンピューターにインストールをはじめたのですが(当然セキュリティ関係の設定はなし)
やはりここでエラーが出ました。
** (File.Error) could not read file "/opt/pleroma/config/prod.secret.exs": no such file or directory
    (elixir 1.12.0) lib/file.ex:355: File.read!/1
    (elixir 1.12.0) lib/config.ex:243: Config.__import__!/1
    (mix 1.12.0) lib/mix/config.ex:161: anonymous fn/2 in Mix.Config.__import__!/2
    (elixir 1.12.0) lib/enum.ex:2356: Enum."-reduce/3-lists^foldl/2-0-"/3
    (mix 1.12.0) lib/mix/config.ex:160: Mix.Config.__import__!/2
    (stdlib 3.15.1) erl_eval.erl:685: :erl_eval.do_apply/6
以前pleroma本体のインストールに成功した時はここは通過できていたので,
言われたとおり /opt/pleroma/config/prod.secret.exs を作成して設定するが正解なんだろうな〜。

[ここで成功したとすれば下に行く]
以上で間違いないか? [y/N]と最後に出るので、必ずYを押すこと。
→/opt/pleroma/config/generated_config.exs
/opt/pleroma/config/setup_db.psql ができているはず。
$ sudo -Hu pleroma mv config/{generated_config.exs,prod.secret.exs}
$ sudo -Hu pleroma MIX_ENV=prod mix ecto.migrate
$ sudo -Hu pleroma MIX_ENV=prod mix phx.server
※萬本では
$ mv config/{generated_config.exs,prod.secret.exs}
$ sudo -Hu postgres psql -f config/setup_db.psql
$ sudo -Hu pleroma MIX_ENV=prod mix ect.migrate

4 Nginx

$ sudo apt install nginx
※Nginxはまだ起動させないこと
$ sudo apt install certbot
※certbotはLet’s Encryptを認証局とする証明書を取得するためのツールです
 無償で利用できます
 登録のためには連絡先のメールアドレスと認証対象のドメイン名が必要であり,
 認証対象のサーバーで実行することで自動的に証明書を取得します。
 cronで動かしておけば,期限切れの前に新証明書を取得してきてくれます。
※萬本では次のコマンドを実行しています。 $ sudo apt install python3-pip libssl-dev libffi6
$ sudo pip3 install certbot-dns-route53
$ sudo systemctl status nginx
($ sudo systemctl stop nginx)
ここで証明書発行フェイズへ
※一方元のルート的には
$ sudo mkdir -p /var/lib/letsencrypt/
証明書発行フェイズ
$ sudo certbot certonly --email 連絡先メールアドレス -d ドメイン名 --standalone
※萬本では
$ sudo certbot certonly --dns-route53 -d 'pleromaドメイン名' -d 'メディアドメイン名' --email 連絡先メールアドレス -n --agree-tos

$ sudo cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.nginx
$ sudo nano -w /etc/nginx/sites-available/pleroma.nginx
 ドメインがexample.tldになっている所を自分のドメインに修正,保存して終了
$ sudo ln -s /etc/nginx/sites-available/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx
※萬本では
$ sudo ln -s /etc/nginx/sites-available/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx
$ sudo nano -w /etc/nginx/sites-available/pleroma.nginx
の順
$ sudo systemctl enable --now nginx.service
※萬本では次の1行は省略
$ sudo systemctl start nginx.service

$ sudo cp /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
$ sudo systemctl enable --now pleroma.service
※萬本では次の1行省略
$ sudo systemctl start pleroma.service

※萬本では次の1行を入れている
$ cd /opt/pleroma/
$ sudo -Hu pleroma MIX_ENV=prod mix pleroma.user "new" 管理者ユーザー名 管理者ユーザーのメールアドレス --admin
 ここで,ユーザー名とメールアドレス設定と仮パスワード(伏せ字)が表示され,
 その下に現れる「Generated password reset token for [管理者のユーザー名]」のところのURIをメモっておく(コピーでも可)。
 ブラウザでそのURIにアクセスし,設定するパスワードを入れる。

ブラウザからpleromaにつないでログインして使う。
(2021.6.15.初稿)
(2021.6.16.修正)

「図書館でお茶会を始めて国際法茶館に計画」に参加される方へ に戻る