Linux 服务器部署
在无桌面环境的 Linux 服务器上以无头模式运行 Nowledge Mem
Nowledge Mem 可以在没有图形界面的 Linux 服务器上以无头模式运行。真正的服务器部署,建议直接使用 Linux 安装包,然后通过命令行管理;之后你可以在同一台机器的浏览器里打开内置 Web App,也可以用 API key 让其他客户端连接。
可用性
每日简报、洞察检测、知识图谱丰富等后台智能能力,需要已配置的远程 LLM,以及你的当前版本所对应的许可能力。这个页面关注的是部署方式,而不是套餐包装。
sudo 只用于安装软件包和安装 system 服务。
平时运行 nmem serve、nmem config ...、nmem license ...、nmem tui 这类命令时,请使用你的普通 Linux 用户。
新版本会默认阻止你通过 sudo 或其他提权方式去运行这些会写本地状态的命令,避免 fresh install 之后在错误的用户环境里悄悄留下 root 属主的 Mem 文件。
如果你本来就是直接登录 root、并且希望把 Mem 放在 /root 下运行,这种场景仍然支持。
系统要求
| 要求 | 规格 |
|---|---|
| 操作系统 | Ubuntu 22.04+、Debian 12+,或兼容版本(通过 AppImage) |
| 架构 | x86_64 |
| 内存 (RAM) | 最低 8 GiB(推荐 16 GiB) |
| 磁盘空间 | 10 GiB 可用空间 |
| 依赖 | libgtk-3-0、libwebkit2gtk-4.1-0、zstd(.deb 自动安装) |
安装
设置 APT 仓库以通过 apt upgrade 自动更新:
curl -fsSL https://nowledge-co.github.io/community/apt/install.sh | sudo bash
sudo apt-get install nowledge-mem添加 GPG 签名密钥和仓库源。之后如果只想更新 Mem,可运行 sudo apt-get update && sudo apt-get install --only-upgrade nowledge-mem。常规整机升级仍可使用 sudo apt-get update && sudo apt-get upgrade,或通过 unattended-upgrades(如已配置)自动应用。
BROWSER_UA='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
# 下载 .deb
curl -A "$BROWSER_UA" -L -o nowledge-mem.deb https://nowled.ge/download-mem-deb
# 安装包
sudo dpkg -i nowledge-mem.deb
# 修复缺失的依赖
sudo apt-get install -f -yBROWSER_UA='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
# 下载 AppImage
curl -A "$BROWSER_UA" -L -o nowledge-mem.AppImage https://nowled.ge/download-mem-appimage
# 仅适合便携式手动运行
chmod +x nowledge-mem.AppImage
./nowledge-mem.AppImage如果你要的是一台真正的无头 Linux 服务器,请优先用 APT 或 .deb。
AppImage 更适合便携式、手动运行,不适合作为长期的 server + systemd 主路径。
它不会把 nmem CLI 装进 PATH,所以在没有桌面会话的机器上,也不是最顺手的 nmem 工作流。
如果你是在终端里下载安装包,请直接照着上面的命令执行。
这些命令已经带上了浏览器 User-Agent,因为有些下载链接会拦截普通的 curl / wget,直接返回 403。
APT 和 .deb 安装后会自动完成以下操作:
- 解压内置的 Python 运行时
- 在
/usr/local/bin/nmem创建nmemCLI - 配置 APT 仓库以自动更新(通过 APT 安装时)
- 设置桌面启动项(在无头服务器上可忽略)
验证 CLI 可用:
nmem --version如果你用的是 AppImage,那么之后每次都需要直接运行 AppImage 文件。它不会把 nmem 命令加到 PATH 里。
快速开始
如果你是要搭一台真正的 Linux 服务器,先把后台服务装好。这样后面的许可证、模型、配置命令都能在新的 SSH 会话里直接用,也不怕重启以后丢掉。
先安装后台服务
服务器场景推荐:
sudo nmem service install --service-user <linux-user>如果你确实要用用户级服务:
nmem service install --user无头服务器上,优先用 system 服务。 用户级服务只有在该账号开启 lingering 之后,才会在退出登录和重启后继续存在:
sudo loginctl enable-linger <linux-user>确认服务已经起来
nmem service status
nmem status激活许可证
nmem license activate <许可证密钥> # 通常会自动从密钥中识别邮箱
nmem license status # 验证激活状态
nmem license renew # 以后如果授权过期,可刷新这台设备的授权如果自动识别失败,再显式运行 nmem license activate <许可证密钥> <邮箱>。
打开 Web App
先把浏览器登录信息打印出来:
nmem key --show-login如果你当前这个版本还不支持 --show-login,就先运行:
nmem key然后打开它打印出来的地址。默认情况下通常是:
http://127.0.0.1:14242/app无头服务器上,浏览器通常在另一台电脑上。请直接使用
nmem key --show-login 打印出来的那个地址和端口。
如果需要 SSH 转发,也转发同一个端口:
ssh -L <port>:127.0.0.1:<port> <server>然后在你自己的浏览器里打开对应的本地地址,再粘贴 API key。
下载搜索索引模型
nmem models download
nmem models status # 验证安装下载用于混合搜索的索引模型(约 500 MB),只需下载一次。
如果你是在无头服务器上使用,建议把下面两个命令当作搜索健康检查入口:
nmem status:看搜索现在是已就绪、需要重建,还是只是在后台补齐元数据nmem models status:同时查看模型状态,以及当前搜索索引是否需要你介入
配置 LLM 提供商
Linux 上需要远程 LLM(不支持本地 LLM):
nmem config provider set anthropic \
--api-key sk-ant-xxx \
--model claude-sonnet-4-20250514
nmem config provider test # 验证连接支持的提供商包括:anthropic、openai、gemini、xai、deepseek、minimax、zai、moonshot、ollama、openrouter 以及 OpenAI 兼容端点。
完整提供商矩阵与注意事项见:LLM 提供商。
启用后台智能
nmem config settings set backgroundIntelligence true
nmem config settings set autoDailyBriefing true验证所有配置
nmem status如果你暂时不想装 systemd 服务
也可以先直接前台跑:
nmem serve但要记住:这个终端会一直被占着。后面的 nmem license ...、nmem models ...、nmem config ... 需要在第二个终端里执行。
作为 systemd 服务运行
生产部署建议使用 nmem service install 设置后台 systemd 服务,开机自动启动:
# 以你的日常 Linux 用户身份安装、启用并启动
sudo nmem service install --service-user <linux-user>
# 如果你本来就是从那个 Linux 用户直接 sudo 上来的,Mem 通常也能自动识别
sudo nmem service install
# 自定义主机/端口
sudo nmem service install --service-user <linux-user> --host 0.0.0.0 --port 8080# 无需 root 权限
nmem service install --usersystem 服务应当以你的日常 Linux 用户运行,而不是 root。
如果 sudo 不能正确识别目标账号,请加上 --service-user <linux-user>。
如果你用的是用户级服务,请直接以该用户运行 nmem service install --user,不要加 sudo。
如果你希望用户级服务在退出登录和重启后继续存在,还需要额外执行一次 sudo loginctl enable-linger <linux-user>。
如果你的 VPS 本来就是只用 root,并且你也是直接登录 root,那么 nmem service install 仍然可以一致地使用 /root。
如果你之前在旧版本里用 root 运行过,~/.config/co.nowledge.mem.desktop/ 下面有些文件可能仍然属于 root。
这时许可证操作、LLM 提供商设置保存,或者 Access Anywhere 设置都可能失败,先把这些文件的属主改回运行服务的 Linux 用户。
新版本在发生这种情况时会直接告诉你是哪一个路径有问题。
常见修复命令如下:
sudo chown -R <linux-user>:<linux-user> ~/.config/co.nowledge.mem.desktop
sudo chown -R <linux-user>:<linux-user> ~/.local/share/NowledgeGraph如果你自定义了 XDG_CONFIG_HOME 或 XDG_DATA_HOME,请改成对应目录。
管理服务
nmem service status # 查看服务状态
nmem service logs -f # 跟踪服务日志
nmem service stop # 停止服务
nmem service start # 启动服务
nmem service uninstall # 停止、禁用并删除服务如果安装的是用户级服务,请在任何 nmem service 命令后添加 --user。
serve 与 service 的区别
nmem serve | nmem service install | |
|---|---|---|
| 运行方式 | 前台(当前终端) | 后台(systemd) |
| 何时停止 | Ctrl+C 或关闭终端 | nmem service stop 或系统关机 |
| 开机自启 | 否 | 是(自动启用) |
| 适用场景 | 测试、开发 | 生产部署 |
数据位置
所有数据(图数据库、搜索索引、版本元数据)存储在一个目录中:
~/.local/share/NowledgeGraph/
├── nowledge_graph_v2.db/ # KuzuDB 图数据库
├── search_index/ # LanceDB 向量 + BM25 索引
└── db_version.json # Schema 版本追踪服务器使用 XDG_DATA_HOME(默认为 ~/.local/share)自动解析此路径。如需使用自定义位置,请在启动服务器之前设置 NOWLEDGE_DB_PATH 环境变量:
export NOWLEDGE_DB_PATH=/mnt/data/NowledgeGraph/nowledge_graph_v2.db
nmem serve从旧版本升级
旧版本将数据存储在运行 nmem serve 的工作目录下的 ./data/ 文件夹中。升级后,服务器会自动检测旧数据并打印迁移说明。如果数据似乎丢失,请参阅下方故障排除:升级后数据丢失。
远程访问
默认情况下,nmem serve 只监听 127.0.0.1。这已经足够支持:
- 服务器本机上的
nmem命令 - 本机浏览器访问同一个本地地址(默认是
http://127.0.0.1:14242/app)
如果你把服务绑定到 0.0.0.0 或其他非 loopback 地址,Mem 就会要求其他设备带 API key 才能连接。需要时会自动生成 key,你之后也可以随时重新打印:
nmem key
# 或
nmem key --show-login当服务器已经可访问之后,客户端应优先走自己支持的最高层入口:先用原生集成,其次是插件设置界面或 nmem 配置,只有没有更好专属路径时才直接配置 MCP。
# 在服务器上
nmem serve
nmem key在远程机器上安装独立 CLI:
pip install nmem-cli
# 或
uv pip install nmem-cli然后配置连接方式。推荐的持久化方式是:
nmem config client set url http://你的服务器:14242
nmem config client set api-key nmem_...这会为当前机器写入 ~/.nowledge-mem/config.json。如果你只想在当前终端会话里临时覆盖,再使用环境变量:
export NMEM_API_URL=http://你的服务器:14242
export NMEM_API_KEY="nmem_..."nmem status
nmem m search "查询内容"优先级:CLI 参数 > 环境变量 > 配置文件 > 默认值。
真实会话保存的重要说明
像 nmem t save --from claude-code、gemini-cli、codex 这样的真实会话保存,仍然会在运行该智能体的客户端机器上读取本机会话文件。把 nmem 指向远程服务器,只会改变规范化数据上传到哪里,不会把会话发现工作转移到服务器端。
如需关闭鉴权(不建议在生产环境使用):
nmem serve --no-auth安全提示
默认情况下,其他机器连进来时都需要 API key。你如果启用了 localhost auth,本机浏览器访问 /app 也会要求输入 key。更严格的部署场景,建议再配合防火墙规则,或者直接使用随处访问 Mem的 Cloudflare tunnel。
交互式 TUI
使用 TUI 获得交互式终端体验:
nmem tuiTUI 提供完整的设置管理界面,包括许可证激活、LLM 配置和知识处理开关。
现在你也可以在 Settings 中直接配置 Access Anywhere(快速链接 / Cloudflare 账号稳定链接),而且同一个界面也能把本地 Web 登录地址和当前 API key 展示出来,所以即使在纯终端环境里,也能把 /app 的登录流程走通。
完整指南见:随处访问 Mem。
如果服务器网络会拦截 UDP/QUIC,导致 Access Anywhere 启动不上来,可以在重启 Mem 前先强制 Cloudflare 使用 HTTP/2:
export TUNNEL_TRANSPORT_PROTOCOL=http2配置参考
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
NMEM_API_URL | http://127.0.0.1:14242 | CLI 命令的服务器地址 |
NMEM_API_KEY | - | 用于鉴权的 API key |
NOWLEDGE_DB_PATH | 自动检测 | 覆盖数据库位置 |
NOWLEDGE_BACKEND_HOST | 127.0.0.1 | 服务器绑定地址 |
NMEM_LAN_AUTH | - | 设为 disabled 可跳过鉴权(等同于 --no-auth) |
CLI 命令摘要
| 命令 | 描述 |
|---|---|
nmem serve | 启动服务器(默认只监听本机) |
nmem serve --no-auth | 启动服务器但不要求 API key 鉴权 |
nmem service install | 安装并启动 systemd 服务 |
nmem service status | 查看 systemd 服务状态 |
nmem service logs -f | 跟踪服务日志 |
nmem service stop / start | 停止或启动服务 |
nmem service uninstall | 删除 systemd 服务 |
nmem status | 检查服务器状态 |
nmem license activate <key> [email] | 激活许可证(通常会自动识别邮箱) |
nmem license renew | 刷新或续期这台设备的授权 |
nmem models download | 下载索引模型 |
nmem config provider set <p> --api-key <k> | 配置 LLM 提供商 |
nmem config provider test | 测试 LLM 连接 |
nmem config settings | 显示处理设置 |
nmem config settings set <key> <value> | 更新设置 |
nmem update | 检查可用更新 |
nmem update apply | 下载并应用更新 |
nmem tui | 交互式终端 UI |
nmem key | 打印当前 API key |
nmem key --show-login | 同时打印本地 Web App 地址和 API key |
故障排除
升级后数据丢失
旧版本(0.7 之前)将数据库存储在运行 nmem serve 的工作目录下的 ./data/ 文件夹中。当前版本将数据存储在标准位置(~/.local/share/NowledgeGraph/)。如果升级后记忆消失了,你的数据很可能仍在磁盘上,只是在旧位置。
查找旧数据
搜索旧数据库可能存在的常见位置:
find / -name "nowledge_graph*.db" -type d 2>/dev/null常见位置包括:
~/data/nowledge_graph.db,如果从主目录运行nmem serve/data/nowledge_graph.db,如果 systemd 系统服务在/目录下运行(未设置WorkingDirectory)/你运行nmem的路径/data/nowledge_graph.db,其他工作目录
移动到标准位置
# 先停止服务器
nmem service stop # 如果使用 systemd
# 或按 Ctrl+C # 如果在前台运行
# 如需创建标准目录
mkdir -p ~/.local/share/NowledgeGraph
# 移动数据库和相关文件
mv /旧路径/data/nowledge_graph*.db* ~/.local/share/NowledgeGraph/
mv /旧路径/data/search_index ~/.local/share/NowledgeGraph/ 2>/dev/null
mv /旧路径/data/db_version.json ~/.local/share/NowledgeGraph/ 2>/dev/null
# 重启服务器
nmem serve # 或: nmem service start验证恢复
nmem m search "测试" # 搜索你的记忆
nmem status # 检查服务器状态从当前版本开始,nmem serve 会在启动时打印数据库路径,方便确认使用的存储位置。如果在 ./data/ 下检测到旧数据,服务器会自动打印迁移说明。