plemoraというマストドンの軽量版みたいなものがあるらしいのでインスタンスを建ててみる。

やりかた

基本的には

https://git.pleroma.social/pleroma/pleroma/wikis/Pleroma%E3%81%AE%E5%85%A5%E3%82%8C%E6%96%B9

ここをみて入れる。が、ubuntuかな?を想定しているみたいなので適宜読み替える。

Erlang

まず、Erlang(プログラミング言語)を入れる

https://packages.erlang-solutions.com/erlang/

ここでrpmのリンクを取得。

wget リンク

yum localinstall ファイル名

Elixir

次にElixir(Erlang VM上で動くプログラミング言語)を入れる

https://qiita.com/sonots/items/335a1cff003d70feff96

ここをみて、ちゃんとパスまで通す

※注意

そのままコピペすると古いバージョンが入ります(当たり前)最新版を確認しましょう

起動してみると(コマンドはiex)次にようなワーニングがでる

Warning: the VM is running with native name encoding of latin1 which may cause Elixir to malfunction as it expects utf8. Please ensure your locale is set to UTF-8 (which can be verified by running “locale” in your shell)

気持ち悪いので消したい

https://qiita.com/masashi127/items/5344b3ab1b86053cf10e

ここをみる

だが、これはcentos6用で /etc/sysconfig/i18nファイルがない。

 

http://zero-config.com/centos/changelocale-002.html

ので、ここをみる

これでエラーが消えた。

build-essential

つぎの

apt install build-essential

については

http://blog.64p.org/entry/2013/07/22/142457

ここに

yum groupinstall "Development Tools"
yum install kernel-devel kernel-headers

すればいいとあるので従ってみる。私の場合はすべてインストール済みだった。

次はnginx, postgresql, letsencryptだ

nginx

私の場合はインストール済みなので割愛。

nginxレポジトリを追加してインストールすればいけるはずだ。

https://www.nginx.com/resources/wiki/start/topics/tutorials/install/

このあたりを見ればいけるはず。

postgresql

インストールはここにヒントがあります

https://www.postgresql.org/download/linux/redhat/

基本的には

yum install postgresql

新しいバーションは別の方法で手にはいりますが自己責任で

私の場合9.2が入りました

9.2でやるとバージョンが古くて怒られるので新しいバージョンを入れます↓

下を見て

yum install postgresql-server

も、します

-serverインストールしたら自動で入るかな?自動で入るならinstall postgresqlはいりません

ここを見ながら色々します

https://qiita.com/LowSE01/items/84af05449f96dedd0edc#%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A

postgresql-setup initdb

ですが、

echo "listen_addresses = '*'" >> /var/lib/pgsql/data/postgresql.conf

に関しては今回はlocalhostからしか使わないし、セキュリティ上の問題からやりません。

次pg_hba.confですが、

接続を確認するため一旦

host all all 127.0.0.1/32 trust

を最下行に追加します。そのとき、既に書かれている

host all all 127.0.0.1/32 ident

をコメントアウトしないといけません。で、セーブして再起動

service postgresql restart

psql -U postgres -h 127.0.0.1

で、ログイン試行をして行けたら成功。

postgresユーザーにパスワードを設定します。

http://d.hatena.ne.jp/sin-j/20080814/1218684380

ここを見ます

alter role postgres with password 'password';

もちろんパスワードは変えてください

ついでにユーザーを作成しておきます。

ユーザー名はpleromaとします。

https://www.dbonline.jp/postgresql/role/index2.html

ここを見ます

CREATE ROLE pleroma WITH LOGIN PASSWORD 'password';

これでパスワード付きユーザーが作成できました。

pleromaデータベースを作成します。

create database pleroma;

一回ログアウトして、pleromaユーザーでログインしてみます。

psqlシェルからは\qで抜けられます。

その際、パスワードでログインするようpg_hba.confを書き換えます。

host all all 127.0.0.1/32 trust

host all all 127.0.0.1/32 md5

に書き換えます。で、再起動

ユーザーpleromaでログインします。

psql -U pleroma -h 127.0.0.1

データベースが作成できました。

letsencrypt

これも導入済みなので割愛。

公式サイトを見ればわかるはず。cronの設定を忘れずに。

cronに登録すべきは

systemctl stop nginx && certbot renew --force-renew && systemc
tl start nginx

かな。たぶん。–force-renewしないほうがいいという話もあるのでそこはご自分で

ユーザー追加

まあ、もとの文書のとおりに

adduser pleroma

passwd pleroma

でパスワード設定だけしときます

pleroma入れる

git cloneとcd, mix deps.get, exitします

git cloneのURLが間違っている。

正しいのは

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

です。.gitが抜けてる。

mixとかいろいろするためにブランチ変更。

git checkout develop

ここで、mixが出来ない問題発生。

環境変数を手動で設定してたから消えちゃった

そこで /etc/profile の適切なところ(rootかそうでないかで分けてpathmungeしてるifのおわったあと)に

pathmunge /opt/elixir/bin after

を追加

もちろんパスはelixir入れたとこに適宜変えてください

で、

mix deps.get

 

意外とすぐ終わった。

データベースの設定

元の文書では次はデータベースの設定だが殆ど既にやってしまった。

ただ、

CREATE EXTENSION citext;

だけやってないのでpleromaデータベースにログインしてやっておきます。

すると、citextが無いと言われた。

yum install postgresql-contrib

をしたら解決。で、create extensionします。

下見て

pleromaの設定

元の文書のとおりにやります

cp config/dev.exs config/dev.secret.exs

でdev.secret.exsの中身を書き換えて…

config.exsの中身も書き換えて

mix ecto.create && mix ecto.migrate

をして…できない。

あ、configディレクトリに入ってたからだ。上に戻ってcreateとmigrateします。

ちょっと時間がかかります。

migrateできない。

データベース作成権限がないと言われるのでpostgresユーザーで

ALTER ROLE pleroma WITH CREATEDB

して作成権限を与えます。

今度は

type “jsonb” does not exist

というエラー。どうやらこれ、postrgres9.4から追加されたようで、今入ってるのが9.2なので無いらしい。

ということでアップグレードしないといけない。

 

ので、いっかい消します

yum remove postgresql

新しいpostgresを入れる

せっかくなので10を入れます

https://www.postgresql.org/download/linux/redhat/

此処で自分に適したものをプルダウンで選択

私の場合は

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm

yum install postgresql10-server

yum install postgresql10-contrib

/usr/pgsql-10/bin/postgresql-10-setup initdb

で、pg_hba.confを書き換えます

/var/lib/pgsql/10/data/pg_hba.conf

host all all 127.0.0.1/32 trust 追記、 host all all 127.0.0.1/32 peer をコメントアウト

幾つか実行します

psql -U postgres -h localhost

alter role postgres with password 'password';

ついでなので最初からデータベース作成権限を付与します

CREATE ROLE pleroma WITH LOGIN CREATEDB PASSWORD 'password';

pg_hda.conf

さっきのtrustをmd5に

host all all 127.0.0.1/32 md5

local all all md5

local all all peer はコメントアウト

systemctl restart postgresql-10

再起動

psql -U pleroma -h localhost

ログインできました。

create extensionします

psql -U postgres -h localhost

CREATE EXTENSION citext;

pleromaのところに戻ります

mix ecto.create && mix ecto.migrate

今度は成功

nginx設定

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

とありますがちょっと変えて

cp /home/pleroma/pleroma/installation/pleroma.nginx /etc/nginx/conf.d/pleroma.conf

とします。

pleroma.confを書き換えます。

nginx起動時にエラーが出たので

include snippets/well-known.conf;

をコメントアウトします

servcie登録します

https://qiita.com/DQNEO/items/0b5d0bc5d3cf407cb7ff

によると/etc/systemd/system/配下に置くといいようなので

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

します。一応内容を確認します。

elixirのmixの場所の指定が違うので

ExecStart=/opt/elixir/bin/mix phx.server

に書き換えます

pleromaを/home/pleroma以外に入れた場合ほかにも書き換えないといけないようです

で、

systemctl start pleroma

が、、、できない。

これはserviceコマンド実行時に/opt/elixir/binの環境変数が追加されていないから。

/etc/systemd/system/pleroma.serviceのExecStartの内容を書き換えます。

ExecStart=/bin/bash -c 'PATH=/opt/elixir/bin:$PATH exec /opt/elixir/bin/mix phx.server'

これで環境変数を追加できます。

書き換えたので

systemctl daemon-reload

systemctl start pleroma

します。/etc/systemd/system配下にserviceファイルを置いたのでenableは必要ないそうです。

で、規約をカスタムします

/home/plerome/pleroma/priv/static/static/terms-of-service.html

を編集します。ただのhtmlです。

とりあえず出来たかな。

成果はここ。

https://social.jp-mstdn.com

すぐにけすかもだけど一応。

ではまた。