typressAn editorial workshop.

トラブルシューティング

本番運用で踏みやすい罠と対処を集めました。先にデプロイ設定を読んでおくと文脈が掴みやすいです。

クロスコンパイルしたバイナリが Linux で 1.8 GB 食う

Bun の --target=bun-linux-x64 を macOS で叩いて生成したバイナリは、Linux 上で JSC のヒープ管理が壊れます。Linux ホスト上で bun run build:bin してください。常駐メモリは 80 MB 前後に収まります。

systemd の SystemCallFilter で起動できない (status=31/SYS)

SystemCallFilter=~@resources は Bun JIT の sched_setaffinity 等を殺すので外してください。MemoryDenyWriteExecute も同じく JSC が動きません。packaging/typress.service には踏まない構成だけ入れてあります。

ProtectHome=true でビルドした binary が起動しない

isomorphic-dompurify が依存する jsdom が起動時に default-stylesheet.css を __dirname 経由で読み込みます。/home 配下でビルドすると binary 内のパスが /home/.../node_modules/... に焼き込まれてしまい、ProtectHome に弾かれて EACCES します。/var/lib/typress-build などホーム外でビルドするのが確実です。

管理画面で invalid_input ばかり返ってくる

v0.1.x で破壊的操作の API は {password, totp?} ラップ形式に変わりました (ADR-005)。古い admin SPA がキャッシュされていると flat ボディで投げて invalid_input になります。Cmd+Shift+R / Ctrl+Shift+R で hard reload してください。

テーマ再インストールで EACCES

0.1.x の uninstall はディスクからファイルを削除しなかったので、同じ id+version で再インストールすると 0o444 (read-only) のままの index.js を上書きしようとして失敗していました。0.1.4 以降は uninstall 時にディレクトリごと削除するので解消します。古いインスタンスからアップグレードした場合のみ、stale なディレクトリを sudo rm -rf で 1 度掃除する必要があります。

サイト設定を保存したら nav が空になった

「設定」画面は site.nav の全体を上書きします。nav 項目を 1 行も追加せずに「保存」を押すと [] になります。同じ理由で navStyle.cta などの個別フィールドも消えやすいので、保存前に既存値が画面に揃っているか確認してください。