部署文档
部署到服务器
两套方案任选,仓库里有完整的 docs/DEPLOYMENT.md
🐳 Docker Compose
环境隔离,一条命令起停,迁移方便。
仓库自带 docker-compose.yml,MySQL / Redis / Qdrant / Milvus 按需起停。
# 装 Docker
curl -fsSL https://get.docker.com | sh
# 拉代码
cd /opt && git clone <仓库地址> ics
cd ics
# 配置(必改 SECRET_KEY 和 CORS)
cp backend/.env.example backend/.env
# 启动
docker compose -f docker-compose.prod.yml up -d --build
🔧 systemd + Nginx
不用 Docker,直接在宿主机跑。
单台云服务器最省心:systemd 负责守护进程,Nginx 负责反代与 HTTPS。
# 建专用用户(不要用 root 跑应用)
sudo useradd -r -s /bin/false -d /opt/ics csapp
# 装依赖
cd /opt/ics/backend
sudo -u csapp python3 -m venv .venv
sudo -u csapp .venv/bin/pip install -r requirements.txt
# 写 systemd 服务后启动
sudo systemctl enable --now ics
⚠️ 三个必须知道的坑
这三条是部署时最容易出问题的地方。
| 问题 | 说明 |
|---|---|
| 上线第一件事:改默认密码 | 后台已内置登录,但默认账号是公开的 admin / 123456。没改就对外,等于把 API Key 配置页开放给所有人。同时把 APP_SECRET_KEY 换成随机值 —— 它负责签发登录 token。应用只绑 127.0.0.1:8000,公网只让 Nginx 露出来。 |
| SSE 必须关缓冲 | 不关的话回答不会逐字出现,而是等全部生成完才一次性蹦出来,长回答还可能超时断开。 |
| iframe 尺寸要给够 | 需要 400 × 636,且 background: transparent。给小了面板被裁,不透明会露出白底。 |
# Nginx 关键配置:SSE 流式问答必须关闭缓冲
location /api/chat/stream {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_buffering off; # ← 关键
proxy_cache off;
chunked_transfer_encoding off;
proxy_read_timeout 300s;
}
# 文档入库耗时长,超时要放宽
location /api/documents/process {
proxy_pass http://127.0.0.1:8000;
proxy_read_timeout 1800s;
}
安全清单:改掉后台默认密码
admin/123456 · 换掉 APP_SECRET_KEY(签发登录 token) · AUTH_ENABLED 保持 true · APP_DEBUG=false · CORS_ORIGINS 限定域名 · 启用 HTTPS · 不用 root 跑 · 给聊天接口限流 · 定期备份 backend/data/(存着你的 API Key,已被 .gitignore 排除)
继续阅读仓库文档
完整部署文档、API 说明和嵌入指南都在仓库的 docs/ 目录。