Tech

【OSSでWiki構築】第9回:日本語対応編 トラブルシューティング

公開

【OSSでWiki構築】連載記事一覧
第1回
第2回:環境構築編
第3回:環境構築編 トラブルシューティング
第4回:Google OAuth編
第5回:Google OAuth編 トラブルシューティング
第6回:アクセス制御編
第7回:アクセス制御編 トラブルシューティング
第8回:日本語対応編
第9回:日本語対応編 トラブルシューティング ※本記事


1. はじめに

このドキュメントは、『第8回:日本語対応編』を進める過程で実際に発生した問題と、その解決に至るまでのプロセスを記録したものです。
エラーは失敗ではなく、システムへの理解を深めるための最高のヒントです。各エラーから得られた学びを共有します。

ケーススタディ1:タイムゾーン設定がUIに表示されない

発生した事象

docker-compose.ymlTZ: 'Asia/Tokyo'を設定した後、設定が反映されたかを確認しようとSettings(設定)画面を探したが、「General」(一般)や「Timezone」(タイムゾーン)といった項目がどこにも見当たらなかった。

原因の分析

これはOutlineのUIがアップデートされた結果のようです。TZという環境変数がコンテナに正しく設定されている場合、Outlineはそれを自動的に検知し、ワークスペース全体の標準時刻として強制的に適用します。

UI上でユーザーに選択させるまでもない「自明の設定」として扱われるため、UI上の設定項目自体が削除されたものと推測されます。

学び

UI上に設定項目が見当たらない場合、必ずしも「設定が失敗している」わけではありません。docker-compose.ymlの環境変数(TZなど)によって、UIよりも優先度の高いレベルで、自動的に設定が適用されている可能性があります。
最終的な動作(例:ドキュメントの最終更新日時がJSTで表示されるか)で確認するのが確実です。

ケーススタディ2:DEFAULT_LANGUAGEを設定しても、UIが英語のままだった

発生した事象

docker-compose.ymlDEFAULT_LANGUAGE: 'ja_JP'を設定しコンテナを再起動したが、管理者アカウントでログインすると、UIが英語のままだった。

原因の分析

Outlineは、言語設定を2つの階層で管理しています。

  1. システム全体のデフォルト: DEFAULT_LANGUAGE環境変数。
  2. ユーザー個人の設定: Settings > PreferencesLanguage設定。

DEFAULT_LANGUAGE設定が適用されるのは、「これから新しく参加するユーザー」の初期設定に対してのみです。
この設定を追加するに管理者アカウントでログインしていたため、その時点で管理者個人の言語設定がEnglishとしてデータベースに保存されていました。
すでに保存されている「個人設定」が、「システム全体のデフォルト設定」よりも優先されるため、UIは英語のままでした。

解決策

  1. 既存ユーザー(管理者): Settings > Preferencesから、手動で言語をJapanese (日本語)に変更した。
  2. 新規ユーザー: 新しく招待した別のアカウントでログインしたところ、最初からUIが日本語で表示されることを確認し、DEFAULT_LANGUAGE設定が正常に機能していることを証明した。

学び

設定変更が反映されない場合、「設定の適用範囲」(システム全体か、個人か)と「設定の優先順位」(どちらが優先されるか)を意識することが重要です。

ケーススタディ3:ロゴのアップロードで「Error 500」が発生

発生した事象

Settings > Detailsで、ワークスペースのロゴをPCからアップロードしようとしたところ、A network error occurredというメッセージが表示され、最終的にError 500(サーバー内部エラー)で失敗した。

原因の分析

これは、アクセス制御編の「招待メールが送信できない(SMTPサーバー未設定)」問題と、全く同じ根本原因です。
Outline(および多くの現代的Webアプリ)は、データ(テキスト、設定)とファイル(画像、添付ファイル)の保存場所を厳格に分けています。

  • データ(テキストなど): データベース(PostgreSQL)に保存されます。
  • ファイル(ロゴ、画像など): 専用のファイルストレージ(Amazon S3, Google Cloud Storage, MinIOなど)に保存されます。

docker-compose.ymlに、このファイルストレージの接続情報(S3_BUCKET, AWS_ACCESS_KEY_IDなど)を設定していなかったため、Outlineは「ロゴ画像を受け取ったが、保存場所が分からない」という内部パニックを起こし、Error 500を返しました。

解決策

これはlocalhostのバグではなく、本番運用を見据えた「仕様」です。
解決策は、docker-compose.ymlにファイルストレージ用の環境変数を追加
し、Outlineがファイルを保存できる場所を指定することです。(※今回のプロジェクトでは、この設定は行わず、「ファイルストレージが必須である」という知見を得ることをゴールとしました)

学び

Error 500は、漠然とした「サーバーエラー」の総称ですが、ファイルアップロード時に発生した場合、基本的には「ストレージ設定の不備」を疑うのがいいでしょう。
現時点でOutlineを本番環境で運用するためには、SMTP(メール)S3(ストレージ)の2つの外部サービス設定が必要になると思われます。


前の記事:第8回:日本語対応編
次の記事:準備中

【OSSでWiki構築】連載記事一覧
第1回
第2回:環境構築編
第3回:環境構築編 トラブルシューティング
第4回:Google OAuth編
第5回:Google OAuth編 トラブルシューティング
第6回:アクセス制御編
第7回:アクセス制御編 トラブルシューティング
第8回:日本語対応編
第9回:日本語対応編 トラブルシューティング ※本記事