import{_ as i,o as t,c as a,ag as e}from"./chunks/framework.CAXxHpAX.js";const c=JSON.parse('{"title":"Docker 安装","description":"","frontmatter":{},"headers":[],"relativePath":"zh/installation/docker.md","filePath":"zh/installation/docker.md","lastUpdated":1777012567000}'),d={name:"zh/installation/docker.md"};function h(l,s,n,p,o,r){return t(),a("div",null,[...s[0]||(s[0]=[e(`
推荐用 Docker 跑 Memoh。编排里通常包含 PostgreSQL、主服务(内嵌 Containerd、智能体也在同一进程)、以及网页前端;主机上不必单独装 containerd、nerdctl、buildkit,都在容器里。
Compose 里有多组服务。有的默认就起,有的通过 --profile 打开:
| 服务 | Profile | 说明 |
|---|---|---|
| server | (核心) | 主服务,内嵌 Containerd,智能体同进程 |
| web | (核心) | 网页端(Vue 3) |
| postgres | (核心) | PostgreSQL |
| qdrant | qdrant | 向量库,给记忆检索用(稀疏/稠密) |
| browser | browser | Playwright 浏览器网关,给机器人上网 |
| sparse | sparse | 神经稀疏编码,给记忆检索(见下) |
sparse 容器跑神经稀疏向量,给记忆检索用。里面是一个轻量 Python(Flask)服务,端口 8085,模型是 OpenSearch 项目放出来的 opensearch-neural-sparse-encoding-multilingual-v1。
它做什么:
什么时候值得开:
何时启用:
打算用内置记忆提供方的 sparse 模式时,把 sparse profile 打开。镜像构建时会预下模型,启动不用临时拉权重。
docker compose --profile qdrant --profile sparse --profile browser up -d模式细节见 内置记忆提供方。
官方脚本(本机已装好 Docker 与 Compose):
curl -fsSL https://memoh.sh | sudo sh脚本会:检查 Docker/Compose;交互问配置(工作区、数据目录、管理员、JWT、Postgres 密码、是否开 sparse、浏览器核等);从 GitHub 取最新发布并克隆;按 Docker 模板生成 config.toml;钉死镜像版本;按选的核编浏览器镜像并拉齐服务。
静默安装(全默认、无提问):
curl -fsSL https://memoh.sh | sudo sh -s -- -y静默时默认大概:工作区 ~/memoh;数据 ~/memoh/data;管理员 admin / admin123;JWT 随机;Postgres 密码 memoh123。
指定版本:
curl -fsSL https://memoh.sh | sudo sh -s -- --version v0.6.0或:
curl -fsSL https://memoh.sh | sudo MEMOH_VERSION=v0.6.0 sh大陆镜像(拉镜像慢时):
curl -fsSL https://memoh.sh | sudo USE_CN_MIRROR=true sh环境变量可组合,例如
MEMOH_VERSION=v0.6.0 USE_CN_MIRROR=true。
git clone https://github.com/memohai/Memoh.git
cd Memoh
cp conf/app.docker.toml config.toml至少改 config.toml 里:
admin.passwordauth.jwt_secret(可 openssl rand -base64 32)postgres.password(环境变量 POSTGRES_PASSWORD 要一致)然后(推荐开 Qdrant、浏览器、sparse):
sudo POSTGRES_PASSWORD=你的库密码 docker compose --profile qdrant --profile browser --profile sparse up -d只跑核心(无向量、无浏览器):
sudo POSTGRES_PASSWORD=你的库密码 docker compose up -dmacOS 或用户已在
docker组里,一般不必sudo。
重要:
docker-compose.yml默认挂./config.toml,先建好文件再up,否则起不来。
拉 Docker Hub 困难时,在 config.toml 里取消 registry 一行的注释:
[workspace]
registry = "memoh.cn"并叠加国内 overlay:
sudo docker compose -f docker-compose.yml -f docker/docker-compose.cn.yml \\
--profile qdrant --profile browser up -d一键脚本在 USE_CN_MIRROR=true 时会处理这套。
起来之后:
| 服务 | 地址 |
|---|---|
| 网页 | http://localhost:8082 |
| API | http://localhost:8080 |
| 浏览器网关 | http://localhost:8083 |
默认登录 admin / admin123(请在 config.toml 改掉)。首次拉镜像、初始化可能要一两分钟。
config.toml 主段落大致如下:
| 段落 | 含义 |
|---|---|
[log] | 等级与格式(info/debug;text/json) |
[server] | 监听,默认 :8080 |
[admin] | 管理员账号 |
[auth] | JWT 与过期时间 |
timezone | 服时区,默认 UTC |
[containerd] | socket 与 namespace |
[workspace] | 镜像、快照、数据路径、CNI、可选仓库镜像 |
[postgres] | 连接串 |
[qdrant] | Qdrant 地址、密钥、超时 |
[sparse] | 稀疏服务 URL |
[registry] | 供应商定义目录 |
[browser_gateway] | 浏览器网关 |
[web] | 前端 host/port |
Linux 上若用户不在
docker组,命令前加sudo。
docker compose up -d # 起
docker compose down # 停
docker compose logs -f # 看日志
docker compose ps # 状态
docker compose pull && docker compose up -d # 更新镜像再起| 变量 | 默认 | 说明 |
|---|---|---|
POSTGRES_PASSWORD | memoh123 | 须与 config.toml 里 postgres.password 一致 |
MEMOH_CONFIG | ./config.toml | 配置文件路径 |
MEMOH_VERSION | 最新发版 | 要装的 git 标签,也用于钉死镜像 |
USE_CN_MIRROR | false | 是否用大陆镜像 |
BROWSER_CORES | chromium,firefox | 浏览器镜像里包含的引擎 |
BROWSER_TAG | latest | 浏览器镜像 tag |