如何用 Docker 部署
这篇讲在一台 Linux 或 macOS 机器上用 Docker Compose 长期运行 alldayrec。第一次接触的话,先跟着第一次跑起来走一遍。
适用版本
docker-compose.yml 默认用镜像 ghcr.io/suyiiyii/alldayrec:latest,即最新的版本标签(写这一页时是 v0.1.0);main 标签跟着 main 分支。要用哪个版本见下面的固定镜像版本。
前提
- Docker(带 Compose),amd64 或 arm64。
- 一把阿里云百炼北京区的 API key,或者其他语音识别引擎的 key(见如何更换语音识别引擎)。
- 一个 OpenAI 兼容的大模型接口;用百炼时同一把 key 就行。
步骤
取得代码并复制配置模板:
bashgit clone https://github.com/suyiiyii/alldayrec && cd alldayrec cp .env.example .env编辑
.env,至少填DASHSCOPE_API_KEY和LLM_API_KEY。用.env.example里的大模型设置(百炼兼容模式、qwen-plus)时,两者填同一把 key。所有项见配置项。注释要单独占一行:Compose 会把
VAR= # 注释读成值# 注释。生成
data/tenants.json,里面是你的 token:bashmkdir -p data && echo '[{"id": "main", "token": "'$(openssl rand -hex 16)'", "data": "/data/main", "recordings": "/data/main/recordings"}]' > data/tenants.json && chmod 600 data/tenants.json启动并看日志:
bashdocker compose up -d docker compose logs -f日志出现
ready on 0.0.0.0:8770就可以用了。第一次启动会先下载模型文件(约 70 MB)。在浏览器里打开
http://<服务器 IP>:8770/?token=<你的 token>:在这台机器上用127.0.0.1,在别的电脑上用这台机器的局域网或 Tailscale 地址。之后靠 cookie 保持登录。
docker-compose.yml 把 8770 端口发布在这台机器的所有网卡上,同一个局域网或 Tailscale 网络里的手机可以直接连,见如何让手机连上服务器。挡住别人的只有 data/tenants.json 里的 token,token 为空时服务不会启动。只想本机访问,把 ports: 下那一行改成 "127.0.0.1:8770:8770";要从公网访问,在前面放一个带 TLS 的反向代理。
常见的调整
key 调对话模型返回 403
如果这把百炼 key 在控制台里限定了可用模型,调对话模型(qwen-plus)会返回 403。换一把没有限定模型的 key,或者把 LLM_* 指向别的大模型服务。
时区
容器默认用 UTC。.env.example 里有 TZ=Asia/Shanghai:对话的日期和每日回顾的时间 RECAP_AT 都按这个时区算。删掉这一行就用 UTC。
固定镜像版本
把 docker-compose.yml 里 image: 一行的标签换成下面任意一种,然后 docker compose up -d:
| 标签 | 是什么 |
|---|---|
latest | 最新的版本标签(v*) |
0.1.0、0.1 | 某个版本,或某个小版本系列的最新版 |
main | main 分支最新一次构建 |
sha-<7 位提交号> | main 上的某一次提交,比如 sha-1971bca |
这些标签由 .github/workflows/docker.yml 发布。
在本机构建镜像
把 docker-compose.yml 里 # build: . 那一行取消注释,然后:
docker compose up -d --build数据在哪
所有数据都在 ./data:tenants.json、模型文件(data/models),以及每个人的数据库和原始录音(快速开始里是 data/main)。完整的目录结构见数据目录,备份见如何备份与恢复。