部署
ASP 后端是 Django,前端是 Vite + Ant Design。单机私有化部署推荐使用 Docker Compose 发布包。
Docker Compose 发布包适合单机部署、内网测试和生产环境。发布包只包含部署模板、初始化脚本和定制目录,后端/前端镜像会从 GHCR 拉取。
1. 下载发布包
- GitHub Releases 页面:https://github.com/FunnyWolf/agentic-soc-platform/releases
- 当前版本发布包:
asp-compose-0.5.2.tar.gz
curl -fL -O https://github.com/FunnyWolf/agentic-soc-platform/releases/download/v0.5.2/asp-compose-0.5.2.tar.gz
tar -xzf asp-compose-0.5.2.tar.gz
cd asp-compose2. 发布包内容
解压后会生成 asp-compose/ 目录,主要包含:
compose.yaml
.env.example
scripts/
custom/
logs/
certs/compose.yaml:Docker Compose 编排文件。.env.example:默认配置模板,初始化时会复制为.env。scripts/:初始化、升级、诊断和自定义依赖安装脚本。custom/:用户自定义 Module、Playbook、SIEM YAML 和依赖目录。logs/:前端 Nginx 和后端进程日志挂载目录。certs/:HTTPS 证书目录。
3. 首次初始化
默认部署直接执行:
./scripts/init.sh
docker compose exec asp-web python manage.py createsuperuser如果
.env不存在,init.sh会从.env.example创建.env,并写入随机的DJANGO_SECRET_KEY、PostgreSQL 密码、Redis 密码和 RustFS/S3 Secret。初始化完成后,可以继续编辑.env,改成自己的密码、域名或端口。
如果
.env中仍存在change-me-*占位密码,初始化会中止,避免使用默认密码启动服务。
如果 custom/requirements.txt 中已有额外 Python 依赖,并且需要指定 PyPI 源,可以把 uv pip install 参数追加到 init.sh:
./scripts/init.sh --index-url https://pypi.org/simple
docker compose exec asp-web python manage.py createsuperuser
init.sh只有在custom/requirements.txt存在且包含非空依赖时才会运行asp-custom-deps。--index-url等参数只会传给uv pip install,依赖包仍需要写在custom/requirements.txt中。
代理需要按用途配置:
- 拉取 GHCR 镜像由 Docker 负责。如果
docker compose pull需要代理,请优先在 Docker Desktop 或 Docker daemon 中配置代理。 - 安装
custom/requirements.txt中的 Python 依赖时,代理需要进入asp-custom-deps容器。可以把代理变量写入.env,或在单独执行asp-custom-deps时用-e传入。
docker compose run --rm \
-e HTTP_PROXY=http://proxy.example:8080 \
-e HTTPS_PROXY=http://proxy.example:8080 \
asp-custom-deps --index-url https://pypi.org/simple4. 默认服务
Compose 默认包含:
asp-frontend:前端 HTTPS 入口。asp-web:Django HTTP API。asp-asgi:ASGI / WebSocket 服务。asp-worker-module:Module Worker。asp-worker-case-analysis:Case Analysis Worker。asp-worker-playbook:Playbook Worker。asp-worker-elk-action:ELK Action Worker。asp-worker-dashboard-cache:定时生成 Dashboard 24h、7d 和 30d 缓存。postgres:PostgreSQL。redis-stack:Redis Stack。rustfs:RustFS / S3-compatible object storage。
5. HTTPS 与证书
Compose 部署默认只监听 HTTPS。宿主机绑定地址和端口由
.env中的ASP_BIND、ASP_HTTPS_PORT控制。
默认值:
ASP_BIND=0.0.0.0
ASP_HTTPS_PORT=443- 如果 443 已被占用,只需要修改
ASP_HTTPS_PORT。 - 前端容器固定读取
certs/asp.crt和certs/asp.key。 - 如果证书文件不存在,
asp-frontend首次启动时会自动生成当前环境独有的自签名证书。
生产环境建议在启动前准备企业 CA 或公网 CA 签发的证书,并放到部署目录:
certs/asp.crt
certs/asp.key如果暂时没有正式证书,自动生成的自签名证书可以用于初始化或内网测试。浏览器会提示证书不受信任,这是预期行为;正式环境不建议长期使用自签名证书。
替换证书后重启前端容器:
docker compose restart asp-frontend6. Web API 与上传限制
.env 中可以调整 Web API 进程和上传大小:
ASP_WEB_WORKERS=3
ASP_WEB_TIMEOUT=210
ASP_MAX_UPLOAD_SIZE=20m7. 管理界面端口
Redis Stack 和 RustFS 自带 Web 管理界面。为避免反向代理导致静态资源或 WebSocket 兼容问题,部署包按官方默认方式直接暴露 HTTP 管理端口。
| 服务 | 默认地址 | 说明 |
|---|---|---|
| Redis Stack UI | http://<server>:8001 | Redis 管理界面。 |
| RustFS Console | http://<server>:9001 | RustFS Web 管理界面。 |
端口和绑定地址在 .env 中配置:
ASP_MANAGEMENT_BIND=0.0.0.0
ASP_REDIS_UI_PORT=8001
ASP_RUSTFS_CONSOLE_PORT=9001默认绑定
0.0.0.0,适合服务器部署。生产环境应结合防火墙或 VPN 控制管理界面的访问范围。
8. Compose 定制
init.sh 会在首次初始化时创建带说明注释和 services: {} 空映射的 compose.override.yaml。Docker Compose 会自动将它与官方 compose.yaml 合并。
- 密码、端口、镜像等已有配置优先写入
.env。 - 新增 volume、环境变量、command 或其他服务级覆盖时,编辑
compose.override.yaml。 - 托管升级会替换官方
compose.yaml,但永不覆盖.env和compose.override.yaml。
不要直接修改官方 compose.yaml,否则下一次升级会将这些改动备份后替换。完整升级行为见升级。
9. 定制目录
部署包中的 custom/ 用于放置用户定制内容:
| 路径 | 用途 |
|---|---|
custom/modules/*.py | 自定义 Module。 |
custom/playbooks/*.py | 自定义 Playbook。 |
custom/data/modules/<module_slug>/raw_alert_*.json | Module 开发调试样本。 |
custom/data/siem/*.yaml | 自定义 SIEM YAML。 |
custom/data/playbooks/<playbook_slug>/*.md | 自定义 Playbook Prompt。 |
custom/requirements.txt | Module / Playbook 需要的额外 Python 包。 |
- 修改脚本或 YAML 后,可以在 Custom Console 对应 Tab 中执行
Refresh / Validate。 - 如果变更了 Python 依赖或公共 helper module,需要重新执行
asp-custom-deps并重启相关容器:
docker compose run --rm asp-custom-deps --index-url https://pypi.org/simple
docker compose restart asp-web asp-worker-module asp-worker-playbook10. 日志
Nginx 和后端进程日志会挂载到部署目录的 logs/:
logs/nginx/access.log
logs/nginx/error.log
logs/django.log
logs/asgi.log
logs/agentic-module-worker.log
logs/agentic-case-analysis-worker.log
logs/agentic-playbook-worker.log
logs/elk-action-worker.log
logs/dashboard-cache-worker.log容器标准输出和标准错误仍可通过 docker compose logs 查看。