← すべての投稿に戻る

By Roxチーム

Rox v2026.5.1 リリース

Rox v2026.5.1 をリリースしました!🎉

このバージョンでは、本番運用に欠かせない エラー追跡 (Error Tracking) を Rox 本体に組み込みました。SaaS の Sentry はもちろん、OSS で API 互換の GlitchTip にもそのまま接続できる構成にしてあります。

ハイライト

🔭 Sentry / GlitchTip 連携 (#205 / #204)

バックエンドとフロントエンドの両方に、エラー追跡 SDK を組み込みました。

  • バックエンド: @sentry/bun を使用。src/instrument.ts を別モジュールとして分離し、src/index.ts の最初の import で読み込むことで、OpenTelemetry ベースの自動計測が他のモジュールよりも先に走るよう設計しています。
  • フロントエンド: @sentry/react を使用。クライアント側のモジュールロード時点で初期化されるため、初期レンダー中のエラーも取りこぼしません。
  • DSN 未設定なら完全 no-op: SENTRY_DSN / VITE_SENTRY_DSN が空のときは Sentry 関連の処理を一切行わず、依存もランタイムに残りません。セルフホストで監視サービスを使わないユーザーにも負担をかけません。

🛡️ 厳格な PII スクラブ

ActivityPub サーバーは、リクエストに Authorization ヘッダや OAuth の code / state パラメータなど、機微情報を含むことがあります。これらが誤って外部の監視サービスに送られないよう、Rox の Sentry 連携は 送信前に必ず PII を削除するよう設計しました。

  • event.request.{cookies, data, headers, query_string}beforeSend で削除
  • event.user.{email, username, ip_address} も同様に削除
  • includeServerName: false でホスト名も除外(デフォルトでは os.hostname() がイベントに含まれてしまうため)

⏰ Cron Monitoring (heartbeat) を内蔵

定期実行されるバックエンドサービスに、Sentry の Cron Monitoring (Check-ins) を組み込みました。サービスが死んだまま誰も気付かない状況を防ぎます。

  • ReceivedActivitiesCleanupService (日次)
  • RemoteInstanceRefreshService (毎時)
  • ScheduledNotePublisher (毎分)

withMonitor という小さなヘルパーで包んでいるため、追加サービスも数行で監視対象に追加できます。こちらも DSN 未設定時はスルーパスです。

🩺 観測しやすい設計

  • バックエンドの errorHandler middleware で発生したエラーは、Hono のルートテンプレート (/users/:username 等) をタグに付けて Sentry に送信されます。生の URL は extras にしか入らないため、タグの高カーディナリティ問題を回避しています。
  • フロントエンドの ErrorBoundarycomponentStack を含めて捕捉します。

環境変数

# バックエンド
SENTRY_DSN=https://xxxx@sentry.example/xxxx
SENTRY_ENVIRONMENT=production
SENTRY_TRACES_SAMPLE_RATE=0.0
SENTRY_RELEASE=2026.5.1

# フロントエンド (ビルド時に焼き込まれる)
VITE_SENTRY_DSN=https://xxxx@sentry.example/xxxx
VITE_SENTRY_ENVIRONMENT=production
VITE_SENTRY_TRACES_SAMPLE_RATE=0.0
VITE_SENTRY_RELEASE=2026.5.1

周辺の改善

  • Dependabot のターゲットを dev ブランチへ変更 (#207 / #206) — リリースフローと噛み合うようになり、obsolete な PR が作られなくなりました。
  • 既存の TypeScript 6.0.3 / Lingui 6.0.1 へのアップデートも引き続き取り込み済みです。

バージョン情報

コンポーネント バージョン
Rox (Project) 2026.5.1
Hono Rox (Backend) 1.7.0
Waku Rox (Frontend) 1.7.0
Shared 1.7.0

アップデート方法

最新版へは、リポジトリの pull と依存関係の更新で移行いただけます。

git pull origin main
bun install --frozen-lockfile
bun run build

Sentry / GlitchTip を使う場合.envSENTRY_DSN / VITE_SENTRY_DSN を追加してください。使わない場合は何も設定しなくて大丈夫です

ご質問やフィードバックは GitHub Issues にてお待ちしております。

愛がロックする。Rox。 🚀