📌
Outline アップグレードでコケた話
はじめに
Ubuntu で wiki サーバ(Outline)を運用しています。とくに必須ではないのですが、アップグレード手順を確立したかったのでアップグレードを実行してみました。案の定失敗したので、その時の作業内容をここに残しておきます。
注意
私は、Docker を使用せずに Outline のソースコードを直接サーバに配置してビルドすることで動かしていました。そのため、アップグレード手順も Docker を使用している方とは異なる部分が多くなると思います。
アップグレード作業開始
とりあえず、Outline を停止してソースコードを最新に更新します。
systemctl stop outline
systemctl status outline # 停止していることを確認
cd /home/outline/app
git branch
git status
git pull
git stash -u # 変更点があれば
git checkout (最終タグ)
DB のマイグレーション
バージョンを更新したら、DB のマイグレーションを実行します。
yarn db:migrate
ここで、node のバージョンとかでエラーが出る場合は、バージョンを合わせてからもう一度マイグレーションをします。
Outline を起動してアクセスしてみます。
認証が通らず、永遠にログイン画面に戻されます・・・。ログを見ると、確かに認証エラーがでています。
outline-app[2080276]: {"error":"column user.username does not exist","stack":"Unauthorized
Error: column user.username does not exist\n at AuthenticationError (/home/outline/app/build/server/errors.js:38:34)
\n at accountProvisioner (/home/outline/app/build/server/commands/accountProvisioner.js:118:43)\n at processTicksAndRejections (node:internal/process/task_queues:96:5)","level":"error","message":"Error during authentication"}
user.username
がない?
認証に必要な情報が揃っていないのでしょうか?
初期構築時の手順を追ってみる(DB 初期化だけは避ける)
何か手順漏れがありそうだったので、Outline を導入した時の手順を追って実行してみます。
install を忘れていました!
yarn install
build は最初だけでいい気がしますが、とりあえず実行。
yarn build
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
error Command failed with exit code 134.
おっと、メモリ不足で失敗しました。
# メモリ不足を回避しましょう。
export NODE_OPTIONS=--max_old_space_size=4096
yarn build
✓ 6145 modules transformed.
Killed
error Command failed with exit code 137.
うーん・・・やっぱりメモリ不足が原因で失敗してしまいます。
スワップ領域を作ります。
root@118-27-23-90:/home/outline/app# free -h
total used free shared buff/cache available
Mem: 976Mi 287Mi 426Mi 1.0Mi 263Mi 531Mi
Swap: 2.0Gi 1.0Gi 1.0Gi
# 2GB 分のスワップファイルを作る
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=360caa23-61c7-459e-9050-22296353ea0b
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
echo 'vm.swappiness = 10' > /etc/sysctl.d/10-swappiness.conf
sysctl --load /etc/sysctl.d/10-swappiness.conf
vm.swappiness = 10
free -h
total used free shared buff/cache available
Mem: 976Mi 308Mi 377Mi 1.0Mi 291Mi 509Mi
Swap: 4.0Gi 1.0Gi 3.0Gi
これでスワップ領域が追加されました。
もう一度 build してみます。
yarn build
Clean previous build…
Compiling…
Copying static files…
Done!
Done in 546.27s.
成功しました!
もう一度起動
systemctl start outline
これで無事、アップグレードが完了しました。
(Docker だと簡単なんでしょうね・・・)
Discussion