概要
Fess のマルチテナンシー機能を使用すると、単一の Fess インスタンスで 複数のテナント(組織、部門、顧客など)を分離して運用できます。
仮想ホスト機能を使用することで、各テナントに対して:
独立した検索UI
分離されたコンテンツ
カスタマイズされたデザイン
を提供できます。
仮想ホスト機能
仮想ホストは、HTTPリクエストのホスト名に基づいて、異なる検索環境を提供する機能です。
仕組み
ユーザーが
tenant1.example.comにアクセスFess がホスト名を識別
対応する仮想ホスト設定を適用
テナント固有のコンテンツとUIを表示
仮想ホストの設定
管理画面での設定
管理画面にログイン
「クローラー」→「仮想ホスト」に移動
「新規作成」をクリック
以下を設定:
ホスト名:
tenant1.example.comパス: ``/tenant1``(オプション)
クロール設定との連携
Webクロール設定で仮想ホストを指定することで、コンテンツを分離できます:
「クローラー」→「ウェブ」でクロール設定を作成
「仮想ホスト」フィールドで対象の仮想ホストを選択
この設定でクロールされたコンテンツは、指定した仮想ホストでのみ検索可能
アクセス制御
仮想ホストとロールの組み合わせ
仮想ホストとロールベースのアクセス制御を組み合わせることで、 より細かいアクセス制御が可能です:
# 設定例
virtual.host=tenant1.example.com
permissions=role_tenant1_user
ロールベース検索
詳細は ロールベース検索の設定 を参照してください。
UIカスタマイズ
各仮想ホストに対してUIをカスタマイズできます。
テーマの適用
仮想ホストごとに異なるテーマを適用:
「システム」→「デザイン」でテーマを設定
仮想ホスト設定でテーマを指定
カスタムCSS
仮想ホストごとにカスタムCSSを適用:
# 仮想ホスト固有のCSSファイル
/webapp/WEB-INF/view/tenant1/css/custom.css
ラベル設定
仮想ホストごとに表示するラベルを制限:
ラベルタイプの設定で仮想ホストを指定
指定した仮想ホストでのみラベルが表示される
API認証
仮想ホストごとにAPIアクセスを制御:
アクセストークン
仮想ホストに紐づくアクセストークンを発行:
「システム」→「アクセストークン」でトークンを作成
トークンに仮想ホストを関連付け
APIリクエスト
curl -H "Authorization: Bearer TENANT_TOKEN" \
"https://tenant1.example.com/api/v1/search?q=keyword"
DNS設定
マルチテナンシーを実現するためのDNS設定例:
同一サーバーへのサブドメイン
# DNS設定
tenant1.example.com A 192.168.1.100
tenant2.example.com A 192.168.1.100
# またはワイルドカード
*.example.com A 192.168.1.100
リバースプロキシ設定
Nginxを使用したリバースプロキシ設定例:
server {
server_name tenant1.example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
server_name tenant2.example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
データ分離
完全なデータ分離が必要な場合は、以下のアプローチを検討:
インデックスレベルの分離
各テナントに対して別々のインデックスを使用:
# テナント1用インデックス
index.document.search.index=fess_tenant1.search
# テナント2用インデックス
index.document.search.index=fess_tenant2.search
注釈
インデックスレベルの分離には、カスタム実装が必要な場合があります。
ベストプラクティス
明確な命名規則: 仮想ホストとロールに一貫した命名規則を使用
テスト: 各テナントでの動作を十分にテスト
監視: テナントごとのリソース使用状況を監視
ドキュメント: テナント設定を文書化
制限事項
管理画面は全テナントで共有されます
システム設定は全テナントに影響します
一部の機能は仮想ホストに対応していない場合があります
参考情報
ロールベース検索の設定 - ロールベースのアクセス制御
仮想ホスト - 仮想ホスト設定の詳細
ページのデザイン - デザインカスタマイズ