本文记录在一台国内云服务器(Debian 13 / x86_64)上部署 流盾 WAF 的全过程。
核心痛点是官方一键脚本依赖 GitHub 拉代码 + Docker 本地构建,国内网络下非常慢。
文章给出一套实测可用的换源/加速方案、对应配置表、可复制命令,以及几个容易踩的坑。
所有命令均已在同一环境验证,照搬即可跑通。
一、背景:为什么必须换源
流盾 WAF 官方推荐的一键脚本(curl -fsSL https://fswaf.top/install.sh | bash)会做这几件事:
- 检查并安装 Docker / Docker Compose(默认走
get.docker.com,国内慢) - 从 GitHub 克隆源码仓库(
github.com直连,国内超慢) docker compose up -d --build本地构建镜像(pip / npm / apk 默认走官方源)- 等容器健康,输出访问地址
其中 GitHub 克隆 是最大瓶颈——我在同环境实测 git clone --depth 1 直连 超过 200 秒 还没完成;而换用 GitHub 代理镜像后 几十秒 拉完。apt / Docker / pip 同理,不换源整个部署会卡很久。
下面的方案把整条链路全部切换到国内加速。
二、换源对应总览表
| # | 类别 | 默认源 | 换成 | 配置文件 / 注入位置 | 是否持久 |
|---|---|---|---|---|---|
| 1 | apt 系统源 | deb.debian.org/debian | mirrors.aliyun.com/debian | /etc/apt/sources.list | ✅ 持久 |
| 2 | apt 安全源 | deb.debian.org/debian-security | mirrors.aliyun.com/debian-security | /etc/apt/sources.list | ✅ 持久 |
| 3 | apt deb822 源 | /etc/apt/sources.list.d/debian.sources | 删除 | 同路径 | ✅ 持久 |
| 4 | Docker 安装源 | download.docker.com | mirrors.aliyun.com/docker-ce | /etc/apt/sources.list.d/docker.list | ✅ 持久 |
| 5 | Docker 镜像拉取 | Docker Hub 直连 | docker.1ms.run / docker.m.daocloud.io / docker.xuanyuan.me | /etc/docker/daemon.json | ✅ 持久 |
| 6 | GitHub 克隆 | github.com 直连 | gh-proxy.com / ghproxy.net | 安装脚本环境变量 | ❌ 仅安装时 |
| 7 | pip | pypi.org | pypi.tuna.tsinghua.edu.cn | 构建容器内 PIP_INDEX_URL | ❌ 仅构建时 |
| 8 | npm | registry.npmjs.org | registry.npmmirror.com | 构建容器内 | ❌ 仅构建时 |
| 9 | apk | alpinelinux.org | 清华 alpine 镜像 | 构建容器内 | ❌ 仅构建时 |
关键区分:第 1–5 项是写到系统文件里的持久配置;第 6–9 项是安装/构建那一刻生效的加速,不落盘成系统文件。重装时若不带
FSWAF_CN_MIRROR=1,会自动回退官方直连。
三、逐条换源命令(可复制)
① apt 源换成阿里云
cp -a /etc/apt/sources.list /etc/apt/sources.list.bak.$(date +%s)
rm -f /etc/apt/sources.list.d/debian.sources 2>/dev/null || true
cat > /etc/apt/sources.list <<'EOF'
deb https://mirrors.aliyun.com/debian trixie main contrib non-free non-free-firmware
deb https://mirrors.aliyun.com/debian trixie-updates main contrib non-free non-free-firmware
deb https://mirrors.aliyun.com/debian trixie-backports main contrib non-free non-free-firmware
deb https://mirrors.aliyun.com/debian-security trixie-security main contrib non-free non-free-firmware
EOF
apt-get update -y
② Docker 安装源换成阿里云 + 安装 Docker
不走脚本默认的 get.docker.com(国内慢),用阿里云 docker-ce 源自己装:
apt-get install -y git ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.aliyun.com/docker-ce/linux/debian trixie stable" > /etc/apt/sources.list.d/docker.list
apt-get update -y
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
③ 配置 Docker 镜像加速(daemon.json)
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run/",
"https://docker.m.daocloud.io/",
"https://docker.xuanyuan.me/"
]
}
EOF
systemctl enable --now docker
docker info --format '{{.RegistryConfig.Mirrors}}' # 验证生效
④ GitHub 克隆走代理(安装时环境变量)
export FSWAF_REPO_URL="https://ghproxy.net/https://github.com/Qinver-china/flow-shield-waf.git"
export FSWAF_REPO_MIRROR_URLS="https://gh-proxy.com/https://github.com/Qinver-china/flow-shield-waf.git https://github.com/Qinver-china/flow-shield-waf.git"
⑤ pip / npm / apk 国内加速
export FSWAF_CN_MIRROR=1 # 脚本会在容器内自动设 pip→清华 / npm→npmmirror / apk→清华
四、一键安装流盾 WAF
把上面的换源做完,再运行官方脚本:
# 1) 下载官方一键脚本
curl -fsSL https://fswaf.top/install.sh -o install.sh
# 2) (可选)让管理员账号读取环境变量,否则默认 admin/admin888
sed -i 's|FSWAF_ADMIN_USER="${FSWAF_DEFAULT_ADMIN_USER}"|FSWAF_ADMIN_USER="${FSWAF_ADMIN_USER:-${FSWAF_DEFAULT_ADMIN_USER}}"|' install.sh
sed -i 's|FSWAF_ADMIN_PASSWORD="${FSWAF_DEFAULT_ADMIN_PASSWORD}"|FSWAF_ADMIN_PASSWORD="${FSWAF_ADMIN_PASSWORD:-${FSWAF_DEFAULT_ADMIN_PASSWORD}}"|' install.sh
# 3) 进入空目录并带换源/账号变量运行
mkdir -p /www/wwwroot/flow-shield-waf
cd /www/wwwroot/flow-shield-waf
export FSWAF_ASSUME_YES=1 FSWAF_CN_MIRROR=1
export FSWAF_ADMIN_USER=你的管理员账号
export FSWAF_ADMIN_PASSWORD=你的管理员密码
export FSWAF_REPO_URL="https://ghproxy.net/https://github.com/Qinver-china/flow-shield-waf.git"
export FSWAF_REPO_MIRROR_URLS="https://gh-proxy.com/https://github.com/Qinver-china/flow-shield-waf.git https://github.com/Qinver-china/flow-shield-waf.git"
bash install.sh
交互说明:脚本会尝试从
/dev/tty读交互确认。无 PTY 环境(如后台/脚本调用)必须用FSWAF_ASSUME_YES=1跳过,否则会卡住。手动在终端跑可去掉该变量。后台跑法(推荐,构建时间长):
setsid bash install.sh > install.log 2>&1 < /dev/null &,然后用tail -f install.log观察。
五、验证部署
docker ps --format '{{.Names}}\t{{.Status}}' # 看容器是否 healthy
docker info --format '{{.RegistryConfig.Mirrors}}' # 看镜像加速是否生效
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:9000/ # 面板存活
curl -s -o /dev/null -w '%{http_code}\n' -X POST http://127.0.0.1:9000/api/v1/auth/login \
-H 'Content-Type: application/json' \
-d '{"username":"你的管理员账号","password":"你的管理员密码"}' # 登录校验
正常情况:所有容器状态为 healthy,面板返回 200,登录接口正确账号返回 200、错误密码返回 401。
六、踩坑记录(重点)
daemon.json会被脚本覆盖
我原本在daemon.json里配了 4 个镜像(含腾讯云mirror.ccs.tencentyun.com)。脚本运行时把它备份成daemon.json.bak.flowshield.*并合并成它自己的列表,最终实际生效 3 个。这是正常现象,不用慌,以docker info看到的为准。- GitHub 代理不是系统文件
gh-proxy.com/ghproxy.net是通过环境变量传给脚本的,没有写成配置。重装时不带FSWAF_CN_MIRROR=1和 repo 变量就会退回官方直连——也就是回到慢的状态。 - nginx 源码编译很耗时
构建镜像时有一段要从nginx.org下载 nginx 源码并编译(这一步没有国内镜像,约 70 秒),加上 pip / 前端构建,整轮构建约 15–20 分钟。耐心等,日志在推进就说明正常。 - apt 已含
non-free组件
Debian 13 的trixie需要显式写non-free non-free-firmware(上面源已含),否则部分依赖可能装不上。 - SSH 密码特殊字符
如果你的 root 密码带特殊字符(如末尾句号、@、! 等),在脚本/环境变量里务必用双引号包住,否则会被 shell 截断导致认证失败。
七、上线前别忘了安全组
本机防火墙(如 ufw)放行不代表公网可达。云厂商安全组要在控制台放行入站:
80(HTTP)443(HTTPS)9000(管理面板)
建议:9000 管理面板不要公网裸奔,只放内网或用反向代理 + 访问控制。
八、回退默认
# 还原 apt / docker 源备份
ls /etc/apt/sources.list.bak.*
ls /etc/docker/daemon.json.bak.flowshield.*
# GitHub / pip / npm / apk:重装时不带 FSWAF_CN_MIRROR=1 即走官方直连,无需改系统文件
九、镜像站可能变动的提醒
国内镜像站偶尔会下线或限速,遇到问题时:
- Docker 镜像拉取报
no such host:删掉daemon.json里对应行,再systemctl restart docker - GitHub 代理偶发失效:临时把
FSWAF_REPO_URL改回https://github.com/Qinver-china/flow-shield-waf.git直连 - 本文命令适用于 Debian 13 (trixie);Ubuntu 或其他版本把
trixie换成对应代号(如bookworm/jammy)即可
十、小结
这套方案把 “apt → 阿里云、Docker → 阿里云源 + 镜像加速、GitHub → 代理镜像、pip/npm/apk → 清华/npmmirror” 整条链路全部加速,原本可能因网络卡死的一键部署,最终稳定跑通。
核心就三点:系统源提前换、GitHub 克隆走代理、构建时开 FSWAF_CN_MIRROR=1。照着上面的命令复制执行即可。
本文所有命令均在 Debian 13 / x86_64 实测。不同发行版/架构请按需调整源地址与代号。
