Raspberry PiでPleromaインスタンスを構築する
ちょっとしたメモを残せる場所を自宅LAN内に置いたら便利なんじゃないかと思って、ラズパイにPleromaインスタンスを立ててみた。
基本的にはPleroma公式にあるPleromaの入れ方の通りにすればよいのだが少し躓いた点もあったので、一応手順を全て載せることにする。
前提
最低限閲覧と書込みができるような状態にすることを目標とする。
自宅LAN内からしか見られないインスタンスのため、https対応に必要な作業は今回は行わない。
本来はLAN内のみの利用でも本格的に運用するなら必要なことではあるのだが、単に使いたいだけの目的からすると面倒なので……
環境
- Raspberry Pi 3 Model B
- Raspbian Stretch Lite (2018-11-13)
パッケージを最新化
$ sudo apt update
$ sudo apt dist-upgrade
必要なパッケージのインストール
現時点で必要なパッケージが入っているか調べる。
$ dpkg -l git build-essential openssl ssh sudo postgresql-9.6 postgresql-contrib-9.6
git__と__postgresql-9.6、__postgresql-contrib-9.6__が入っていなかったので入れる。
$ sudo apt install git
$ sudo apt install postgresql-9.6
Elixirのインストール
Elixirは公式のInstalling Elixirにあるとおりにインストールする。
$ echo "deb https://packages.erlang-solutions.com/debian stretch contrib" | sudo tee /etc/apt/sources.list.d/erlang-solutions.list
$ wget https://packages.erlang-solutions.com/debian/erlang_solutions.asc
$ sudo apt-key add erlang_solutions.asc
$ sudo apt update
$ sudo apt install elixir
Erlangのインストール
$ sudo apt install erlang-dev erlang-parsetools erlang-xmerl erlang-tools
pleromaユーザの追加(sudo権限あり)
$ sudo adduser pleroma
$ sudo usermod -aG sudo pleroma
パスワードは任意のものを設定する。
Full Name以下は何も入力しなくてもいい。
Pleromaをインストール
ユーザをpleromaに変更し、ホームディレクトリにGitリポジトリをクローンする。
$ su pleroma
$ cd ~
$ git clone https://git.pleroma.social/pleroma/pleroma
ユーザを変更したからか、mixコマンドを使おうとするとコマンドがないといわれてしまうので、もう一度Elixirをインストールする。
$ sudo apt install elixir
Pleromaの依存パッケージをインストールする。
途中で「Shall I install Hex?」と聞かれるのでyを入力する。
$ cd pleroma/
$ mix deps.get
コンフィグレーションを生成する。
途中で「Shall I install rebar3?」と聞かれたらyを入力する。
$ mix pleroma.instance gen
生成した__generated_config.exs__を__prod.secret.exs__としてコピーして、ファイルを編集する。
$ sudo cp config/generated_config.exs config/prod.secret.exs
$ vi config/prod.secret.exs
今回はLAN内のみに公開するインスタンスを作成したいので、config :pleroma, Pleroma.Web.Endpoint,のところにあるurlの部分を以下のように変更する。
IPアドレスはラズパイにあらかじめ固定IPを振り、そのIPアドレスを記述する。
url: [host: "192.168.0.102", scheme: "http", port: 4000]
hostにlocalhostを指定しても動作はするが、インスタンスにアクセスした際ログに以下のようなエラーメッセージが表示されてしまう。
13:32:40.439 [error] Could not check origin for Phoenix.Socket transport.
Origin of the request: http://192.168.0.102:4000
This happens when you are attempting a socket connection to
a different host than the one configured in your config/
files. For example, in development the host is configured
to "localhost" but you may be trying to access it from
"127.0.0.1". To fix this issue, you may either:
1. update [url: [host: ...]] to your actual host in the
config file for your current environment (recommended)
2. pass the :check_origin option when configuring your
endpoint or when configuring the transport in your
UserSocket module, explicitly outlining which origins
are allowed:
check_origin: ["https://example.com",
"//another.com:888", "//other.com"]
データベースを生成した後、マイグレーションを実行する。
$ sudo su postgres -c 'psql -f config/setup_db.psql'
$ MIX_ENV=prod mix ecto.migrate
Pleroma起動
後は以下のコマンドでサーバを起動し、http://<指定したIPアドレス>:4000にアクセスすればページが表示される。
$ MIX_ENV=prod mix phx.server
おわりに
これ以降にも公式のインストール手順にはnginxの設定やサービスとして登録する等の作業があるが、とりあえず使える状態となったので一旦ここまでとする。