Notariumドキュメント
ドキュメントのバージョン: latest

環境変数

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の静的アセットを配信します。3000PORT=3000
AUTH_MODE認証モード: password(ログインと初回起動時のセットアップ画面。メタデータデータベースが必要)または none(デスクトップ/開発/信頼できるイントラネット向けの、すべてにアクセスできる単一プリンシパル。ログインUIなし)。passwordAUTH_MODE=none
META_DB_URLメタデータデータベース: アイデンティティ、リビジョンログ、スペースレジストリ、認証、プロジェクト。デフォルトでは DATA_DIR 配下のsqliteなので、password モードは設定なしで動きます。任意: メタデータの状態を外部のPostgres(状態の共有、HA)へ移すときだけ設定します。sqlite:<DATA_DIR>/meta.dbMETA_DB_URL=postgres://user:pass@db:5432/notarium
SPACES_ROOT各スペースが1つのフォルダとなるルート。実行時にUIからスペースを作成できるようにします。任意: デフォルトは <DATA_DIR>/spaces で、ノートがデータルートの外にある場合だけ設定します。<DATA_DIR>/spacesSPACES_ROOT=/mnt/notes
SPACES_CONFIGスペーストポロジーの明示指定: インラインJSONまたはJSONファイルへのパス。単一スペース用の各変数を上書きします。未設定SPACES_CONFIG=/data/spaces.json
ENGINE_DATA_DIRエンジンが派生インデックスを保持する場所 — スペースごとに1ファイルです。ファイル名はスペースのフォルダ名に従い、スペースをリネームしても変わりません。ディレクトリを削除 → 起動時に再インデックスが走り、インデックスは復元可能です。任意: デフォルトは <DATA_DIR>/engine で、インデックスを別ディスクへ移すときに設定します。<DATA_DIR>/engineENGINE_DATA_DIR=/mnt/ssd/engine
JOBS_DATA_DIRジョブのディレクトリ: 非同期エクスポートのアーティファクト(派生物であり、TTLで片付けられます)、未完了のインポートでアップロードされたファイル。後者はそのジョブが生きているあいだだけ存在するため、バックアップに含めるべきものです。任意: デフォルトは <DATA_DIR>/jobs で、別ディスクへ移すときに設定します。<DATA_DIR>/jobsJOBS_DATA_DIR=/mnt/ssd/jobs
SPACE_IDLE_EVICT_SECONDSアイドル状態のスペースの読み取りモデルをメモリからアンロードします。0 — 温めたまま保持します。ライブのSSE接続があるスペースは決してアンロードされません。0SPACE_IDLE_EVICT_SECONDS=900
SYNC_POLL_SECONDSディスク上の外部変更をポーリングする間隔(各ポーリングはスペース全体の再スキャン)。0 — ポーリングを無効化します。監視できないマウント(ネットワークボリューム、インメモリ)では、実効間隔は上限60秒に抑えられます。120SYNC_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_ROOTMarkdownの真実(あなたのノート、スペースごとに1フォルダ)です。META_DB_URL はメタデータデータベース、つまりファイルからは導けないもの(ユーザー、アクセス権、バージョン履歴)です。詳しくは セルフホスト セクションを参照してください。

単一スペース(ベアホスト、Dockerなし)

SPACES_CONFIGSPACES_ROOT も使わずに単一スペースを動かす場合(たとえば Docker を使わない、ホスト上での直接実行)。

変数用途デフォルト
ENGINE単一スペースのエンジン。値は notarium のみで、未設定のままで構いません。notariumENGINE=notarium
NOTES_DIR単一スペースのノートフォルダへの絶対パス(単一スペースモード)。未設定NOTES_DIR=/home/me/notes

セマンティック検索

全文検索(字句検索、FTS)は設定なしで常に動きます。セマンティック検索(ベクトル検索)とハイブリッド検索はオプトインです。重量級のネイティブスタック(onnxruntime + sqlite-vec、ディスク上で約660 MB)に加え、bge-m3埋め込みモデル(ディスク上で約600 MB、数百MBのRAM)が必要になります。以下の変数はコード内にデフォルトがあり、.env.example には書き出されていません。

変数用途デフォルト
VECTOR_SEARCHon/off — セマンティックとハイブリッド融合を有効にします。ネイティブスタックが無い場合、on はエラーなしで全文検索へフォールバックします。on(コード)、off(公開イメージ)VECTOR_SEARCH=on
EMBED_MODEL埋め込みモデルのid(transformers.js/ONNX)。EMBED_DIMENSIONSセットで設定します。Xenova/bge-m3EMBED_MODEL=Xenova/multilingual-e5-small
EMBED_DIMENSIONSベクトルの幅。モデルと必ず一致させる必要があります(bge-m3 — 1024、e5-small — 384)。不一致はfail-closedとなり、ノートはFTSのみのままになります。1024EMBED_DIMENSIONS=384
EMBED_DTYPEモデルの量子化: fp32 / fp16 / q8 / q4q8EMBED_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_ARENAon/offoff はbge-m3の消費を約1.9 GBのRAMで一定に保ちます — スワップなしの余裕のないマシンでのOOMに対する備えです(on だとアリーナが数GBまで膨らむことがあります)。onEMBED_CPU_MEM_ARENA=off
GRAPH_BOOSTon/off — 3つ目のRRFチャネル(リンク上でのグラフブースト、1ホップのウィキリンク)。VECTOR_SEARCH=off のときは不活性です。offGRAPH_BOOST=on
独立した2つのスイッチ

ローカルでセマンティックを動かすには両方が必要です。ネイティブスタックがインストール済みであること(make deps-vector。デフォルトの make deps はインストールせず、公開イメージには常に同梱されています)、かつ VECTOR_SEARCH=on であること。スタックが無ければ、on はエラーなしで全文検索(字句検索)へフォールバックします。詳しくは 検索検索のセットアップ のセクションを参照してください。

バックアップとリストア

組み込みの backupbackup verifyrestore コマンドは設定なしで動きます。以下の変数が要るのは、コンテナのルートが読み取り専用でマウントされている場合や、データ量が一般的な規模より明らかに大きい場合だけです。詳しくは バックアップとリストア を参照してください。

変数用途デフォルト
NOTARIUM_BACKUP_TMPDIRバックアップ、検証、リストアの中間ファイルを置くディレクトリ。コンテナのルートが読み取り専用の場合や /tmp の空き容量が足りない場合に設定します: ストリーミングのバックアップは、アーカイブに加えて展開済み2ステージ分の場所を一時的に必要とすることがあります。/tmpNOTARIUM_BACKUP_TMPDIR=/mnt/scratch
NOTARIUM_BACKUP_MAX_BYTESサイズの上限 — 圧縮された入力と展開後のペイロードの両方にかかります。zipボム対策であり、引き上げるのは信頼できる大規模なインストールだけです。64 GiBNOTARIUM_BACKUP_MAX_BYTES=137438953472
NOTARIUM_BACKUP_MAX_ENTRIESアーカイブ内のエントリ数の上限。1000000NOTARIUM_BACKUP_MAX_ENTRIES=2000000
NOTARIUM_BACKUP_MAX_METADATA_BYTES名前、ZIPの内部構造、manifest.json に対する個別のメモリ上限。32 MiBNOTARIUM_BACKUP_MAX_METADATA_BYTES=67108864

Dockerとビルド

変数用途デフォルト
IMAGE / TAGdocker compose / make up 向けのイメージ参照。主なインストール経路は公開イメージ docouno/notarium:latest です。自前のレジストリや特定のタグを使うには、このイメージ参照を上書きします。docouno/notarium:latestIMAGE=docouno/notarium TAG=latest
GIT_SHA / BUILD_TIMEビルド引数。GET /api/aboutSettings → About タブにインライン展開されます。指定しない場合は null になります。GIT_SHA=$(git rev-parse --short HEAD)
イメージとソースからのビルド

docouno/notarium:latest は公開イメージであり、主なインストール経路です。IMAGE / TAGdocker compose / make up がプルするイメージを指定します。イメージがまだレジストリからプルされていない場合は、メインリポジトリでソースからビルドしてください: make up(挙動は同一です)。

関連項目