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.exs
をconfig/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