熊猫不是猫 勇气通往天堂,怯懦通往地狱。——塞内加
博主

24分钟前在线

熊猫不是猫
读书以过目成诵为能,最是不济事。――郑板桥
歌曲封面 未知作品

萌ICP备20229950号 蜀ICP备2021028903号

网站已运行 6 年 90 天 9 小时 12 分

Powered by Typecho & Sunny

2 online · 41 ms

Title

给极空间装上末日生存指南!NOMAD部署,离线资料本地AI一次搞定

panda

·

NAS教程

·

Article

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编排,代码如下:

♾️ text 代码:
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,输入以下环境变量。

♾️ text 代码:
# 极空间中的宿主机绝对路径
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把应用安装、内容下载、状态查看和后续更新串了起来。

硬盘足够大的话,这里面装下的,大概真是一座小型图书馆了。

以上便是本次分享的全部内容了。如果你觉得还算有趣或对你有所帮助,不妨点赞收藏,最后也希望能得到你的关注,咱们下期见!

结束图

现在已有 24 次阅读,0 条评论,0 人点赞
Comment:共0条
发表
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主 欢迎来到熊猫的小站,站点内容已全部恢复,不过之前的评论无法恢复,如有友链请在友链界面自行申请 不再显示
博主