mimikunの技術メモ

mimikunがプログラミング中調べてわかったことをまとめていくブログです

Pleromaを入れてみた話

一部では話題になっているPleromaを入れてみました。

できたものはこれです。 Pleroma/mimikun-Dev

所要時間は多分5hくらい。

最初はAWSで立てようと思っていましたが、MastodonのフォロワーさんがMastodonが動いているサーバで一緒に動かしても大丈夫と言っていたのでそうしてみることにしました。

環境

手順

既にMastodonが入っているサーバに入れました。

1. いろいろアップデート

sudo apt update
sudo apt upgrade -y

2. 必要なものを入れていく

sudo apt install git build-essential openssl ssh sudo postgresql-9.6 postgresql-contrib-9.6

postgres-9.6なんかないよ??と言われるのでリポジトリを追加します。

3. postgresのリポジトリを追加する

sudo vim /etc/apt/sources.list.d/pgdg.list
echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' > /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
apt-key add -

その後postgres-9.6を入れます。

sudo apt update
sudo apt install postgresql-9.6 postgresql-contrib-9.6

4. Elixirを入れる

まずリポジトリを追加します。 なにもせずapt installすると古いものが入るためです。

wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
dpkg -i erlang-solutions_1.0_all.deb

リポジトリ追加が終わったら、erlang-solutions_1.0_all.debは不要なので消しておきます。

rm erlang-solutions_1.0_all.deb

Elixirなどを入れていきます。

sudo apt update
sudo apt install elixir erlang-dev erlang-parsetools erlang-xmerl

5. Pleromaユーザを追加する

Pleroma用のユーザを追加します。

su root
adduser pleroma

パスワードを適切に入力します。

それ以外はEnter連打で大丈夫だと思います。よく知らんけど

usermod -aG sudo pleroma

pleromaをsudoグループに入れます。

これでsudo出来るようになります。

su pleroma

ユーザを切り替えます。

cd ~

ホームディレクトリに移動しておきます。

6. Pleroma本体を入れる

GitLabからソースコードをcloneしてきます。

フォークしておくと色々役立つのでフォークしてから入れた方が色々と良いです。

git clone https://git.pleroma.social/username/pleroma

依存関係のインストールをしていきます。

mix deps.get

途中でなにかインストールを求められたらYと答えておきます。

次に、設定ファイルの作成をします。

mix generate_config

少し時間がかかります。

ここでも途中でなにかインストールを求められたらYと答えておきます。

色々Warningが出ますが大丈夫らしいので気にしないで待ちましょう。

すると、こういうのが出ます。

What is your domain name? (e.g. pleroma.soykaf.com):
What is the name of your instance? (e.g. Pleroma/Soykaf):
What's your admin email address:

それぞれの欄に、ドメイン名、インスタンス名、管理者のメールアドレスを答えます。

その後、こういうのが出てきます。

メディアプロキシを有効にするか?ってことらしいです。

Do you want to activate the mediaproxy? (y/N):

自分はyと答えましたが、そうするとなぜか画像が表示されなくなったのでNにしておくといいと思います。

Pleromaなんもわからん

このメディアプロキシに関して詳しくはここにあります。

ここまでの質問に答えると、config/generated_config.exsという色々な設定が書かれたファイルが生成されます。

その後、config/generated_config.exsconfig/prod.secret.exsにリネームします。

mv config/generated_config.exs config/prod.secret.exs

続いて、データベースのセットアップをします。

sudo su postgres -c 'psql -f config/setup_db.psql'

続いて、データベースのマイグレーションをします。

MIX_ENV=prod mix ecto.migrate

7. SSL証明書の設定

SSL証明書の設定をします。

僕はLet’s Encryptを使いました。

sudo systemctl stop nginx
sudo letsencrypt certonly --standalone -d example.com

メールアドレス入力を求められたら入力しておきます。

SSL証明書の期限切れが近づくと入力したメールアドレスにメールが来ます。

8. nginxの設定

nginxの設定をします。

Pleromaは親切なつくりなので、テンプレートが用意されています。

なのでこれをコピーしていきます。

cp /home/pleroma/pleroma/installation/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx

ドメイン名を編集していきます。

sudo vim /etc/nginx/sites-enabled/pleroma.nginx

Vimの置換でexample.tldを自分のドメインに置き換えておきます。

その後、nginxの再起動をします。

sudo systemctl start nginx
sudo systemctl restart nginx

9. Pleromaのサービス化

これもテンプレートを用意してくれています。とても親切です。

cp /home/pleroma/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service

コピーしたら少し編集します。

sudo vim /etc/systemd/system/pleroma.service

[Service]のEnvironmentを編集します。

[Service]
User=pleroma
WorkingDirectory=/home/pleroma/pleroma
- Environment="HOME=/home/pleroma"
+ Environment="MIX_ENV=prod"
ExecStart=/usr/local/bin/mix phx.server
ExecReload=/bin/kill $MAINPID
KillMode=process
Restart=on-failure

Environment="MIX_ENV=prod"になっていればOKです。

10. Pleromaの起動

sudo systemctl enable --now pleroma.service
sudo systemctl start pleroma.service

(僕の環境ではFailed to execute operation: Invalid argumentが出てきた。 sudo systemctl is-enabled pleroma.serviceでenableになっているか確認するとenableになっていた。まぁ多分大丈夫だと思います。)

これで終わりです。おつかれさまでした。

感想

Elixirなんにもわからなくても立てられるという感じでした。まぁそりゃそうか

フロントエンドはVueで書かれているらしいのでVueを勉強したくなりました。

参考にしたサイト

ubuntuにpleromaを入れてなんとなく動かす – Theoria Note

PleromaをGoogle Cloud Platformで建ててみた - Qiita

How to activate mediaproxy · Wiki · Pleroma / pleroma · GitLab

Pleroma / pleroma · GitLab