uuWAF快速部署使用

清夏晚风

配置要求

  • 处理器:64位 1千兆赫(GHz)或更快。
  • 内存:不小于2G
  • 磁盘空间:不小于8G

部署环境

软件依赖:Docker CE 20.10.14 版本以上,Docker Compose 2.0.0 版本以上。

重要提示

  • 确保服务器已安装并配置好Docker和Docker Compose。
  • 建议使用root用户或具有sudo权限的用户部署。
  • uuWAF默认监听80、443、4443端口,确保该端口未被其他服务占用。
  • uuWAF7.0版本开始,社区版限制10个站点,因此本文以6.8.0版本为例。

部署步骤(Docker Compose)

编写docker-compose.yml文件

  • 以下为uuWAF6.8.0版本的docker-compose.yml文件,您可以根据实际情况进行调整。
  • 若需要数据持久化,需要在容器运行一段时间后,将数据卷复制到本地目录,并使用chmod -R 777命令设置权限。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
networks:
wafnet:
name: wafnet
driver: bridge
ipam:
driver: default
config:
- gateway: 172.31.255.1
subnet: 172.31.255.0/24
driver_opts:
com.docker.network.bridge.name: wafnet

services:
uuwaf:
image: uusec/nanqiang:v6.8.0
ulimits:
nproc: 65535
nofile:
soft: 102400
hard: 102400
container_name: uuwaf
networks:
wafnet:
ports:
- "80:80"
- "443:443"
- "4443:4443"
volumes:
- wafshared:/uuwaf
command: ["/run.sh"]
environment:
- TZ=Asia/Shanghai
- UUWAF_MYSQL_PASSWORD=Safe3.WAF

links:
- wafdb
depends_on:
- wafdb

wafdb:
image: percona:8
container_name: wafdb
networks:
wafnet:
volumes:
- wafshared:/docker-entrypoint-initdb.d
- wafdata:/var/lib/mysql
environment:
- TZ=Asia/Shanghai
- INIT_ROCKSDB
- MYSQL_MAX_CONNECTIONS=512
- MYSQL_ROOT_PASSWORD=Safe3.WAF

volumes:
wafshared:
wafdata:

官方脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/bin/bash

abort() {
echo -e "\033[31m[南墙] $*\033[0m"
exit 1
}

if [ -z "$BASH" ]; then
abort "请用 bash 执行本脚本,参考最新的官方技术文档 https://waf.uusec.com/"
fi

if [ "$EUID" -ne "0" ]; then
abort "请以 root 权限运行"
fi

cat /proc/cpuinfo | grep ssse3 > /dev/null 2>&1
if [ $? -ne "0" ]; then
abort "需要运行在支持 x86-64-v2 的 CPU 上,请开启对应CPU指令集的支持"
fi

if [ ! $(command -v docker) ]; then
curl -sSLk https://get.docker.com/ | bash
if [ $? -ne "0" ]; then
abort "自动安装Docker运行环境失败,请按照https://docs.docker.com/engine/install/指引手工安装Docker"
fi
systemctl start docker && systemctl enable docker
fi

docker compose version > /dev/null 2>&1
if [ $? -ne "0" ]; then
abort "未发现docker compose命令,请安装Docker Compose插件"
fi
DC_CMD="docker compose"

SCRIPT_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd "$SCRIPT_PATH"


stop_uuwaf(){
$DC_CMD down
}

uninstall_uuwaf(){
stop_uuwaf
docker rm -f uuwaf wafdb > /dev/null 2>&1
docker network rm wafnet > /dev/null 2>&1
docker images|grep nanqiang|awk '{print $3}'|xargs docker rmi -f
docker volume ls|grep wafshared|awk '{print $2}'|xargs docker volume rm -f
}

start_uuwaf(){
if [ $(command -v netstat) ]; then
port_status=`netstat -nlt|grep -E ':(80|443|4443)\s'|wc -l`
if [ $port_status -gt 0 ]; then
echo -e "\t 端口80、443、4443中的一个或多个被占用,请关闭对应服务或修改其端口"
exit 1
fi
fi
$DC_CMD up -d
}

update_uuwaf(){
uninstall_uuwaf
start_uuwaf
}

restart_uuwaf(){
stop_uuwaf
start_uuwaf
}

clean_uuwaf(){
docker system prune -a -f
docker volume prune -a -f
}

start_menu(){
clear
echo "========================="
echo "南墙Docker管理"
echo "========================="
echo "1. 启动"
echo "2. 停止"
echo "3. 重启"
echo "4. 更新"
echo "5. 卸载"
echo "6. 清理"
echo "7. 退出"
echo
read -p "请输入数字:" num
case "$num" in
1)
start_uuwaf
echo "启动完成"
;;
2)
stop_uuwaf
echo "停止完成"
;;
3)
restart_uuwaf
echo "重启完成"
;;
4)
update_uuwaf
echo "更新完成"
;;
5)
uninstall_uuwaf
echo "卸载完成"
;;
6)
clean_uuwaf
echo "清理完成"
;;
7)
exit 1
;;
*)
clear
echo "请输入正确数字"
;;
esac
sleep 3s
start_menu
}

start_menu

部署容器

  • 执行以下命令部署容器:
1
docker-compose up -d
  • 等待容器启动完成,即可访问uuWAF管理后台(https://服务器IP:4443)。
  • 默认用户名和密码为:admin/Passw0rd!

部署步骤(宿主机安装)

添加站点

  • 登录管理后台,在站点管理中添加需要防护的站点。
  • 配置站点的域名、监听端口、证书等信息。
  • 启用站点防护,即可开始对该站点进行防护。

上传证书

修改域名DNS指向

到域名服务商管理后台把域名DNS A记录的ip地址改为南墙服务器ip地址。

测试连通性

访问站点域名查看网站是否能够打开,查看返回的http header头server字段是否为uuWAF。

补充内容

若镜像已失效,则可以使用以下备用镜像。

1
docker.cnb.cool/kimikkorow/docker-sync/percona:8_amd64
1
docker.cnb.cool/kimikkorow/docker-sync/uusec-nanqiang:v6.8.0_amd64
  • Title: uuWAF快速部署使用
  • Author: 清夏晚风
  • Created at : 2026-01-09 17:59:47
  • Updated at : 2026-01-13 16:48:23
  • Link: https://blog.kimikkorow.eu.org/网络防火墙WAF/南墙WEB应用防火墙(uuWAF)/01.uuWAF快速部署使用/
  • License: This work is licensed under CC BY-NC-SA 4.0.