用 Traefik 在 Vultr 上安全部署 Dense-Mem
一篇非技术读者也能跟上的 walkthrough:在 Vultr 云服务器上启动 Dense-Mem,配置 Traefik、HTTPS、私有控制台访问,以及给个人、家庭或工作 AI 工具使用的共享记忆。
AI 驱动 · 每小时限 20 次请求

快速答案
安全的云端版本使用一个公开 HTTPS 端点,同时把管理界面保持私有。
| 公开 | 私有 |
|---|---|
AI 客户端使用 https://memory.example.com/mcp | 控制台通过 SSH 隧道访问 127.0.0.1:8090 |
Traefik 对外开放 80 和 443 | Postgres、Neo4j 和门户不暴露到公网 |
| API 密钥保护记忆访问 | 团队和配置档隔离家庭、个人和工作记忆 |
本地运行 Dense-Mem 是最容易的起点。把它放到一台小云服务器上,才能让同一份记忆从笔记本、台式机、工作机器和远程 AI 客户端都能访问。
这篇教程会搭建一个适合初学者的安全部署:
你的 AI 客户端 -> https://memory.example.com/mcp -> Traefik -> Dense-Mem公网只看到 HTTPS Dense-Mem 端点。控制台保持私有。
你要搭建什么
| 组件 | 职责 |
|---|---|
| Vultr VPS | 运行 Dense-Mem 的小型云电脑 |
| Docker Compose | 启动 Dense-Mem、Postgres、Neo4j 和 Traefik |
| Traefik | 处理 HTTPS、证书、响应头和公开路由 |
| Dense-Mem | 保存共享 AI 记忆 |
| 控制门户 | 创建和轮换密钥,但保持私有 |
这个配置适合普通用户、家庭和小团队:你想要一台自己的记忆服务器,但不想从零搭一个平台。
步骤 1:创建 Vultr 服务器
通过推荐链接打开 Vultr:
创建一个新的 Cloud Compute 实例:
| 设置 | 初学者选择 |
|---|---|
| 位置 | 选择离你最近的区域 |
| 镜像 | Ubuntu 24.04 LTS |
| 规格 | 给 Docker、Postgres 和 Neo4j 足够 RAM;第一次建议 4 GB 更稳 |
| SSH 密钥 | 添加 SSH 密钥,不要用密码登录 |
| 防火墙 | 只允许 SSH、HTTP 和 HTTPS |
防火墙建议:
| 端口 | 允许来源 | 原因 |
|---|---|---|
22 | 最好只允许你的 IP | SSH 管理访问 |
80 | 任何来源 | 让 Traefik 申请 HTTPS 证书 |
443 | 任何来源 | 公开 Dense-Mem HTTPS 端点 |
不要把这些端口暴露到公网:
8080, 8090, 5432, 7474, 7687它们是内部或本地管理/数据库接口。
步骤 2:把域名指向服务器

你需要一个域名或子域名,例如:
memory.example.com创建一条 A 记录:
| DNS 字段 | 值 |
|---|---|
| 名称 | memory |
| 类型 | A |
| 值 | 你的 Vultr 服务器公网 IP |
等待 DNS 生效:
ping memory.example.com如果 ping 显示你的 Vultr IP,就可以继续。
步骤 3:SSH 到服务器
从你的电脑执行:
ssh root@YOUR_SERVER_IP更新 Ubuntu:
apt update
apt upgrade -y按 Docker 官方 Ubuntu 文档安装 Docker。简版命令如下:
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo \"$VERSION_CODENAME\") stable" \
> /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin检查安装:
docker compose version步骤 4:下载高级 Compose 文件
创建应用目录:
mkdir -p /opt/dense-mem
cd /opt/dense-mem下载带 Traefik 的 Compose 文件:
curl -fsSLo docker-compose.yml \
https://raw.githubusercontent.com/markhuangai/dense-mem/main/examples/docker-compose.expert.yml创建 .env:
cat > .env <<'EOF'
POSTGRES_PASSWORD=replace-with-a-long-random-password
NEO4J_PASSWORD=replace-with-a-long-random-password
CONTROL_PORTAL_TOKEN=replace-with-a-long-random-token
AI_API_URL=https://api.openai.com/v1
AI_API_KEY=your-ai-provider-api-key
AI_API_EMBEDDING_MODEL=text-embedding-3-large
AI_API_EMBEDDING_DIMENSIONS=3072
DENSE_MEM_DOMAIN=memory.example.com
[email protected]
CONTROL_PORTAL_BIND=127.0.0.1
CONTROL_PORTAL_PORT=8090
EOF编辑它:
nano .env替换这些值:
memory.example.com改成你的真实域名[email protected]改成你的邮箱- 所有占位密码和 token 都换成真实密钥
your-ai-provider-api-key换成你的提供商 API 密钥- 如果不用 OpenAI,把
AI_API_URL换成你的兼容 OpenAI 提供商基础 URL AI_API_EMBEDDING_MODEL和AI_API_EMBEDDING_DIMENSIONS要匹配同一个 Embedding 模型
可以用下面命令生成随机密钥:
openssl rand -base64 32示例使用 OpenAI 的 text-embedding-3-large,返回 3072 维。如果使用 text-embedding-3-small,设置 AI_API_EMBEDDING_DIMENSIONS=1536。在保存重要记忆前先确定 Embedding 模型;后续更换模型或维度,通常需要重建或重新 Embedding 已有记忆数据。
步骤 5:用 Traefik 启动 Dense-Mem

启动公开 HTTPS 服务栈:
docker compose --profile traefik up -d检查容器:
docker compose ps检查公开健康端点:
curl https://memory.example.com/health如果返回包含 healthy 或 degraded 状态的 JSON,说明公开 HTTPS 路由已经工作。单服务器配置中如果可选 Redis 没启用,degraded 也可能是预期状态。
步骤 6:创建团队和 API 密钥
创建第一份共享记忆团队:
docker compose exec server /app/provision-team --name "primary-memory"把输出的 API 密钥保存到私密位置。
在任何要连接的机器上设置它:
export DENSE_MEM_API_KEY="dm_default-prof_..."步骤 7:把 Claude Code 接到公开服务器
claude mcp add --transport http dense-mem https://memory.example.com/mcp \
--header "Authorization: Bearer $DENSE_MEM_API_KEY"问 Claude Code:
请记住,这台 Dense-Mem 服务器是我的共享 AI 记忆。然后开一个新会话,问:
关于我的 Dense-Mem 搭建,你记得什么?步骤 8:把 Codex 接到同一台服务器
把下面内容加入 ~/.codex/config.toml:
[mcp_servers.dense_mem]
url = "https://memory.example.com/mcp"
bearer_token_env_var = "DENSE_MEM_API_KEY"
tool_timeout_sec = 60
enabled = true重启 Codex。
现在 Claude Code 和 Codex 已经连到同一个记忆大脑。
步骤 9:保持控制门户私有

控制门户管理团队、配置档、密钥和安全设置。不要公开暴露它。
高级 Compose 文件只把它发布到服务器本机的 127.0.0.1:8090。如果你想从自己的电脑访问,建立 SSH 隧道:
ssh -L 8090:127.0.0.1:8090 root@YOUR_SERVER_IP然后打开:
http://127.0.0.1:8090/使用 .env 里的 CONTROL_PORTAL_TOKEN 登录。
和家庭或工作团队共享记忆
Dense-Mem 可以支持多个共享记忆边界。
| 组 | 实际配置 |
|---|---|
| 个人 | 一个名为 primary-memory 的团队 |
| 家庭 | 一个名为 family-memory 的团队,并用配置档区分成员 |
| 工作 | 每个工作组或项目一个团队 |
| 自动化 | 当工具只应该搜索、不应该写入记忆时,使用只读配置档密钥 |
当人们应该共享记忆时,使用同一个团队。当记忆不应该混在一起时,使用不同团队。
这就是产品的设计理念:需要连续性时使用一个记忆大脑,需要隐私时建立清晰边界。
安全清单
邀请别人使用前,先检查:
- 保持控制门户私有
- 保持 API 密钥私密
- 对不应写入记忆的工具使用只读密钥
- 机器丢失或队友离开时轮换密钥
- 不要把密码、助记词或私钥存成记忆
- 如果记忆重要,备份 Docker 卷
- 记住托管 AI 提供商可能会接收记忆文本,用于 embeddings 和验证
Dense-Mem 让 AI 记忆更持久,但不会替你承担保护敏感信息的责任。
为什么这很重要
最好的 AI 设置不是一个聊天窗口,而是一个连接起来的工作空间。
Claude Code 可以学习你的编码规则。Codex 可以召回同一组规则。家庭助手可以记住旅行偏好。工作团队可以保留上个月的决策,而不是每个迭代周期都重新发现一次。
Dense-Mem 给这些工具一层你自己拥有的共享记忆。
试用它,分享它。如果你希望更多人找到这个项目,可以给代码仓库点一个星:
许可
Article text © 2026 Mark Huang. Licensed under Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) unless otherwise noted. 文章文本可在非商业场景下分享或翻译,但需标注原文 URL。商业使用需事先取得书面许可,并清楚引用原始来源。
代码片段、截图、第三方素材和网站源码可能适用单独条款。
建议署名: Based on "用 Traefik 在 Vultr 上安全部署 Dense-Mem" by Mark Huang, originally published at https://markhuang.ai/zh/blog/secure-dense-mem-vultr-traefik.
相关文章

5 分钟试用 Dense-Mem 托管演示
一篇快速教程:使用托管的 Dense-Mem 测试实例,把 Claude Code 和 Codex 接到同一份临时记忆,并观察共享上下文如何让 AI 更聪明地工作。
阅读文章
Dense-Mem 快速开始:让 Claude Code 和 Codex 使用同一份记忆
一篇面向初学者的教程:启动本地 Dense-Mem 服务器,创建第一把 memory key,并把 Claude Code 和 Codex 接到同一个共享 AI 记忆大脑。
阅读文章
Dev Buddy:为 Claude Code 构建多 AI 开发流水线
一篇面向实践的 Dev Buddy 指南:这个开源 Claude Code 插件通过结构化开发流水线编排多个 AI 模型,支持基于任务的约束、并行专家分析,以及自动修复后重新评审的循环。
阅读文章订阅更新
Go、AI/LLM 和分布式系统的技术文章,绝不滥发。
评论
正在加载评论...