環境変数
Notariumは環境変数で設定します。デフォルトのままで問題なく動くので、ローカル実行なら何も記入する必要はありません。.env.example を .env にコピーし、必要な行だけを編集してください。Dockerスタックは .env をそのままコンテナに渡すため(値がイメージに焼き込まれることはありません)、同じ1つのファイルがローカルインスタンスと本番インスタンスの両方を記述します。
cp .env.example .env # デフォルトで動く — 必要なものだけ編集する
以下は全リファレンスです。一部の変数は .env.example に直接記載されていますが、それ以外(検索の細かなチューニング)はコード内にデフォルトがあり、.env.example には書き出されていません。そうした変数は個別に印を付けています。
コア
基本となる変数: ポート、認証モード、そしてメタデータデータベースとスペースの配置場所。
| 変数 | 用途 | デフォルト | 例 |
|---|---|---|---|
DATA_DIR | データに関する唯一のつまみ。ここを起点に他のすべて — メタデータデータベース、インデックス、ノート、アーティファクト — が導かれます。未設定 → 妥当なデフォルトが使われます。 | /data(Docker)、~/.local/share/notarium(ホスト) | DATA_DIR=/srv/notarium |
PORT | バックエンドが待ち受けるポート。単一のFastifyリスナーが /api、/mcp、そしてSPAの静的アセットを配信します。 | 3000 | PORT=3000 |
AUTH_MODE | 認証モード: password(ログインと初回起動時のセットアップ画面。メタデータデータベースが必要)または none(デスクトップ/開発/信頼できるイントラネット向けの、すべてにアクセスできる単一プリンシパル。ログインUIなし)。 | password | AUTH_MODE=none |
META_DB_URL | メタデータデータベース: アイデンティティ、リビジョンログ、スペースレジストリ、認証、プロジェクト。デフォルトでは DATA_DIR 配下のsqliteなので、password モードは設定なしで動きます。任意: メタデータの状態を外部のPostgres(状態の共有、HA)へ移すときだけ設定します。 | sqlite:<DATA_DIR>/meta.db | META_DB_URL=postgres://user:pass@db:5432/notarium |
SPACES_ROOT | 各スペースが1つのフォルダとなるルート。実行時にUIからスペースを作成できるようにします。任意: デフォルトは <DATA_DIR>/spaces で、ノートがデータルートの外にある場合だけ設定します。 | <DATA_DIR>/spaces | SPACES_ROOT=/mnt/notes |
SPACES_CONFIG | スペーストポロジーの明示指定: インラインJSONまたはJSONファイルへのパス。単一スペース用の各変数を上書きします。 | 未設定 | SPACES_CONFIG=/data/spaces.json |
ENGINE_DATA_DIR | エンジンが派生インデックスを保持する場所 — スペースごとに1ファイルです。ファイル名はスペースのフォルダ名に従い、スペースをリネームしても変わりません。ディレクトリを削除 → 起動時に再インデックスが走り、インデックスは復元可能です。任意: デフォルトは <DATA_DIR>/engine で、インデックスを別ディスクへ移すときに設定します。 | <DATA_DIR>/engine | ENGINE_DATA_DIR=/mnt/ssd/engine |
JOBS_DATA_DIR | ジョブのディレクトリ: 非同期エクスポートのアーティファクト(派生物であり、TTLで片付けられます)と、未完了のインポートでアップロードされたファイル。後者はそのジョブが生きているあいだだけ存在するため、バックアップに含めるべきものです。任意: デフォルトは <DATA_DIR>/jobs で、別ディスクへ移すときに設定します。 | <DATA_DIR>/jobs | JOBS_DATA_DIR=/mnt/ssd/jobs |
SPACE_IDLE_EVICT_SECONDS | アイドル状態のスペースの読み取りモデルをメモリからアンロードします。0 — 温めたまま保持します。ライブのSSE接続があるスペースは決してアンロードされません。 | 0 | SPACE_IDLE_EVICT_SECONDS=900 |
SYNC_POLL_SECONDS | ディスク上の外部変更をポーリングする間隔(各ポーリングはスペース全体の再スキャン)。0 — ポーリングを無効化します。監視できないマウント(ネットワークボリューム、インメモリ)では、実効間隔は上限60秒に抑えられます。 | 120 | SYNC_POLL_SECONDS=0 |
PUBLIC_BASE_URL | リバースプロキシ背後にあるインスタンスの正規の外部アドレス — MCPコネクタのOAuthメタデータ用。指定しない場合、アドレスはプロキシの転送ヘッダから導かれます。 | 未設定 | PUBLIC_BASE_URL=https://notes.example.com |
TRUST_PROXY | 直接接続されているプロキシのIP/CIDRをカンマ区切りで並べたリスト — ログインのレート制限と新しいOAuthクライアントの受け入れに使う、実際のクライアントIPをここから導きます。未設定なら安全なデフォルト、つまり X-Forwarded-For はレート制限に影響しません。真偽値、ホップ数、名前付きの範囲、全アドレスの範囲(/0)は起動時に拒否されます。 | 未設定 | TRUST_PROXY=172.18.0.0/16 |
ディスク上には別々の2つのものが存在します。SPACES_ROOT はMarkdownの真実(あなたのノート、スペースごとに1フォルダ)です。META_DB_URL はメタデータデータベース、つまりファイルからは導けないもの(ユーザー、アクセス権、バージョン履歴)です。詳しくは セルフホスト セクションを参照してください。
単一スペース(ベアホスト、Dockerなし)
SPACES_CONFIG も SPACES_ROOT も使わずに単一スペースを動かす場合(たとえば Docker を使わない、ホスト上での直接実行)。
| 変数 | 用途 | デフォルト | 例 |
|---|---|---|---|
ENGINE | 単一スペースのエンジン。値は notarium のみで、未設定のままで構いません。 | notarium | ENGINE=notarium |
NOTES_DIR | 単一スペースのノートフォルダへの絶対パス(単一スペースモード)。 | 未設定 | NOTES_DIR=/home/me/notes |
セマンティック検索
全文検索(字句検索、FTS)は設定なしで常に動きます。セマンティック検索(ベクトル検索)とハイブリッド検索はオプトインです。重量級のネイティブスタック(onnxruntime + sqlite-vec、ディスク上で約660 MB)に加え、bge-m3埋め込みモデル(ディスク上で約600 MB、数百MBのRAM)が必要になります。以下の変数はコード内にデフォルトがあり、.env.example には書き出されていません。
| 変数 | 用途 | デフォルト | 例 |
|---|---|---|---|
VECTOR_SEARCH | on/off — セマンティックとハイブリッド融合を有効にします。ネイティブスタックが無い場合、on はエラーなしで全文検索へフォールバックします。 | on(コード)、off(公開イメージ) | VECTOR_SEARCH=on |
EMBED_MODEL | 埋め込みモデルのid(transformers.js/ONNX)。EMBED_DIMENSIONS とセットで設定します。 | Xenova/bge-m3 | EMBED_MODEL=Xenova/multilingual-e5-small |
EMBED_DIMENSIONS | ベクトルの幅。モデルと必ず一致させる必要があります(bge-m3 — 1024、e5-small — 384)。不一致はfail-closedとなり、ノートはFTSのみのままになります。 | 1024 | EMBED_DIMENSIONS=384 |
EMBED_DTYPE | モデルの量子化: fp32 / fp16 / q8 / q4。 | q8 | EMBED_DTYPE=fp16 |
EMBED_THREADS | バックグラウンドインデックス作成ワーカー1つあたりのONNX intra-opスレッド数(EMBED_WORKERS 個のワーカーからなるプール)。 | ワーカーごとに 1(プール無しのフォールバックはコアの半分) | EMBED_THREADS=2 |
EMBED_WORKERS | 埋め込み用 worker_threads プールのサイズ = コアをまたぐバックグラウンドインデックス作成の並列度。各ワーカーはモデルのコピーを自前で保持します(RAMに影響します)。 | max(1, min(コア数−2, 4)) | EMBED_WORKERS=8 |
EMBED_QUERY_PREFIX / EMBED_PASSAGE_PREFIX | 非対称モデル(e5)向けのプレフィックス。対称のbge-m3では設定しないでください — さもないと気づかないうちに品質が落ちます。 | 未設定 | EMBED_QUERY_PREFIX="query: " |
EMBED_CPU_MEM_ARENA | on/off。off はbge-m3の消費を約1.9 GBのRAMで一定に保ちます — スワップなしの余裕のないマシンでのOOMに対する備えです(on だとアリーナが数GBまで膨らむことがあります)。 | on | EMBED_CPU_MEM_ARENA=off |
GRAPH_BOOST | on/off — 3つ目のRRFチャネル(リンク上でのグラフブースト、1ホップのウィキリンク)。VECTOR_SEARCH=off のときは不活性です。 | off | GRAPH_BOOST=on |
バックアップとリストア
組み込みの backup、backup verify、restore コマンドは設定なしで動きます。以下の変数が要るのは、コンテナのルートが読み取り専用でマウントされている場合や、データ量が一般的な規模より明らかに大きい場合だけです。詳しくは バックアップとリストア を参照してください。
| 変数 | 用途 | デフォルト | 例 |
|---|---|---|---|
NOTARIUM_BACKUP_TMPDIR | バックアップ、検証、リストアの中間ファイルを置くディレクトリ。コンテナのルートが読み取り専用の場合や /tmp の空き容量が足りない場合に設定します: ストリーミングのバックアップは、アーカイブに加えて展開済み2ステージ分の場所を一時的に必要とすることがあります。 | /tmp | NOTARIUM_BACKUP_TMPDIR=/mnt/scratch |
NOTARIUM_BACKUP_MAX_BYTES | サイズの上限 — 圧縮された入力と展開後のペイロードの両方にかかります。zipボム対策であり、引き上げるのは信頼できる大規模なインストールだけです。 | 64 GiB | NOTARIUM_BACKUP_MAX_BYTES=137438953472 |
NOTARIUM_BACKUP_MAX_ENTRIES | アーカイブ内のエントリ数の上限。 | 1000000 | NOTARIUM_BACKUP_MAX_ENTRIES=2000000 |
NOTARIUM_BACKUP_MAX_METADATA_BYTES | 名前、ZIPの内部構造、manifest.json に対する個別のメモリ上限。 | 32 MiB | NOTARIUM_BACKUP_MAX_METADATA_BYTES=67108864 |
Dockerとビルド
| 変数 | 用途 | デフォルト | 例 |
|---|---|---|---|
IMAGE / TAG | docker compose / make up 向けのイメージ参照。主なインストール経路は公開イメージ docouno/notarium:latest です。自前のレジストリや特定のタグを使うには、このイメージ参照を上書きします。 | docouno/notarium:latest | IMAGE=docouno/notarium TAG=latest |
GIT_SHA / BUILD_TIME | ビルド引数。GET /api/about と Settings → About タブにインライン展開されます。指定しない場合は null になります。 | 空 | GIT_SHA=$(git rev-parse --short HEAD) |
docouno/notarium:latest は公開イメージであり、主なインストール経路です。IMAGE / TAG は docker compose / make up がプルするイメージを指定します。イメージがまだレジストリからプルされていない場合は、メインリポジトリでソースからビルドしてください: make up(挙動は同一です)。
関連項目
- セルフホスト設定 — インストール、ボリューム、本番構成。
- 検索 — 字句、セマンティック、ハイブリッド融合、そしてエラーなしの全文検索へのフォールバック。
- キーボードショートカット リファレンス — レイアウトとプリセット。