にせねこメモ

はてなダイアリーがUTF-8じゃないので移ってきました。

Pleromaサーバーお引越し

引っ越しました。

環境

作業内容

VPS作成とOSインストール

さくらインターネットVPSでOS (Ubuntu 22.04)をインストール、公開鍵を登録

ログイン

ローカルからログイン

ssh ubuntu@NEW_SERVER_IP

更新・ユーザ追加

新サーバ

更新

sudo apt update
sudo apt upgrade

ユーザ追加

sudo adduser nixeneko
sudo gpasswd -a nixeneko sudo

authorized_keysを移行する

sudo mkdir /home/nixeneko/.ssh/
sudo cp ~/.ssh/authorized_keys ../nixeneko/.ssh/
sudo chown -R nixeneko:nixeneko /home/nixeneko/.ssh
sudo -Hu nixeneko chmod 700 /home/nixeneko/.ssh

所有者をnixenekoに、.sshパーミッションが700、authorized_keysのパーミッションが600になっているのを確認

再起動

sudo reboot now
ローカル

再度ログイン

ssh nixeneko@NEW_SERVER_IP
新サーバー

デフォルトユーザの削除

sudo userdel -r ubuntu

ssh設定

新サーバー

ssh設定する

sudo nano /etc/ssh/sshd_config

変更点は次のあたり。

Port 10022

LoginGraceTime 30
PermitRootLogin no

MaxAuthTries 3
MaxSessions 4

PasswordAuthentication no

保存。

その後、sshdを再起動

sudo sshd -t
sudo service sshd restart

ログアウトする。

さくらインターネットVPSコントロールパネル

パケットフィルターの設定から、SSHを削除、Webとカスタム(TCP 10022)を追加して保存

ローカル

再度ログイン

ssh -p 10022 nixeneko@NEW_SERVER_IP

ファイアウォール設定

新サーバ

さくらインターネットのシステムでもやってるのでこれはやらなくてもいい。

sudo ufw allow 80
sudo ufw allow 443
sudo ufw limit 10022/tcp
sudo ufw enable
sudo ufw status

次のように表示される。

Status: active

To                         Action      From
--                         ------      ----
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
10022/tcp                   LIMIT       Anywhere
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
10022/tcp (v6)              LIMIT       Anywhere (v6)

Pleromaインストール

Installing on Debian Based Distributions - Pleroma Documentation

新サーバ

必要なもののインストール

sudo apt install build-essential postgresql postgresql-contrib cmake libmagic-dev
sudo apt install elixir erlang-dev erlang-nox
sudo apt install imagemagick ffmpeg libimage-exiftool-perl
sudo apt install nginx certbot

ユーザー作成

sudo useradd -r -s /bin/false -m -d /var/lib/pleroma -U pleroma

Pleromaを導入(これに関して、旧サーバから/opt/pleromaをそのまま持ってきてもいいのだが、今回はやめた)

sudo mkdir -p /opt/pleroma
sudo chown -R pleroma:pleroma /opt/pleroma
sudo -Hu pleroma git clone -b stable https://git.pleroma.social/pleroma/pleroma /opt/pleroma
cd /opt/pleroma
sudo -Hu pleroma git checkout v2.6.0
sudo -Hu pleroma mix deps.get

hexをインストールするかについて: y

sudo -Hu pleroma MIX_ENV=prod mix pleroma.instance gen

rebar3をインストールするかについて: y
その後、インスタンスに関する質問がなされるので、旧サーバのconfig/prod.secret.exsに合わせて入力する。

設定ファイルを移動・編集

sudo -Hu pleroma mv config/generated_config.exs config/prod.secret.exs
sudo -Hu pleroma nano config/prod.secret.exs

旧サーバの設定ファイルにあわせて変更する。

SSHFSでつなぐ

旧サーバに十分なスペースがないのでSSHFSで新サーバにデータを出力できるようにする。
sshfsで別サーバのディレクトリをマウントする | server-memo.net

新サーバ

旧サーバのユーザの公開鍵を新サーバのユーザのauthorized_keysに追加。

ディレクトリ作成

mkdir /home/nixeneko/share
chmod 777 /home/nixeneko/share
旧サーバ

旧サーバから新サーバにsshfsで繋ぐ。

ディレクトリ作成

mkdir remote

設定変更

sudo nano /etc/fuse.conf

次の行をコメント解除して保存する。

user_allow_other

sshfsで接続

sudo apt install sshfs
sshfs nixeneko@NEW_SERVER_IP:/home/nixeneko/share /home/nixeneko/remote -p 10022 -o allow_other

バックアップとデータコピー

旧サーバ

データベースのバックアップと、様々なデータをコピーする。

sudo service pleroma stop
sudo -Hu postgres pg_dump -d pleroma_dev -v --format=plain -f /home/nixeneko/remote/pleroma_dev.sql
sudo tar zvcf /home/nixeneko/remote/letsencrypt.tar.gz /etc/letsencrypt
sudo cp /etc/nginx/sites-available/pleroma.nginx /home/nixeneko/remote/pleroma.nginx
sudo tar zvcf /home/nixeneko/remote/pleroma_bak.tar.gz /opt/pleroma #これは念のため
sudo tar zvcf /home/nixeneko/remote/pleromadata.tar.gz /opt/pleroma/uploads /opt/pleroma/instance/static
新サーバ

もしすでにデータベースを作成している場合は削除する。していない場合はこれは実行しない。

sudo -Hu postgres psql -c 'DROP DATABASE pleroma_dev;'
sudo -Hu postgres psql -c 'DROP USER pleroma'

データベース作成

sudo -Hu postgres psql -f /opt/pleroma/config/setup_db.psql

データベースのバックアップファイルを編集
PleromaのサーバーをUbuntu 20.04→22.04に移行する際、データベースのマイグレーションでこける - にせねこメモ
普通にデータベースをリストアしようとするとCREATE INDEX activities_visibility_indexという部分で止まるので、そこだけコメントアウトして実行する。

cat /home/nixeneko/share/pleroma_dev.sql  | grep -n activities_visibility_index

次のように表示される。

6409126:CREATE INDEX activities_visibility_index ON public.activities USING btree (public.activity_visibility(actor, recipients, data), id DESC NULLS LAST) WHERE ((data ->> 'type'::text) = 'Create'::text);

行数が6409126だと分かったので、その行だけコメントアウトする。

sed -e "6409126s/^/-- /g" /home/nixeneko/share/pleroma_dev.sql  > /home/nixeneko/share/pleroma_dev.20231209.replaced.sql
chmod 755 ~     #750になっててpermission denied出たので変更
sudo -Hu postgres psql -a -d pleroma_dev -f /home/nixeneko/share/pleroma_dev.20231209.replaced.sql
sudo -Hu postgres psql -d pleroma_dev -c "CREATE INDEX activities_visibility_index ON public.activities USING btree (public.activity_visibility(actor, recipients, data), id DESC NULLS LAST) WHERE ((data ->> 'type'::text) = 'Create'::text);"

設定・データの復元

新サーバ

Nginx

sudo cp /home/nixeneko/share/pleroma.nginx /etc/nginx/sites-available/
sudo ln -s /etc/nginx/sites-available/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx

Letsencrypt

sudo tar zxvf /home/nixeneko/share/letsencrypt.tar.gz -C /

Pleromaデータ

sudo tar xvzf /home/nixeneko/share/pleromadata.tar.gz -C /

Nginxの有効化

新サーバ
sudo nginx -t
sudo systemctl enable --now nginx.service
sudo systemctl restart nginx.service

Pleromaの有効化

新サーバ

データベースのマイグレーション(することがないのを確認)、VACCUM ANALYZEの実行、試しに動くのを確認。

sudo -Hu pleroma MIX_ENV=prod mix ecto.migrate
sudo -Hu pleroma MIX_ENV=prod mix pleroma.database vacuum analyze
sudo -Hu pleroma MIX_ENV=prod mix phx.server

動くのを確認してCtrl-C aで終了
ここで、/etc/hostsドメインから新サーバのIPが引けるようにしたマシンを用意して、そこでドメインにアクセスしてみて普通に使えるのを確認するとよさそう。

Pleromaサービスのインストール

sudo cp /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
sudo systemctl enable --now pleroma.service

その後、ドメインのネームサーバでDNSレコードを編集し、ドメインのIPを新サーバに振り向ける。

Swapfile追加

使ってたらメモリが足りなくて安定動作してないっぽかったのでswapfileを追加した。
swapfileの追加 — さくらの VPS マニュアル

新サーバ

Swapfile追加

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

起動時にswapfileが読み込まれるように設定

sudo cp -p /etc/fstab /etc/fstab.orig-20231209
sudo nano /etc/fstab

次の行を追記して保存。

/swapfile none swap sw 0 0

再起動し、swapが有効になっているのを確認(topコマンド等)

IPv6有効化

さくらのVPSではデフォルトでIPv6が無効になっているらしいので有効にする。
IPv6有効化手順(Ubuntu 22.04) — さくらの VPS マニュアル

cat /etc/netplan/01-netcfg.yaml

IPv6が無効になってるのを確認。

/etc/netplan/01-netcfg.yamlを編集して、

sudo nano /etc/netplan/01-netcfg.yaml

IPv6に関するコメントアウトを解除して保存。

OSを再起動する。

sudo reboot