Fessのdeb更新で設定ファイルを保護する変更と移行時の注意点

Fessのdebパッケージで、/etc/fess内の設定ファイルをdpkgのconffilesとして扱う変更がマージされました。ローカルで編集した設定を、更新や再インストールで上書きされにくくする改善です。追加修正では、15.8からの初回移行で未編集の設定を新版へ置き換えます。編集済み設定の選択と無人更新の方針は、引き続き確認が必要です。

保護対象と更新時の動作

対象はfess_config.properties、logging.properties、tomcat_config.properties、tika.xmlと、chunk・crawler・suggest・thumbnail・web用の5つのfess_env_*.propertiesです。

従来はこれらが通常のパッケージファイルとして扱われ、編集した内容が確認なしで上書きされる場合がありました。修正後はconffilesとなり、ローカルとパッケージの双方で変更があればdpkgが選択を求めます。採用しなかった内容は状況に応じて.dpkg-oldや.dpkg-distに残ります。

初回移行と無人更新

追加修正#3627を含むパッケージでは、15.9より前からの更新時に、旧パッケージの記録したMD5と一致する未編集の/etc/fessファイルを新版へ置き換えます。この場合は確認を求めません。編集済みファイルは保持し、dpkgの通常の設定選択に従います。--force-confoldなら編集を残して新版を.dpkg-distへ、Yまたは--force-confnewなら新版を採用して旧編集を.dpkg-oldへ保存します。

#3608だけを含み#3627を含まないビルドでは、未編集のファイルにも確認が発生し、旧初期値を残す場合があります。対象ビルドの修正範囲を確認してください。/etc/default/fess、/etc/init.d/fess、systemdユニットは15.8時点ですでにconffilesで、今回の未編集ファイルの処理対象ではありません。

apt-get install -yだけでは、この設定選択への応答を保証できません。標準入力がない環境では更新処理が止まり、パッケージが未設定状態で残る場合があります。自動更新では既存設定を残すか新しい設定を採用するかを決め、dpkgの--force-confold・--force-confnewなどの方針を明示します。

既存設定を残す方針で、設定待ちの状態を解消する例は次のとおりです。

sudo dpkg --configure -a --force-confold

このコマンドは未設定のパッケージ全体を対象にします。実行前にパッケージ状態と設定のバックアップを確認してください。既存設定を残した場合、新しい初期値が自動で反映されるわけではありません。.dpkg-distなどを比較し、必要な差分を取り込みます。

削除との違い

修正後はdpkg -rで設定ファイルが残ります。dpkg -Pでは設定も削除されます。更新時の保護をバックアップの代わりにせず、設定の保管と差分確認を更新手順に含めてください。

関連PR

FessのWeb認証でホスト・NTLM設定と401応答を確認する

認証が必要なWebサイトをFessでクロールするときは、ユーザー名とパスワードだけでなく、資格情報を適用する範囲を確認する必要があります。15.9開発版に向けた文書整備と、NTLMのワークステーション名・401応答の記録に関する変更を紹介します。

2026年10月15日確認時点では関連する4件のPRはすべてマージ済みです。

資格情報を適用する範囲

管理画面のWeb認証設定には、先に登録したWebクロール設定を指定します。

項目空欄の場合・利用条件
ホスト名選択したクロール設定内の任意のホストに適用。リンクやリダイレクトでたどる別ホストも対象になり得るため、対象ホストを指定する
ポート任意のポートに適用。-1ではなく空欄を使う
レルム任意のレルムに適用。BASIC/DIGESTで指定する場合は大文字小文字も一致させる。NTLMでは使われない

スキーム欄はサーバーが要求する方式を強制する設定ではありません。たとえばDIGESTで登録しても、サーバーがBASICを要求すればBASICで応答します。サーバーの実際の方式に合わせ、HTTPSで利用してください。NTLMとBASIC/DIGESTの資格情報は互いに代わりにはなりません。

NTLMのドメインとworkstation

ユーザー名にはユーザー部分を入力し、パラメーター欄に次のように記述します。

domain=EXAMPLE
workstation=FESSCRAWLER

DOMAIN\userをユーザー名欄に入れても、自動的にドメインとユーザーへ分割されません。domainを省略すると空ドメインになり、指定値は大文字に変換して送信されます。

workstationを省略した場合はFess実行ホストの名前が使われます。PR #221は、明示したworkstationがHttpClient 5に無視され、ローカルホスト名になる問題を修正します。修正を含むクローラーで、NTLM Type 3メッセージに設定値が反映されます。Type 1へworkstationを追加する変更ではありません。

401を障害URLで確認する

PR #3651は、同梱設定の初期値を404,403,410から404,403,410,401へ変更します。資格情報の不一致や更新後の認証失敗を、障害URLとして確認しやすくします。

既存環境でこのプロパティを設定している場合は、自動的に書き換わりません。401を記録する運用を選ぶ場合は、既存のコードを残して設定を見直してください。

crawler.failure.url.status.codes=404,403,410,401

401が返っても、すでにインデックスにある文書は削除されません。障害URLによる後続クロールの除外はfailure.count.thresholdに依存し、初期値の-1では無効です。閾値を設定している環境では、認証情報の訂正だけで再クロールできるとは限りません。認証を要求するページへのリンクがある公開サイトでも401の記録が増える可能性があります。

関連PR

Fessのキャッシュ表示で相対URLの画像とリンクを解決する

FessのbootstrapテーマでキャッシュしたHTMLを表示すると、相対URLの画像やリンクが元サイトへ解決されない問題を修正しました。キャッシュ表示の中でURLを元ページのアドレスに基づいて変換し、画像などの参照先を正しく組み立てます。

base要素が効かない理由

キャッシュビューアーはHTMLをsandbox付きのBlobフレームへ入れます。その文書に親ページのContent-Security-Policyが引き継がれ、base-uri 'self'によって元ページを指定するbase要素が無視されていました。ブラウザのコンソールにbase-uriの違反が出て、画像やリンクの相対アドレスがBlobを基準に扱われます。

今回の修正ではbase要素を取り除き、HTMLのhref、src、srcset、ポスター画像、背景画像などの参照を、APIが返した元ページURLで解決してから表示します。たとえば元ページがhttps://example.com/docs/page.htmlなら、img/photo.pngはhttps://example.com/docs/img/photo.pngになります。

利用条件と初期値

新しい切り替え設定はありません。修正を含むbootstrapテーマと、元ページURLを持つHTMLキャッシュが必要です。別配布のテーマや独自テーマは、そのテーマに対応する修正を確認してください。

本体の文書キャッシュ設定はcrawler.document.cache.enabled=true、対応MIMEタイプはcrawler.document.cache.supported.mimetypes=text/htmlが初期値です。最大サイズの初期値はcrawler.document.cache.max.size=2621440バイトです。実際に対象文書のキャッシュが保存されている必要があり、設定を有効にするだけで過去の文書へ本文が追加されるわけではありません。

元URLを返す既存HTMLキャッシュのURL解決だけなら再クロールで作り直す処理ではありません。修正版でキャッシュ画面を再読み込みし、元サイトにある画像が取得できるか確認します。

元ページと同じ表示にはならない

CSPやフレームのsandbox制限は維持します。元サイトの外部スタイルシート、フォント、メディア、object、埋め込みフレームは引き続き拒否されることがあります。画像や背景画像のURL解決が改善されても、元ページのデザインや動画をそのまま再現する機能ではありません。

フレーム内の通常リンクは、遷移先がframe-src blob:に合わず拒否される場合があります。target="_blank"のリンクは元URLを別タブで開けます。元URLがない場合は変換せず、ページ内アンカーや既に絶対URLの参照も維持します。

WebKitでBlob自体が空になる問題を扱うtheme.index.frame.ancestorsとは原因が異なります。今回の相対URL修正のためにCSPを緩める設定は必要ありません。修正PRのブラウザ確認はChromiumとFirefoxで行われています。

関連PR