Edited at

PleromaをGoogle Cloud Platformで建ててみた

More than 1 year has passed since last update.


はじめに

普段はCreatodonというMastodon インスタンスの管理人をしています。

趣味的な好奇心と、Google Cloud Platform の無料分がかなり余っている状況だったので、Pleromaのサーバを建ててみた。

本記事では、Pleroma を Google Cloud Platform 上で建てるまでの手順を解説します。


必要なもの


  • Google Cloud Platform のアカウント(GoogleのアカウントがあればOK)

  • お名前.com のアカウント

  • クレジットカード(GCPやお名前.comでドメイン購入に必要)

  • 取得したドメイン


サーバ構築手順

基本的には、ておりあ氏のこの記事をもとにすすめていく。


VMインスタンスの作成

まず、GCPのコンソールでProjectを作成する。次に、Computer Engine でVMインスタンスを作成。

OSは Ubuntu 16.04 LTS を使用します。

それと、HTTPとHTTPSのトラフィック許可にチェックを入れておいてください。

最後に「作成」をクリックすることでVMインスタンスが作成されます。


DNSなどの設定。

下記の記事の「Cloud DNSの設定」を参照して設定しました。

GCE(Google Compute Engine)で独自ドメインを設定する

此方の記事通りにすればDNSの設定はOKです。


Pleromaの構築

作成したVMインスタンスをSSHで開いてやり、Pleromaの環境を構築していきます。

まず、下記のコマンドを実行してアップデートをかけておきます。

sudo apt update && sudo apt dist-upgrade

次に、postgres-9.6以外の必要なものをインストールします

sudo apt install git build-essential openssl ssh sudo letsencrypt 

インストール完了後、以下のコマンドを実行して postgres-9.6 をインストールします。

sudo sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' > /etc/apt/sources.list.d/pgdg.list"

wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
sudo apt install postgresql-9.6

これで、postgres-9.6 がインストールされます。

ここまで作業を進めてきた辺りでSSL証明を取得します(DNS周りのエラーが表示されたら飛ばしてください。あとでまた実行するとOKです)

letsencrypt certonly --standalone -d example.com(任意の独自ドメイン)

次に、Elixir/Erlang をインストールします。

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

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

インストール完了後、Pleromaユーザーの追加&sudoの有効化を行います。

sudo adduser pleroma

sudo usermod -aG sudo pleroma

ユーザーを切り替えて、Pleromaのソースコードをcloneします。

su - pleroma

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

pleromaへ移動し、必要な依存関係を取得します。

cd pleroma

mix deps.get

次に、設定ファイルを作成

mix generate_config

ドメインなどを聞かれますので随時入力してください。

その後、以下のコマンドを実行していきます。

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

sudo su postgres -c 'psql -f config/setup_db.psql'
MIX_ENV=prod mix ecto.migrate

これで Pleromaユーザーでの作業は完了です。

exit して rootユーザーへ戻ります。

exit

rootに戻ったら、nginxをインストールします

sudo apt install nginx

次に、Pleromaのソースコード内にあるテンプレートを使って、nginxの設定を記述します

単に、example.tldを取得したドメインに変更するだけです。

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

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

変更が終わったら、nginxを再起動します。

sudo systemctl restart nginx.service

最後に、Pleromaのサービス化を行います。

こちらもテンプレートを編集し、使用します。

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

コピー後、以下のコマンドで編集します。

vi /etc/systemd/system/pleroma.service

Environment="HOME=/home/pleroma" と書いてある箇所を

Environment="MIX_ENV=prod"

このように変更します。

後は、以下のコマンドを実行すれば、OKです。

sudo systemctl enable --now pleroma.service

sudo systemctl start pleroma.service


終わりに

今現在、GCPの一番スペックの低いVMインスタンスで運用していますが中々に快適です。

他なMastodonやPleromaともやり取りができるので、ちょっと腕試しにお一人様インスタンスを立てたいという方にはPleromaはオススメかもしれませんね


追記

PleromaをGCP上でほぼ一発で構築できるShell書いた

https://github.com/S-H-GAMELINKS/Pleroma.Start.Script.for.GoogleCloudPlatform


参考記事など

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

Ubuntu16.04にPostgreSQLをインストール

GCE(Google Compute Engine)で独自ドメインを設定する