引っ越しました。
環境
- Pleroma v2.6.0
- 元サーバ
- 先サーバ
- さくらインターネット VPS 1GBプラン
- Ubuntu 22.04
作業内容
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 -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
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
コマンド等)