Project N.O.M.A.D.
Node for Offline Media, Archives, and Data — ブラウザから Wikipedia・地図・教材・ローカル AI に触れる、自己完結型のオフライン知識サーバー(Crosstalk-Solutions/project-nomad)
Project N.O.M.A.D. は、インターネットが使えない環境でも知識・教育・AI ツールにアクセスできるよう、複数のコンテナ化サービスを 1 つの管理 UI(Command Center)で束ねるオフライン優先サーバー。Debian 系 Linux(Ubuntu 推奨)上に Docker で展開し、通常は http://localhost:8080 から操作する。
初回インストール時のみインターネット接続が必要。以降はユーザーが追加ダウンロードを選ばない限りオフライン運用が前提。組み込みテレメトリはない。
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"]
管理スタック(コアサービス)
/opt/project-nomad/ に永続化。install/(シェル・Compose)、collections/(ZIM・地図マニフェスト)、admin/(Command Center ソース)が置かれる。UI から個別に追加・更新する。AI 系はすべて任意。
| 能力 | 基盤 | 内容 |
|---|---|---|
| 情報ライブラリ | Kiwix | オフライン Wikipedia、医学参考、電子書籍など |
| AI アシスタント | Ollama + Qdrant | ローカル LLM チャット、ドキュメント RAG |
| 教育 | Kolibri | Khan Academy コース、進捗・複数ユーザー |
| オフライン地図 | ProtoMaps | 地域別タイル、検索・ナビ |
| データツール | CyberChef | 暗号・エンコード・ハッシュ |
| メモ | FlatNotes | Markdown ノート(ローカル) |
| ベンチマーク | 組み込み | ハードウェアスコア、コミュニティリーダーボード |
初回は Easy Setup Wizard でキュレーション済みコレクションを選べる。Wikipedia セレクタ、ZIM ライブラリ管理、コンテンツエクスプローラなどの管理ツールも Command Center に含まれる。
AI モデルはデフォルトでコンテナ内 Ollama。設定から別ホストの Ollama または OpenAI 互換 API(LM Studio 等)を指定可能。Ollama をリモートにする場合は OLLAMA_HOST=0.0.0.0 が必要。
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。
管理アプリ自体は軽量。必要スペックはインストールするツール(特に LLM)で決まる。
| 区分 | CPU | RAM | ストレージ | 備考 |
|---|---|---|---|---|
| 最小(コアのみ) | 2 GHz デュアルコア+ | 4 GB | 5 GB+ | インストール時のみネット必要 |
| 推奨(AI 込み) | Ryzen 7 / Core i7+ | 32 GB | 250 GB+ SSD | GPU: RTX 3060 級+(VRAM がモデルサイズに直結) |
価格帯別ビルド例は Hardware Guide を参照。
- バックエンド: 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_ プレフィックスで識別する。
- 認証なし: ローカル利用を想定し、組み込みユーザー認証はない。LAN 公開時はファイアウォールでポート制御を推奨。
- インターネット直公開非推奨: 直接 WAN に晒す設計ではない。
- テレメトリなし: 組み込みの送信機能はない。
- 接続確認: オンライン判定に Cloudflare
https://1.1.1.1/cdn-cgi/traceへのリクエストを使用。 - Docker ソケット: コンテナ管理のため admin がホスト Docker にアクセス。sidecar も同様にソケットを使用。
インストール後、ホスト上 /opt/project-nomad に保守用スクリプトが置かれる(UI で代替できない作業向け)。
| スクリプト | 作用 |
|---|---|
start_nomad.sh | インストール済みコンテナを起動 |
stop_nomad.sh | すべて停止 |
update_nomad.sh | Command Center と依存(MySQL 等)のイメージ更新。アプリコンテナは UI から更新 |
uninstall_nomad.sh | アンインストール(不可逆) |
- GitHub: Crosstalk-Solutions/project-nomad
- projectnomad.us — プロジェクトサイト
- Installation Guide
- Discord コミュニティ
- Benchmark Leaderboard
- リポジトリ内:
README.md、FAQ.md、CONTRIBUTING.md