用 Docker 部署
用 Docker Compose 在自己的机器上运行开源 Lore 服务器。
用 Docker 在你自己的机器上运行 Lore 服务器。你会得到 Web 控制台和 API、带 pgvector 的 PostgreSQL 数据库,以及可选的 Redis 缓存。想最快完成安装,就用 CLI;想自己编写 Compose 配置,就按手动方式安装。
你会运行的容器
这套服务由三个容器组成。Web 容器要等数据库和 Redis 健康检查通过后才会启动。
| 容器 | 镜像 | 端口 | 数据(默认宿主机路径) | 作用 |
|---|---|---|---|---|
web(容器名 lore-web) | fffattiger/lore:latest | 18901(WEB_PORT) | ./data/snapshots(SNAPSHOT_DATA_DIR) | Web 控制台、API 和 MCP 端点。备份和待审核的变更记录也存放在这里。 |
postgres(容器名 lore-postgres) | fffattiger/pgvector-zhparser:pg16 | 宿主机 55439(POSTGRES_PORT) | ./data/postgres(POSTGRES_DATA_DIR) | 记忆图谱、历史和设置 |
redis(容器名 lore-redis) | redis:7-alpine | 不对外发布 | ./data/redis(REDIS_DATA_DIR) | 共享缓存。没有 Redis 时,Lore 使用进程内缓存。 |
相对数据路径以包含 docker-compose.yml 的目录为基准。CLI 则使用 ~/.lore/docker/data 下的绝对路径。
系统要求
- Node.js 20 或更高版本,用于运行
npx。 - macOS 或 Linux。不支持原生 Windows。
- 带 Compose 的 Docker:
docker compose插件,或独立的docker-compose命令。 - Bash、
curl和unzip。 - 宿主机上的
18901和55439端口空闲,或者在WEB_PORT和POSTGRES_PORT中设置其他端口。 - 你要接入的每个运行时对应的 CLI,例如
claude或codex。完整列表见 CLI 参考。
用 CLI 安装
CLI 会启动这套服务,等待它就绪,并接入这台机器上检测到的运行时。
交互式安装
运行安装器,按提示回答:
npx @loremem/cli- 选择语言。如果你设置了
--lang或LORE_INSTALL_LANG,就会跳过这一步。 - 回答「Lore 服务端在哪里?」,可选项如下:
- 在本机用 Docker 部署服务端:运行本地服务。
- 连接已有服务(仅配置客户端):填写服务地址和令牌。
- 连接 Loremem SaaS:只填写令牌。参见 Loremem 云服务。
- 选择「发布通道」:
stable(默认)、pre或dev。 - 在「选择渠道(安装)」中选择运行时。CLI 已在
PATH中找到的运行时会预先勾选。 - 在「确认开始?」处确认。
如果 Lore 已经安装,安装器会改为询问「你要做什么?」。可选项包括「更新所选插件」「重新配置连接」「仅管理插件」「卸载插件」和「只看状态 / 退出」。
非交互式安装
加上 -y,就会直接按参数运行,不再提示:
npx @loremem/cli install -y --docker使用 -y 时,未设置的选项采用默认值:发布通道为 stable,运行时为这台机器上检测到的运行时。服务端必须来自 --docker、--base-url 或已保存的配置。
CLI 做了什么
- 检查 Docker 和 Docker Compose 是否可用。
- 把
docker-compose.yml下载到~/.lore/docker/。如果已有同名文件,会先保存一份带时间戳的副本。 - 如果
~/.lore/docker/.env不存在,就创建它。新文件包含随机生成的 PostgreSQL 密码、TZ=Asia/Shanghai,文件权限为0600。已有的.env保持不变。 - 运行
docker compose up -d,然后最多等待 3 分钟,直到http://127.0.0.1:18901/api/health检查通过。 - 把服务地址、令牌和安装状态写入
~/.lore/config.json。 - 为每个选中的运行时安装集成。如果某个运行时的 CLI 未安装,它会被标记为跳过,而不是失败。
- 输出设置页地址
http://127.0.0.1:18901/setup。
手动用 Docker Compose 安装
如果你想自己掌控 .env 和整套服务,就手动创建 Compose 目录。之后 CLI 只负责接入运行时,不会管理 Docker。
-
创建目录并下载 Compose 文件:
mkdir -p ~/lore-server && cd ~/lore-server curl -fsSL https://raw.githubusercontent.com/FFatTiger/lore/main/docker-compose.yml -o docker-compose.yml -
在同一目录中创建
.env。参考下面的示例,替换密码,并让DATABASE_URL中的密码与POSTGRES_PASSWORD保持一致:# 容器时区。Dream 和备份的定时任务使用这个时区。 TZ=Asia/Shanghai # 内置 PostgreSQL POSTGRES_DB=lore POSTGRES_USER=lore POSTGRES_PASSWORD=replace-with-a-long-random-password POSTGRES_PORT=55439 POSTGRES_DATA_DIR=./data/postgres DATABASE_URL=postgresql://lore:replace-with-a-long-random-password@postgres:5432/lore # Lore Web 服务 WEB_PORT=18901 # 留空表示不做身份验证。设置令牌即可要求验证。 API_TOKEN= LORE_DB_POOL_SIZE=10 # 缓存 REDIS_URL=redis://redis:6379/0 REDIS_DATA_DIR=./data/redis CACHE_KEY_PREFIX=lore CACHE_LOCAL_MAX_ITEMS=2000 # 备份和待审核的变更记录 SNAPSHOT_DATA_DIR=./data/snapshots # 镜像 LORE_POSTGRES_IMAGE=fffattiger/pgvector-zhparser:pg16 LORE_REDIS_IMAGE=redis:7-alpine LORE_FRONTEND_IMAGE=fffattiger/lore:latest -
启动服务:
docker compose up -d -
检查容器状态,再检查健康端点:
docker compose ps curl -fsS http://127.0.0.1:18901/api/health -
接入这台机器上的运行时。
--skip-docker让 CLI 不管理 Docker,因此update不会为这套服务拉取镜像:npx @loremem/cli install --base-url http://127.0.0.1:18901 --skip-docker在终端中运行时,安装器会打开,并已填好这些答案。加上
-y即可不再提示。
注意
未设置 POSTGRES_PASSWORD 时,Compose 会使用 change-me。首次启动前,请设置你自己的密码。
用 API_TOKEN 保护服务器
只要有任何你不完全信任的人或程序能访问服务器,就设置 API_TOKEN。设置后,Web 控制台、MCP 客户端和插件都会发送 Authorization: Bearer <API_TOKEN>。
-
生成一个足够长的随机值,例如用
openssl rand -hex 32,然后写入.env:API_TOKEN=lm_your_token -
在 Compose 目录中应用更改:
docker compose up -d -
把令牌交给 CLI。加上
-y,让参数直接生效。手动 Compose 服务使用:npx @loremem/cli install -y --base-url http://127.0.0.1:18901 --api-token lm_your_token --skip-docker由 CLI 安装在
~/.lore/docker中的服务使用:npx @loremem/cli install -y --skip-docker --api-token lm_your_token -
重启 Agent 运行时。它们会在启动时读取新令牌。
注意
install --docker 会清除已保存的令牌,并忽略 --api-token。设置 API_TOKEN 之后,不要再运行它。
明文 HTTP 与令牌
CLI 只会通过 HTTPS 发送令牌。通过明文 HTTP 时,只有 localhost、127.0.0.1 和 ::1 允许发送令牌。对于其他主机,CLI 会拒绝通过明文 HTTP 发送令牌。若要为单次运行放行,请添加 --allow-insecure-http。该参数不会被保存,-y 也不会隐含它。
注意
明文 HTTP 会以未加密的形式传输你的令牌和记忆。凡是其他机器需要访问的服务器,都请使用 HTTPS。
从其他机器访问服务器
-
Docker 会在所有网络接口上发布 Web 端口。其他机器可以通过
http://<主机>:18901访问服务器,例如http://192.168.1.10:18901。 -
把服务器放在 HTTPS 后面。运行一个终止 TLS 的反向代理,并转发到
127.0.0.1:18901,然后用https://地址接入客户端:npx @loremem/cli install -y --base-url https://lore.example.com --api-token lm_your_token -
只要 Web 端口可被访问,就保持设置
API_TOKEN。 -
官方 Compose 文件还会在所有网络接口上发布 PostgreSQL 的
POSTGRES_PORT(默认55439)。其他机器不需要这个端口,请用防火墙拦截。防火墙规则在 CLI 更新后依然有效。而你对~/.lore/docker中的 Compose 文件所做的修改不会保留,因为update会替换该文件。
下一步
打开 http://127.0.0.1:18901/setup,按照 首次设置 完成四个步骤。然后阅读 服务器配置 了解所有环境变量,并在首次升级前阅读 更新与卸载。