Posts /

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

Twitter Facebook Google+ Mastodon
02 Mar 2018

動かします。

mastodon開発用にと思い、格安のVPSを勢いで借りたのですが、swapを設定できなかったりしてmastodonをインストールできず、かなしい思いをしました。そこで、軽量でmastodonと互換性のあるというpleromaを思い出し、建ててみることにしました。

環境とか

なんとなく親しみやすいUbuntuです。16.04.4 LTSです。

(以下は建ててみた時の状況を元にVirtualBoxで再現して確認したものです)

手順

文字コードを確認

僕が借りたVPSはデフォルトの文字コードがUTF-8でなく後々めんどくさかったのであらかじめen_US.UTF-8とかにしておくと良いでしょう。

以下はpleromaのWikiを参考に進めていきます。

準備

とりあえず色々更新しておきます

apt update && apt dist-upgrade

続いて必要な諸々を入れていきますが、

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

postgresql-9.6なんかねえと怒られるので、ひとまずapt install git build-essential openssl ssh sudoします。

どうやらubuntuのリポジトリにはPostgreSQL 9.5までしか登録されていないようなので、このあたりを参考にリポジトリを追加し、キーリストに公開鍵を追加します。

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 -

一応apt-key listで追加されているか確認します。PostgreSQL Debian Repositoryが追加されていればOKです。

改めてPostgreSQLをインストールします。

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

これでPostgreSQL 9.6が入りました。

Elixir・Erlangを入れていきます。何も考えずにapt installすると1.1.0あたりのものが入るので気をつけましょう。1.5以降のものが必要です。

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

apt-key listで確認するとErlang Solutions Ltd.が追加されています。erlang-solutions_1.0_all.debが残るのでrmしましょう)

さて、Elixirとかを入れましょう。

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

pleromaバックエンドを入れていく

いよいよpleroma本体のインストール作業です。

まずpleroma用のユーザーを追加します

adduser pleroma

パスワードを入れろと言われるので適切に入れます。それ以降はエンター連打で大丈夫でしょう。

pleromasudoグループに入れ、

usermod -aG sudo pleroma

ユーザーを切り替えて/home/pleromaに入ります。

su - pleroma

GitLabからソースコードを取ってきて、

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

ソースコードのあるディレクトリに入ります。

cd pleroma/

mixという便利なやつで依存関係を入れていきます。

mix deps.get

Hexないから入れるで?と言ってきたらYと答えましょう。

次に、設定ファイルを作ったります。

mix generate_config

rebar3ないから入れるで?と言われたら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):

と聞いてきます。メディアプロキシを有効にしない場合、ユーザーが外部のインスタンスから発信されたメディアを閲覧した際に、ユーザーのIPアドレスが発信元のインスタンスに見えてしまいますが、メディアを保存しないためにストレージの消費が少なくなります。

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

メディアプロキシを有効化する場合、もう一手間必要になります(このへんを見るとよいです)。

設定ファイルにはデータベースのパスワードなどが生成されているので、確認しておきましょう。

その後、generated_config.exsprod.secret.exsにリネームします。

mv config/{generated_config.exs,prod.secret.exs}

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

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

生成されたパスワードでデータベースやテーブルが作成されます。

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

MIX_ENV=prod mix ecto.migrate

ここまで終われば、とりあえず動きます。次のコマンドを実行して動作を確認することができます。

MIX_ENV=prod mix phx.server

http://[ドメイン名]:4000でアクセスできる(?)。ローカルならhttp://0.0.0.0:4000

終了はctrl+c

nginxの設定

まずnginxを入れます。(このあたりでrootに戻っておくとよい)

apt install nginx

続いてnginxの設定ファイルを作るのですが、pleromaは非常に親切なので、テンプレートを用意してくれていますので、コピーします。

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

設定ファイルを開き、ドメイン名などを編集します。

vi /etc/nginx/sites-enabled/pleroma.nginx

基本的にはexample.tldを自分のドメインに変えれば良いでしょう。SSL証明書にLet’s Encryptを使わない場合はssl_certificateも適切なものに変えましょう。

続いてLet’s EncryptでSSL証明書を取得します。

apt update && apt install software-properties-common
add-apt-repository ppa:certbot/certbot
apt update && apt install python-certbot-nginx
certbot --nginx certonly

するとメールアドレスを聞かれるので、入力しましょう。証明書の期限が近づいたりすると連絡が来ます。次に規約のURLが表示されるので読みましょう。同意するならAを打ち次に進みます。プロジェクトの非営利団体にメールアドレスを共有してもいいか?と聞いてくるのでYでもNでもお好きに。するとドメインを聞かれるのでドメインを入力しましょう。

成功すると/etc/letsencrypt/live/[ドメイン名]/に証明書が入るので、これをnginxに教えてやる必要があるのですが、先ほどコピーした設定ファイルに既に書いてあるので大丈夫です。

nginxを再起動して設定を反映します。

systemctl restart nginx.service

pleromaのサービス化

systemdの.serviceファイルを書く必要がありますが、pleromaは非常に親切なので、テンプレートを用意してくれていますので、コピーします。

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

コピーしたら、vi /etc/systemd/system/pleroma.serviceで開き、[Service]の節にEnvironment="MIX_ENV=prod"を追記します。

最後に、サービスを有効化します。

systemctl enable --now pleroma.service

(弊環境ではFailed to execute operation: Invalid argumentとなり困ったが、systemctl is-enabled pleroma.serviceで確認するとenabledになっており、動いているのでまあ良いかとなった。)

その他の設定

mastodonにおける/aboutのようなページはないので、規約の類いを書く場所が難しい。最低限、登録の際に表示される”Terms of Service”は独自のものにしておきたい(デフォルトではこのファイルを編集しろみたいなのが書いてあるので見栄えが良くない)。場所が少しわかりにくく、/home/pleroma/pleroma/priv/static/static/terms-of-service.htmlにある。

また/home/pleroma/pleroma/priv/static/static/config.jsonを編集し、"showInstanceSpecificPanel"trueにすると、サイドメニューの下にパネルを表示できる。これは/home/pleroma/pleroma/priv/static/instance/panel.htmlを編集することで、内容を変更できる。

感想

設定ファイルがあらかじめ用意されているのでとても簡単に建てられた感じがある。

mastodonより低スペックのサーバーで動作すると聞いていたが、実際にmastodonが動作しなかったサーバーで動作したのでほんとだ〜となった。

どの程度の規模まで耐えられるのか試してみたい気持ちもあるが、まともに運用していくつもりもないので積極的に宣伝してユーザーを増やす気にはならないpleroma.raramagi.ga

/webにアクセスすれば、mastodonの皮を被ったpleromaができ、良い。ただし、そこにある公開範囲を指定するボタンは飾りだ。 (3/14追記)ActivityPubに対応した時点で公開範囲設定ができるようになったようです。

お一人様インスタンスには良いかもなぁと感じた。

Elixirへの興味が増した。RailsをやっていくかElixirをやっていくか…(余裕なし)


Twitter Facebook Google+ Mastodon