给极空间装上末日生存指南!NOMAD部署,离线资料本地AI一次搞定
NAS、键盘、路由器······年轻就要多折腾。爱折腾的熊猫,今天又给大家分享最近折腾的内容了。关注是对我最大的支持,阿里嘎多~
怕错过熊猫的精彩分享?那就赶快关注下熊猫吧!
引言
前不久熊猫家里突然断过半天的网络,就因为这半天的断网,我发现了一个非常有趣硬核的开源项目:Project N.O.M.A.D。
项目介绍它将离线百科、本地AI、课程以及地图等等一些工具集中在一起,你可以按需进行内容下载,下载之后即便是断开网络,所有内容都可以在局域网下正常访问,且你装下的是一套可以搜索、阅读、学习的本地资料对话系统,可以称之为“末日生存电脑”。
整套系统都是建立在Docker上的,不过并不是一股脑把所有资料塞进去,安装好之后我们需要自行根据需求选择离线的应用、地图以及百科,就是把一堆我们原本可以自己部署,但配起来比较费时间的项目,整理成了一套相对完整的产品。
项目介绍
N.O.M.A.D的AI助手主要由Ollama和Qdrant组成。
设置界面Ollama负责在本地运行大语言模型,Qdrant负责向量检索,用户可以把自己的PDF、EPUB以及其他资料上传到知识库,然后通过RAG检索增强生成,让AI根据这些文档回答问题。
举个例子,可以把设备说明书、急救手册、个人笔记或者维修资料放进去。以后不需要手动翻几十页PDF,直接询问AI即可。
RAG知识库整个问答流程可以在本地完成,文档不需要上传到第三方云端。对于比较在意资料隐私的人来说,这点还是挺关键的。
如果运行N.O.M.A.D的设备性能不够,也可以连接局域网中另一台电脑上的Ollama,或者接入LM Studio、llama.cpp等兼容OpenAI接口的本地服务。这样便能让极空间负责存储和管理资料,把模型推理交给带独立显卡的电脑。
项目首页在N.O.M.A.D的首页你能看到地图、快速安装、补给站和文档与设置,其中地图可以按需下载,在列表能看到非常多的地区资源,如果全量下载大概需要127G的存储空间,除了提供的资源,也可以选择自定义地图文件加载。
地图管理器如果不想一步一步操作,在快速安装中也提供了流程化的安装过程,你可以选择你的需求,例如信息库、教育平台亦或者人工智能,随后再进行地图选择、内容选择等等,整个过程只需要点点点就行。
快速安装前面也提到了,N.O.M.A.D的本质其实就是将一些Docker进行集中管理,所以在补给站这里可以按需进行可用项目的安装,例如离线的维基百科、AI智能、笔记、PDF识别等等。
按需安装在系统设置中能看到自己部署机的一些情况,例如熊猫这里的极空间Z425,成功识别到了系统、处理器等信息。
设置最后总结一下,N.O.M.A.D的地图用的是ProtoMaps、信息图书馆使用的是Kiwix、AI助手主要由Ollama和Qdrant组成、教育平台由Kolibri提供。要讲整个内置的所有资源下载完,预计需要的存储是按TB为单位。
项目部署
N.O.M.A.D的部署也不难,这里还是以熊猫手头的极空间Z425为例子,打开极空间的Docker,为了方便部署这里就用Compose编排,代码如下:
name: project-nomad
services:
# ─────────────────────────────
# NOMAD Command Center
# ─────────────────────────────
admin:
image: ghcr.linkos.org/crosstalk-solutions/project-nomad:1.34.0
container_name: nomad_admin
restart: unless-stopped
ports:
- "${NOMAD_PORT}:8080"
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
# 两处路径必须保持一致
- "${NOMAD_ROOT}/storage:/app/storage"
- "/var/run/docker.sock:/var/run/docker.sock"
environment:
NODE_ENV: production
HOST: "0.0.0.0"
PORT: "8080"
LOG_LEVEL: info
NOMAD_STORAGE_PATH: "${NOMAD_ROOT}/storage"
APP_KEY: "${APP_KEY}"
URL: "${NOMAD_URL}"
DB_HOST: mysql
DB_PORT: "3306"
DB_DATABASE: nomad
DB_NAME: nomad
DB_USER: nomad_user
DB_PASSWORD: "${DB_PASSWORD}"
DB_SSL: "false"
REDIS_HOST: redis
REDIS_PORT: "6379"
DISABLE_COMPRESSION: "false"
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/api/health"]
interval: 30s
timeout: 10s
retries: 5
# ─────────────────────────────
# MySQL数据库
# ─────────────────────────────
mysql:
image: mysql:8.0
container_name: nomad_mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
MYSQL_DATABASE: nomad
MYSQL_USER: nomad_user
# 必须与admin中的DB_PASSWORD一致
MYSQL_PASSWORD: "${DB_PASSWORD}"
volumes:
- "${NOMAD_ROOT}/mysql:/var/lib/mysql"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 30s
timeout: 10s
retries: 10
# ─────────────────────────────
# Redis缓存
# ─────────────────────────────
redis:
image: redis:7-alpine
container_name: nomad_redis
restart: unless-stopped
volumes:
- "${NOMAD_ROOT}/redis:/data"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 5
# NOMAD会调用该网络名称,请勿随意修改
networks:
default:
name: project-nomad_default
driver: bridge
输入之后点击下方的添加.env,输入以下环境变量。
# 极空间中的宿主机绝对路径
NOMAD_ROOT=/极空间实际路径/docker/project-nomad
# 访问地址
NOMAD_PORT=28080
NOMAD_URL=http://192.168.101.81:28080
# 应用密钥,建议使用 openssl rand -hex 32 生成
APP_KEY=请替换为随机生成的密钥
# 数据库密码
MYSQL_ROOT_PASSWORD=请替换为数据库管理密码
DB_PASSWORD=请替换为NOMAD数据库密码
其中涉及到的端口和实际路径这些根据自身NAS情况更改就行。
image.png部署完成之后通过极空间的远程访问就可以打开项目了,记得是用admin项目的映射端口。
写在最后
N.O.M.A.D最值钱的地方,不是把Ollama、Kiwix、Kolibri和Qdrant装进了Docker,这些项目我们原本就能自己部署,它真正省事的地方,是用一套Command Center把应用安装、内容下载、状态查看和后续更新串了起来。
硬盘足够大的话,这里面装下的,大概真是一座小型图书馆了。
以上便是本次分享的全部内容了。如果你觉得还算有趣或对你有所帮助,不妨点赞收藏,最后也希望能得到你的关注,咱们下期见!
结束图作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

足迹大神
校验提示文案
足迹大神
校验提示文案