Project N.O.M.A.D.

Node for Offline Media, Archives, and Data — ブラウザから Wikipedia・地図・教材・ローカル AI に触れる、自己完結型のオフライン知識サーバー(Crosstalk-Solutions/project-nomad)

1 — 概要

Project N.O.M.A.D. は、インターネットが使えない環境でも知識・教育・AI ツールにアクセスできるよう、複数のコンテナ化サービスを 1 つの管理 UI(Command Center)で束ねるオフライン優先サーバー。Debian 系 Linux(Ubuntu 推奨)上に Docker で展開し、通常は http://localhost:8080 から操作する。

8080Command Center
Dockerコンテナ管理
RAGOllama + Qdrant
Apache 2.0ライセンス

初回インストール時のみインターネット接続が必要。以降はユーザーが追加ダウンロードを選ばない限りオフライン運用が前提。組み込みテレメトリはない。

2 — 構成

Command Center(admin サービス)は AdonisJS バックエンドと React / Inertia フロントで、ホスト上の Docker デーモンを直接操作する Docker-outside-of-Docker(DooD) パターンを採用。コンテナ内に Docker を入れず、/var/run/docker.sock 経由で Wikipedia(Kiwix)・Ollama・地図などの「インストール可能アプリ」を起動・更新する。

flowchart TD
  Browser["ブラウザ :8080"] --> Admin["Command Center
AdonisJS + React"] Admin --> MySQL["MySQL 8"] Admin --> Redis["Redis 7"] Admin --> Sock["Docker socket"] Sock --> Apps["インストール可能アプリ
Ollama / Kiwix / Kolibri / …"] Admin --> Side["Sidecar
updater / disk-collector"]

管理スタック(コアサービス)

adminCommand Center 本体。ストレージ・Docker ソケット・更新用共有ボリュームをマウント。
mysql / redisアプリ状態・ジョブキュー・キャッシュ。ホスト上 /opt/project-nomad/ に永続化。
updaterUI から Command Center イメージを更新する sidecar。
disk-collectorホストのディスク使用量を UI に表示(読み取り専用マウント)。
dozzle任意。コンテナログ閲覧(:9999)。アクション・シェルは無効化推奨。
リポジトリ構成: ルートに install/(シェル・Compose)、collections/(ZIM・地図マニフェスト)、admin/(Command Center ソース)が置かれる。
3 — 組み込み機能

UI から個別に追加・更新する。AI 系はすべて任意。

能力基盤内容
情報ライブラリKiwixオフライン Wikipedia、医学参考、電子書籍など
AI アシスタントOllama + Qdrantローカル LLM チャット、ドキュメント RAG
教育KolibriKhan Academy コース、進捗・複数ユーザー
オフライン地図ProtoMaps地域別タイル、検索・ナビ
データツールCyberChef暗号・エンコード・ハッシュ
メモFlatNotesMarkdown ノート(ローカル)
ベンチマーク組み込みハードウェアスコア、コミュニティリーダーボード

初回は Easy Setup Wizard でキュレーション済みコレクションを選べる。Wikipedia セレクタ、ZIM ライブラリ管理、コンテンツエクスプローラなどの管理ツールも Command Center に含まれる。

AI モデルはデフォルトでコンテナ内 Ollama。設定から別ホストの Ollama または OpenAI 互換 API(LM Studio 等)を指定可能。Ollama をリモートにする場合は OLLAMA_HOST=0.0.0.0 が必要。

4 — インストール

Debian 系 OS(Ubuntu 推奨)。sudo 権限が必要。デスクトップ環境は不要(ヘッドレスサーバー可)。

sudo apt-get update && \
sudo apt-get install -y curl && \
curl -fsSL https://raw.githubusercontent.com/Crosstalk-Solutions/project-nomad/refs/heads/main/install/install_nomad.sh \
  -o install_nomad.sh && \
sudo bash install_nomad.sh

完了後、ブラウザで http://localhost:8080(または http://<DEVICE_IP>:8080)を開く。

上級者向け

management_compose.yaml を docker-compose.yml として取得し、replaceme の環境変数(APP_KEY・DB パスワード・URL 等)を置換してから docker compose up -d。

プラットフォーム: 公式は Debian 系 x86-64。Windows は WSL2 ガイド(コミュニティサポート)。ARM(Raspberry Pi 等)は公式未対応(コミュニティ fork あり)。
5 — ハードウェア要件

管理アプリ自体は軽量。必要スペックはインストールするツール(特に LLM)で決まる。

区分CPURAMストレージ備考
最小(コアのみ)2 GHz デュアルコア+4 GB5 GB+インストール時のみネット必要
推奨(AI 込み)Ryzen 7 / Core i7+32 GB250 GB+ SSDGPU: RTX 3060 級+(VRAM がモデルサイズに直結)

価格帯別ビルド例は Hardware Guide を参照。

6 — 技術スタック
  • バックエンド: Node.js / TypeScript、AdonisJS(admin/)
  • フロント: React、Vite、Inertia.js
  • データ: MySQL 8、Redis 7(ジョブ・キャッシュ)
  • オーケストレーション: Docker Compose、ホスト Docker ソケット
  • 主要サービス層: docker_service、rag_service、ollama_service、zim_service、map_service など(admin/app/services/)

既存の Docker コンテナと共存可能。NOMAD コンテナ名は nomad_ プレフィックスで識別する。

7 — セキュリティとプライバシー
  • 認証なし: ローカル利用を想定し、組み込みユーザー認証はない。LAN 公開時はファイアウォールでポート制御を推奨。
  • インターネット直公開非推奨: 直接 WAN に晒す設計ではない。
  • テレメトリなし: 組み込みの送信機能はない。
  • 接続確認: オンライン判定に Cloudflare https://1.1.1.1/cdn-cgi/trace へのリクエストを使用。
  • Docker ソケット: コンテナ管理のため admin がホスト Docker にアクセス。sidecar も同様にソケットを使用。
8 — 運用スクリプト

インストール後、ホスト上 /opt/project-nomad に保守用スクリプトが置かれる(UI で代替できない作業向け)。

スクリプト作用
start_nomad.shインストール済みコンテナを起動
stop_nomad.shすべて停止
update_nomad.shCommand Center と依存(MySQL 等)のイメージ更新。アプリコンテナは UI から更新
uninstall_nomad.shアンインストール(不可逆)