Files
xuanyuan_docker_proxy/blog/safeline-waf-docker-compose-deploy.md
Sean 483a2b88fd 部署文档定期更新
部署文档定期更新
2026-08-22 20:36:37 +08:00

18 KiB
Raw Permalink Blame History

Docker Compose 部署雷池 SafeLine WAF:浏览器即可完成网站安全管理

Docker Compose 部署雷池 SafeLine WAF:浏览器即可完成网站安全管理

分类: Docker部署教程 | 标签: SafeLine,雷池,WAF,Docker,Docker Compose,轩辕镜像,网站防火墙,私有化部署,部署教程 | 发布时间: 2026-07-17 02:20:44

零基础教程:雷池 SafeLine 社区版 9.3.10 中文版 Docker Compose 部署,轩辕镜像加速拉取 7 组件、.env 配置、resetadmin 登录与个人版付费功能说明。与 SamWaf 对比,Ubuntu 24.04 实测含 12 张截图。

本文基于 chaitin/safeline-mgt:9.3.10 等雷池社区版组件镜像,Ubuntu 24.04 实测(管理台 HTTPS:9443,流量入口占用宿主机 80/443)

网站日志里全是扫描器、SQL 注入探测,云 WAF 按量又贵?雷池 SafeLine 是长亭科技开源的 Web 应用防火墙(WAF),以反向代理方式前置到站点前,用语义分析引擎拦截恶意流量。社区「个人版」可免费私有化部署,但不少高级能力标成增值服务,需升级授权——实测界面里「升级授权」「请升级到专业版后再配置」会反复出现。

本文用 轩辕镜像 加速,按官方手动安装思路:下载 compose.yaml、编写 .env、docker compose pull && up -d,拿到管理员口令后登录中文控制台并添加防护应用。全程 Ubuntu 24.04 实测,附 13 张截图,并与此前 SamWaf Docker 部署教程 做简要对比。

官方文档:雷池帮助文档 · 手动安装、GitHub chaitin/SafeLine。

部署要点:雷池的 tengine 使用 host 网络,会直接占用宿主机 80/443,不像 SamWaf 可轻松改成 8088/8443 试用。部署前务必确认 80/443 空闲,或维护窗口停掉现有 Nginx。管理台必须用 https://,不能写 http://。


一、雷池是什么?和 SamWaf 怎么选?

雷池(SafeLine) 是长亭科技推出的下一代 WAF,社区个人版可免费下载部署。典型能力包括语义分析检测、反向代理接入、攻击事件与日志、CC 频率限制、人机验证、黑白名单等。产品定位偏「专业安全产品 + 免费个人版试用/自用」,界面成熟,但个人版禁止商业规模使用,且大屏、加强情报、部分防护配置等会提示升级专业版/商业版。

此前写过 SamWaf:开源、单容器、SQLite、功能相对完整且无强推付费功能。选型可参考:

对比项 雷池 SafeLine(本文) SamWaf
部署形态 7 个容器 Compose 栈 单容器 docker run 即可
流量入口 tengine host 网络,占宿主机 80/443 可映射 80/443 或试用 8088/8443
管理台 HTTPS 9443 HTTP 26666
数据 PostgreSQL 独立容器 默认加密 SQLite
授权模式 个人版免费,多项增值/专业版付费 开源自用
适合谁 认准长亭品牌、能接受个人版限制、可腾出 80/443 轻量自建、端口被占用时想先试用、偏完全开源

架构示意:

用户/攻击流量 ──HTTP:80 / HTTPS:443──▶ safeline-tengine(host 网络)
tengine ──检测──▶ safeline-detector / fvm 等
tengine ──反代──▶ 后端站点(如 127.0.0.1:8080)
管理员 ──HTTPS:9443──▶ safeline-mgt
mgt / luigi / chaos ──▶ safeline-pg(PostgreSQL)

七个组件(中文版镜像名无 -g 后缀):

容器名 作用 轩辕加速坐标
safeline-pg PostgreSQL docker.xuanyuan.run/chaitin/safeline-postgres:15.2
safeline-mgt 管理控制台 docker.xuanyuan.run/chaitin/safeline-mgt:9.3.10
safeline-detector 检测引擎 docker.xuanyuan.run/chaitin/safeline-detector:9.3.10
safeline-tengine 反代入口 docker.xuanyuan.run/chaitin/safeline-tengine:9.3.10
safeline-luigi 日志/任务 docker.xuanyuan.run/chaitin/safeline-luigi:9.3.10
safeline-fvm 规则引擎 docker.xuanyuan.run/chaitin/safeline-fvm:9.3.10
safeline-chaos 人机验证等 docker.xuanyuan.run/chaitin/safeline-chaos:9.3.10

中英文版:.env 里 REGION= 留空 = 中文版(镜像无 -g);REGION=-g = 国际英文版(镜像名带 -g,如 safeline-mgt-g)。控制台没有语言切换开关,装错只能改 REGION 后重新 pull + up -d。


二、环境要求

项目 建议
操作系统 Linux x86_64(需 SSSE3;本文 Ubuntu 24.04)
Docker ≥ 20.10.14,Compose V2(docker compose)
内存 ≥ 1 GB(推荐 2 GB 以上)
磁盘 ≥ 5 GB(多镜像 + 日志 + PG)
端口 80、443(tengine,必须空闲);9443(管理台,可改 MGT_PORT)
工作目录 /data/safeline(与官方一致)

验证 Docker:

docker --version
docker compose version

若尚未安装,可用轩辕一键脚本:

bash <(wget -qO- https://xuanyuan.cloud/docker.sh)

备用地址:

bash <(wget -qO- https://get.xuanyuan.me/docker.sh)

更多说明见 轩辕镜像使用手册。


三、检查端口占用(部署前必做)

sudo ss -tlnp | grep -E ':80 |:443 |:9443 '
docker ps --format 'table {{.Names}}\t{{.Ports}}'
情况 做法
80/443 空闲 可继续本文标准部署
80/443 被 Nginx/宝塔占用 先停现有入口,或换机;不能像 SamWaf 那样简单改映射端口试用
9443 被占用 改 .env 中 MGT_PORT

四、准备目录与 compose.yaml

sudo mkdir -p /data/safeline
cd /data/safeline
wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml"

Ubuntu 24.04 实测输出节选:

--2026-07-17 01:38:22--  https://waf-ce.chaitin.cn/release/latest/compose.yaml
HTTP request sent, awaiting response... 200 OK
Length: 4590 (4.5K)
Saving to: ‘compose.yaml’
compose.yaml saved [4590/4590]

官方 compose.yaml 不写死镜像名,而是用变量拼接,例如:

${IMAGE_PREFIX}/safeline-mgt${REGION}${ARCH_SUFFIX}${RELEASE}:${IMAGE_TAG}

因此不用改 compose 文件,只要在同目录写好 .env,就会从轩辕域拉取。


五、编写 .env(中文版 + 轩辕镜像)

cat > /data/safeline/.env <<'EOF'
SAFELINE_DIR=/data/safeline
IMAGE_TAG=9.3.10
MGT_PORT=9443
POSTGRES_PASSWORD=请换成字母数字强密码
SUBNET_PREFIX=172.22.222
IMAGE_PREFIX=docker.xuanyuan.run/chaitin
ARCH_SUFFIX=
RELEASE=
REGION=
MGT_PROXY=0
EOF
变量 说明
IMAGE_PREFIX 轩辕加速前缀,拼出 docker.xuanyuan.run/chaitin/safeline-…
IMAGE_TAG 业务组件版本,本文固定 9.3.10
REGION 留空 = 中文版;写 -g = 英文国际版
POSTGRES_PASSWORD PG 初始化密码,建议字母数字,避免特殊字符
MGT_PORT 管理台宿主机端口,默认 9443
SUBNET_PREFIX 内部网段前缀,冲突时可改(如 172.30.100)

启动前确认解析结果(应没有 -g):

cd /data/safeline
docker compose config | grep image

中文版实测应类似:

image: docker.xuanyuan.run/chaitin/safeline-chaos:9.3.10
image: docker.xuanyuan.run/chaitin/safeline-detector:9.3.10
image: docker.xuanyuan.run/chaitin/safeline-fvm:9.3.10
image: docker.xuanyuan.run/chaitin/safeline-luigi:9.3.10
image: docker.xuanyuan.run/chaitin/safeline-mgt:9.3.10
image: docker.xuanyuan.run/chaitin/safeline-postgres:15.2
image: docker.xuanyuan.run/chaitin/safeline-tengine:9.3.10
官方坐标(Docker Hub) 轩辕加速
chaitin/safeline-mgt:9.3.10 docker.xuanyuan.run/chaitin/safeline-mgt:9.3.10
chaitin/safeline-postgres:15.2 docker.xuanyuan.run/chaitin/safeline-postgres:15.2
(其余组件同理) docker.xuanyuan.run/chaitin/safeline-<名>:标签

六、拉取镜像并启动

有了正确 .env,不必手敲 7 条 docker pull,一条命令拉齐:

cd /data/safeline
docker compose pull
docker compose up -d

Ubuntu 24.04 实测:compose pull 约 1~2 分钟拉完 7 个服务;若偶发 TLS timeout,再执行一次 docker compose pull 即可。up -d 成功时类似:

✔ Network safeline-ce          Created
✔ Container safeline-pg        Started
✔ Container safeline-chaos     Started
✔ Container safeline-tengine   Started
✔ Container safeline-fvm       Started
✔ Container safeline-detector  Started
✔ Container safeline-mgt       Started
✔ Container safeline-luigi     Started

可选:先单独预拉数据库(标签固定 15.2):

docker pull docker.xuanyuan.run/chaitin/safeline-postgres:15.2

实测 Digest 示例:

Digest: sha256:4434eed0bfecb39db77c47e0b026242d97ce453df3b70254c381fe0bcb83497d
Status: Downloaded newer image for docker.xuanyuan.run/chaitin/safeline-postgres:15.2

七、验证启动与日志判读

docker compose ps
docker compose logs -f mgt
curl -k -I https://127.0.0.1:9443

首次启动时,mgt 可能短暂打印:

panic: failed to init pg db: ... connect: connection refused
connect() failed (111: Connection refused) while connecting to upstream

属 PostgreSQL / 内部 API 尚未就绪时的重试。出现下面这行后即可:

🚀 MGT server ready

curl 成功标志(本文实测):

HTTP/2 200
server: nginx
content-type: text/html

八、获取管理员密码并登录

雷池没有像 SamWaf 那样的 initial_password.txt。首次用 resetadmin 生成口令:

docker exec safeline-mgt resetadmin

实测输出格式:

[INFO] Initial username:admin
[INFO] Initial password:poOWDNFp
[INFO] Done

每次执行 resetadmin 都会生成新口令;请以你终端实际输出为准,登录后尽快修改。勿把口令提交到公开仓库。

浏览器访问(必须 https):

https://你的服务器IP:9443

自签证书会有不安全提示,点高级 → 继续访问。若写成 http:// 会出现 ERR_CONNECTION_REFUSED。局域网打不开时,先确认本机 curl -k -I https://127.0.0.1:9443 正常,再查 ss -tlnp | grep 9443 与 ufw。

首次进入会看到软件许可协议,点击同意后进入登录页:

雷池 SafeLine 软件许可协议:同意并开始使用

使用 admin 与上一步口令登录:

雷池登录页:用户名 admin 与密码登录


九、中文控制台导览与个人版限制

登录后进入统计报表。左下角版本 9.3.10 与本文镜像标签一致。顶栏常驻 升级授权,中央水印有「个人版禁止商业用途使用」一类提示——这是个人版产品策略,不是部署失败。

雷池中文版统计报表:流量分析与 0 数据空状态,版本 9.3.10

左侧主要模块:

模块 用途
统计报表 流量分析、安全态势、防护报告;防护大屏等可能锁付费
防护应用 添加受保护站点与反代后端
攻击防护 攻击事件 / 攻击日志
黑白名单 IP 等检测事件与自定义规则
CC 防护 频率限制、等候室
人机验证 区分真人与自动化程序
身份认证 访问应用前二次认证
通用设置 IP 组、指纹库、证书等

攻击防护(新部署暂无数据属正常):

雷池攻击防护:攻击事件列表暂无数据

黑白名单:

雷池黑白名单:检测事件与自定义规则

CC 防护 · 频率限制:

雷池 CC 防护频率限制:限流说明与拦截列表

CC 防护 · 等候室:

雷池等候室:高峰排队能力说明页

人机验证:

雷池人机验证:防自动化攻击说明与配置入口

身份认证:

雷池身份认证:访问应用前认证配置页

个人版付费墙(实测)

通用设置中,部分配置会直接提示升级:

雷池通用设置:提示请升级到专业版后再配置,含 IP 组与证书管理

统计报表里打开「防护大屏」配置时,会提示升级到商业版:

雷池防护大屏配置弹窗:请升级到商业版后再配置

结论:个人版适合学习、个人站点与功能体验;若依赖大屏、加强情报、部分专业防护配置,需评估商业授权。若你更在意「开源、无付费墙、单容器」,可优先看 SamWaf 教程。

若误装了国际英文版,界面类似下图;把 .env 的 REGION=-g 改为 REGION= 后 docker compose pull && docker compose up -d,再强制刷新即可切中文。

雷池国际英文版统计页(REGION=-g)对照


十、添加防护站点(让 WAF 生效)

进入 防护应用 → 添加应用,弹窗中主要字段:

字段 说明 示例
域名 对外访问域名,支持通配符 www.example.com
端口 雷池监听端口,可加多个(HTTP/HTTPS 各一) 80(HTTP)、443(HTTPS)
证书 HTTPS 端口需选证书(先在通用设置添加) —
接入方式 代理到已有应用 / 使用静态文件搭建 / 重定向 选「代理到已有应用」
上游服务器 真实后端地址,不支持路径 http://192.168.1.10:8080
应用名称 便于列表识别 自定义

雷池添加应用弹窗:域名、80/443 监听端口、代理到已有应用与上游服务器配置

保存后流量路径:

用户 → https://你的域名:443 → safeline-tengine → http://192.168.1.10:8080(后端)

建议先观察 / 仅记录,确认误拦后再全量拦截。证书可在「通用设置 → 证书管理」添加(部分能力受个人版限制,以界面提示为准)。


十一、升级与备份

升级前备份 /data/safeline/resources/(尤其 postgres/data、mgt、nginx)。

cd /data/safeline
# 修改 .env 中 IMAGE_TAG=新版本
docker compose pull
docker compose up -d

十二、常见问题 FAQ

Q1:compose.yaml 里看不到镜像名,能用吗?

能。镜像由 .env 变量拼接;用 docker compose config | grep image 核对即可。

Q2:为什么不用手敲 7 条 docker pull?

.env 正确时,docker compose pull 会一次拉齐全部组件(含 postgres:15.2)。单条 docker pull 仅用于排错。

Q3:管理台 http://IP:9443 打不开?

必须使用 https://。本机 curl -k -I https://127.0.0.1:9443 若已是 200,再查防火墙是否放行 9443。

Q4:忘记管理员密码?

docker exec safeline-mgt resetadmin

Q5:界面是英文怎么改中文?

.env 设 REGION=(留空),确认 compose config 中镜像无 -g,再 pull + up -d。控制台内无语言开关。

Q6:个人版很多按钮要升级授权?

正常现象。个人版免费但限制商业规模使用,防护大屏、加强情报等为增值能力。与完全开源的 SamWaf 定位不同。

Q7:和现有 Nginx 同机怎么部署?

雷池 tengine 占 host 的 80/443,需停 Nginx 或换机;没有 SamWaf 那种试用端口方案。

Q8:compose pull 出现 TLS handshake timeout?

网络抖动时再执行一次即可;本文实测中文版二次 pull 后成功。


十三、命令速查

# 目录与编排
sudo mkdir -p /data/safeline && cd /data/safeline
wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml"

# .env:IMAGE_PREFIX=docker.xuanyuan.run/chaitin,REGION= 留空,IMAGE_TAG=9.3.10
# (见第五节完整内容)

docker compose config | grep image
docker compose pull
docker compose up -d

docker compose ps
curl -k -I https://127.0.0.1:9443
docker exec safeline-mgt resetadmin

# 日志
docker compose logs -f mgt

十四、延伸阅读


本文基于雷池社区版 9.3.10 中文版与 Ubuntu 24.04 实测整理;个人版功能与授权策略以官方最新说明为准。