本文基于 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 | 轻量自建、端口被占用时想先试用、偏完全开源 |
架构示意:
text用户/攻击流量 ──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:
bashdocker --version docker compose version
若尚未安装,可用轩辕一键脚本:
bashbash <(wget -qO- https://xuanyuan.cloud/docker.sh)
更多说明见 轩辕镜像使用手册。
三、检查端口占用(部署前必做)
bashsudo 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
bashsudo mkdir -p /data/safeline cd /data/safeline wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml"
Ubuntu 24.04 实测输出节选:
text--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 不写死镜像名,而是用变量拼接,例如:
text${IMAGE_PREFIX}/safeline-mgt${REGION}${ARCH_SUFFIX}${RELEASE}:${IMAGE_TAG}
因此不用改 compose 文件,只要在同目录写好 .env,就会从轩辕域拉取。
五、编写 .env(中文版 + 轩辕镜像)
bashcat > /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):
bashcd /data/safeline docker compose config | grep image
中文版实测应类似:
textimage: 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,一条命令拉齐:
bashcd /data/safeline docker compose pull docker compose up -d
Ubuntu 24.04 实测:compose pull 约 1~2 分钟拉完 7 个服务;若偶发 TLS timeout,再执行一次 docker compose pull 即可。up -d 成功时类似:
text✔ 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):
bashdocker pull docker.xuanyuan.run/chaitin/safeline-postgres:15.2
实测 Digest 示例:
textDigest: sha256:4434eed0bfecb39db77c47e0b026242d97ce453df3b70254c381fe0bcb83497d Status: Downloaded newer image for docker.xuanyuan.run/chaitin/safeline-postgres:15.2
七、验证启动与日志判读
bashdocker compose ps docker compose logs -f mgt curl -k -I https://127.0.0.1:9443
首次启动时,mgt 可能短暂打印:
textpanic: failed to init pg db: ... connect: connection refused connect() failed (111: Connection refused) while connecting to upstream
属 PostgreSQL / 内部 API 尚未就绪时的重试。出现下面这行后即可:
text🚀 MGT server ready
curl 成功标志(本文实测):
textHTTP/2 200 server: nginx content-type: text/html
八、获取管理员密码并登录
雷池没有像 SamWaf 那样的 initial_password.txt。首次用 resetadmin 生成口令:
bashdocker exec safeline-mgt resetadmin
实测输出格式:
text[INFO] Initial username:admin [INFO] Initial password:poOWDNFp [INFO] Done
每次执行
resetadmin都会生成新口令;请以你终端实际输出为准,登录后尽快修改。勿把口令提交到公开仓库。
浏览器访问(必须 https):
texthttps://你的服务器IP:9443
自签证书会有不安全提示,点高级 → 继续访问。若写成 http:// 会出现 ERR_CONNECTION_REFUSED。局域网打不开时,先确认本机 curl -k -I https://127.0.0.1:9443 正常,再查 ss -tlnp | grep 9443 与 ufw。
首次进入会看到软件许可协议,点击同意后进入登录页:

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

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

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

黑白名单:

CC 防护 · 频率限制:

CC 防护 · 等候室:

人机验证:

身份认证:

个人版付费墙(实测)
通用设置中,部分配置会直接提示升级:

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

结论:个人版适合学习、个人站点与功能体验;若依赖大屏、加强情报、部分专业防护配置,需评估商业授权。若你更在意「开源、无付费墙、单容器」,可优先看 SamWaf 教程。
若误装了国际英文版,界面类似下图;把
.env的REGION=-g改为REGION=后docker compose pull && docker compose up -d,再强制刷新即可切中文。

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

保存后流量路径:
text用户 → https://你的域名:443 → safeline-tengine → http://192.168.1.10:8080(后端)
建议先观察 / 仅记录,确认误拦后再全量拦截。证书可在「通用设置 → 证书管理」添加(部分能力受个人版限制,以界面提示为准)。
十一、升级与备份
升级前备份 /data/safeline/resources/(尤其 postgres/data、mgt、nginx)。
bashcd /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:忘记管理员密码?
bashdocker 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 后成功。
十三、命令速查
bash# 目录与编排 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 实测整理;个人版功能与授权策略以官方最新说明为准。
评论交流
免责声明
本博客文章所提供的内容、技术方案、配置示例及部署指南等信息,仅供学习交流和技术参考使用。文章内容基于发布时的技术环境和版本信息编写,可能因时间推移、技术更新或环境差异而存在不适用的情况。
用户在参考本博客内容进行部署操作前,应当充分了解相关技术风险,并建议在测试环境中进行充分验证和测试,确认无误后再考虑在生产环境中使用。生产环境部署前,请务必进行数据备份,并制定相应的回滚方案。
用户因使用本博客内容进行部署操作而产生的任何损失、数据丢失、系统故障、安全风险或其他问题,均由用户自行承担全部责任。轩辕镜像官方不对因使用本博客内容而产生的任何直接或间接损失承担责任。
本免责声明的最终解释权归轩辕镜像官方所有。
