在 ECS 上给记忆库加一层 TLS 反代,把 7999 收进内网
memory-eternal 是本机服务:SQLite + Markdown 落盘,Web UI 起在 127.0.0.1:7999,DSH、Claude Code、Codex、Cursor 通过 MCP 共用一份 vault。搬上 ECS 只为多设备共享。
暴露面先算清
对外只该有 443 和限源 IP 的 22。7999 是纯本机 HTTP,dsh-memory open 打开的就是它,无账号、无 token,默认调用者就坐在键盘前。
插件本地优先、记忆不出机器,但自动扫描标它「含敏感能力、尚无人工评估」:能力项是可执行外部命令、读写/删除本地文件、发起外部网络请求(站内口径明说这是能力清单,不是危险判定)。
安全组:入方向只留 443
22 只放办公网出口 IP,7999 那条规则别建——不是先建后删,是压根别建。出方向默认全通,前提是实例有公网出口(EIP 或 NAT),否则 npm i -g memory-eternal 会卡在 registry.npmjs.org 上超时。
规格与 Node 22
engines 是 node >=22,dsh 要 >=0.1.5-alpha.2 <0.3.0-0。Node 22 预编译包要 glibc 2.28+:Ubuntu 22.04 / 24.04 与 Alibaba Cloud Linux 3 都满足,停在 2.17 的老镜像得换。1 vCPU / 2 GiB 够跑;内存峰值来自沉淀时调 LLM 蒸馏,不是并发。备份按天累积,别让 /var/backups 吃满盘。
7999 收回回环,443 补鉴权
先 ss -lntp | grep 7999 看一眼:出现 0.0.0.0 就是对外可达。证书走阿里云数字证书管理服务或 Let's Encrypt:
server {
listen 443 ssl;
server_name memory.example.com;
ssl_certificate /etc/nginx/certs/memory.pem;
ssl_certificate_key /etc/nginx/certs/memory.key;
location / {
auth_basic "memory";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://127.0.0.1:7999;
proxy_set_header Host $host;
}
}
auth_basic 不是可选项:7999 没鉴权,不加只是给裸接口套层 HTTPS。
常驻交给 systemd
SSH 一断进程就没了,这是「今天突然打不开」的常见原因:
[Service]
User=memory
ExecStart=/usr/bin/dsh-memory open
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
别用 root:它能执行外部命令、删本地文件。
备份:快照不兜底
ECS 快照是块级、崩溃一致的。SQLite 开 WAL 时 .db、.db-wal、.db-shm 未必自洽,直接恢复可能拿到撕裂的库:能打开,索引对不上。先逻辑备份:
sqlite3 /home/memory/data/memory.db "VACUUM INTO '/var/backups/memory-$(date +%F).db'"
库路径以「运行状态」页为准;每日逻辑备份挂 cron,每周一次快照——只做快照兜不住这种场景。
四个一定会踩的坑
坑一 · 7999 是纯本机 HTTP,且没有鉴权
现象:临时放行 7999,几小时后日志冒出陌生 IP,页面能开,卡片也能改。
原因:端口设计上就不对外,没有登录、没有 token,放出去那一刻整库就对外只读,甚至可写。
解决:安全组只放 443、22 限源 IP,7999 只绑 127.0.0.1,前面挂 nginx 加 auth_basic。
坑二 · 新卡默认停在 pending,不审就等于没记
现象:聊了一下午,回头库是空的,于是判定「这插件没用」。
原因:默认 review-before-commit,新卡先进待审队列,人工批准才进主库;agent 能提议,但不能批自己写的卡。
解决:先在 Web UI 或 dsh-memory tui 批量批一轮。要「只记待审」也行,但 recall 只命中已批准的。
坑三 · core memory 的字符预算是硬上限,塞超了会挤掉别的卡
现象:把偏好、约束一条条往 core 里堆,堆到某刻新加的没生效,旧的也不见了。
原因:core 直接注入每个会话的 system prompt,条数上限与字符预算在「设置 → 记忆 → 核心记忆」里配,满了就不进上下文。
解决:core 只放每次都要生效的硬约束,其余靠 recall。密钥、API key 永远不写进 core,README 明令。
坑四 · 三个版本号对不上,装完先 dsh plugin list 确认实际版本
现象:照文章版本号对更新日志,常发现功能对不上。
原因:截至 2026-11-01,npm latest 是 0.18.2,仓库 package.json 是 0.19.0,站内快照是 0.17.0。三个数字是三个时点、三个位置的状态,不是笔误。
解决:以 dsh plugin list 和 npm dist-tags.latest 为准;站内验证是 dsh 0.2.1-rc.2 下对 v0.18.2 的运行时冒烟。
数据口径
星标 109、综合分 58.4 / 100、周下载 3,131 为 npm 全网口径(含 CI 与镜像),非本站安装数。许可 MIT。
总结
搬上 ECS 本质是把「本机文件」变成「有地址的服务」:端口收回环、443 补鉴权、进程交给 systemd、SQLite 用逻辑备份而不是只靠快照。四件做完,它才配得上「私人」。想比同类插件,本站的 DeepSeek Harness Hub 插件清单 按分类列了可选项。
适合与不适合
适合:
- 多设备或多 agent 客户端要共用一份 vault 的人;
- 认同「记忆必须经人审核才生效」的团队;
- 愿意维护 ECS、会写 nginx 与 systemd 的人。
不适合:
- 想开箱即用、不愿碰安全组和反代的人;
- 期待全自动吞入、零审核的人;
- 需要多租户权限体系的人,这是单库单用户的私人服务。
标签:memory-eternal、DeepSeek Harness、SQLite、记忆库
本文由 DeepSeek Harness Hub 自动整理,数据来源于插件详情页。