
使用Docker/Podman部署Fail2Ban UI的指南。
使用podman从Docker Hub拉取官方镜像(默认):
bashpodman pull swissmakers/fail2ban-ui:latest # 或使用Docker: docker pull swissmakers/fail2ban-ui:latest
备选:从Swissmakers registry拉取(备用):
bashpodman pull registry.swissmakers.ch/infra/fail2ban-ui:latest docker pull registry.swissmakers.ch/infra/fail2ban-ui:latest
bashpodman run -d \ --name fail2ban-ui \ --network=host \ -v /opt/podman-fail2ban-ui:/config:Z \ -v /etc/fail2ban:/etc/fail2ban:Z \ -v /var/log:/var/log:ro \ -v /var/run/fail2ban:/var/run/fail2ban \ swissmakers/fail2ban-ui:latest
可以使用PORT环境变量更改默认端口(8080):
bashpodman run -d \ --name fail2ban-ui \ --network=host \ -e PORT=8436 \ -v /opt/podman-fail2ban-ui:/config:Z \ swissmakers/fail2ban-ui:latest
通过http://localhost:8436访问Web界面。
启动容器:
bashpodman start fail2ban-ui
停止容器:
bashpodman stop fail2ban-ui
查看日志:
bashpodman logs -f fail2ban-ui
删除容器:
bashpodman stop fail2ban-ui podman rm fail2ban-ui
在容器内执行命令:
bashpodman exec -it fail2ban-ui /bin/bash
Fail2Ban UI容器需要几个卷挂载才能正常运行。以下是每个卷的详细说明:
/config - 配置和数据库存储
/opt/podman-fail2ban-ui(或您偏好的位置)/configfail2ban-ui.db)、应用设置和远程服务器连接的SSH密钥:Z标志fail2ban-ui.db - 包含服务器配置和封禁事件的SQLite数据库.ssh/ - 用于远程服务器连接的SSH密钥目录/etc/fail2ban - Fail2Ban配置目录(仅本地Fail2Ban连接器需要)
/etc/fail2ban/etc/fail2ban:Z标志/var/run/fail2ban - Fail2Ban套接字目录(仅本地Fail2Ban连接器需要)
/var/run/fail2ban/var/run/fail2banfail2ban.sock)/var/log - 日志文件(仅本地Fail2Ban连接器需要)
/var/log/var/log:ro)GeoLite2-Country.mmdb - GeoIP数据库
/path/to/your/GeoIPFolder/usr/share/GeoIP(路径必须与UI中的设置匹配):ro)| 卷 | 必需 | 读写权限 | SELinux上下文 | 用途 |
|---|---|---|---|---|
/config | ✅ 是 | 读写 | :Z | 数据库、设置、SSH密钥 |
/etc/fail2ban | ✅ 是* | 读写 | :Z | Fail2Ban配置文件 |
/var/run/fail2ban | ✅ 是* | 读写 | - | Fail2Ban控制套接字 |
/var/log | ✅ 是* | 只读 | :ro | 系统日志文件,用于jail管理时的自动logpath测试 |
/path/to/your/GeoIPFolder | ⚠️ 可选 | 只读 | :ro | MaxMind GeoIP数据库(仅在使用MaxMind提供程序时需要) |
*仅在管理本地Fail2Ban实例时需要。远程部署不需要。
| 变量 | 默认值 | 描述 |
|---|---|---|
PORT | 8080 | Web界面端口号 |
BIND_ADDRESS | 0.0.0.0 | Web界面绑定的IP地址。在使用主机网络时,可设置为特定IP(如127.0.0.1或特定接口IP)以限制访问,防止Web UI暴露到未受保护的网络。 |
CONTAINER | true | 由容器自动设置(不要覆盖) |
启动容器后,访问Web界面并配置第一个Fail2Ban服务器:
访问Web界面
http://localhost:8080(或您配置的端口)添加第一个服务器
配置设置
http://127.0.0.1:8080或您配置的端口)https://fail2ban.example.com)注意: 本地Fail2Ban服务是可选的。Fail2Ban UI可以通过SSH或API代理管理远程Fail2Ban服务器,无需在容器中安装本地Fail2Ban。
重要: Fail2Ban回调URL必须对所有需要发送警报的Fail2Ban实例(本地和远程)可访问。如果更改Fail2Ban UI端口,请确保回调URL相应更新。
为便于管理,您可以使用Docker Compose。创建docker-compose.yml文件:
yamlservices: fail2ban-ui: # 使用Docker Hub的预构建镜像(默认) image: swissmakers/fail2ban-ui:latest # 备选:使用Swissmakers registry(备用) # image: registry.swissmakers.ch/infra/fail2ban-ui:latest # 或从源码构建(取消注释使用): # build: # context: . # dockerfile: Dockerfile container_name: fail2ban-ui # privileged: true # 如果需要使用容器本地的fail2ban实例则需要(因为fail2ban.sock归root所有) # 计划推出一体化容器,目前需要使用linuxserver的fail2ban容器,详见docker-compose-allinone.yml示例 network_mode: host environment: # 更改Web界面端口(默认8080) - PORT=8080 volumes: # Fail2Ban UI必需:存储SQLite数据库、应用设置和SSH密钥 - /opt/podman-fail2ban-ui:/config:Z # Fail2Ban UI必需:用于测试logpath是否有效(启用jail前)。没有此只读访问,Fail2Ban UI将无法启用jails(logpath测试会失败) - /var/log:/var/log:ro # 本地Fail2Ban实例必需:Fail2Ban配置目录,用于通过Fail2Ban UI管理本地Fail2Ban实例(如主机系统) - /etc/fail2ban:/etc/fail2ban:Z # 本地Fail2Ban实例必需:Fail2Ban套接字目录,用于通过Fail2Ban UI控制本地Fail2Ban(如主机系统) - /var/run/fail2ban:/var/run/fail2ban # 可选:映射MaxMind GeoIP数据库(仅在使用MaxMind提供程序时需要) #- /usr/share/GeoIP:/usr/share/GeoIP:ro restart: unless-stopped
使用Docker Compose启动:
bashdocker-compose up -d
查看日志:
bashdocker-compose logs -f
停止:
bashdocker-compose down
要使用Fail2Ban和Fail2Ban UI的完整容器化设置,请使用一体化Docker Compose配置:
yamlservices: fail2ban: image: lscr.io/linuxserver/fail2ban:latest container_name: fail2ban cap_add: # Fail2Ban容器必需:允许从容器管理网络接口和iptables - NET_ADMIN # Fail2Ban容器必需:允许创建原始套接字(fail2ban.sock需要) - NET_RAW # Fail2Ban容器必需:允许以root身份运行(管理网络接口和原始套接字需要) - SYS_ADMIN # privileged: true network_mode: host # 需要将iptables规则添加到主机网络 environment: - TZ=Europe/Zurich - VERBOSITY=-vv volumes: # 确保linuxserver-fail2ban配置在容器重启后持久化(也供fail2ban-ui修改配置) - ./fail2ban-config:/config:z # 包含fail2ban.sock的目录,用于fail2ban-ui和fail2ban容器之间的通信 - ./f2b-run:/var/run/fail2ban:z # Fail2Ban容器的日志源 - /var/log:/var/log:ro - /var/log/httpd:/remotelogs/apache2:ro restart: unless-stopped fail2ban-ui: # 使用Docker Hub的预构建镜像(默认) image: swissmakers/fail2ban-ui:latest # 备选:使用Swissmakers registry(备用) # image: registry.swissmakers.ch/infra/fail2ban-ui:latest # 或从源码构建(取消注释使用): # image: localhost/fail2ban-ui:dev container_name: fail2ban-ui privileged: true # 需要,因为fail2ban-ui容器需要修改linuxserver-fail2ban容器中root拥有的配置 network_mode: host environment: # 可选:更改Web界面端口(默认8080) - PORT=3080 # 可选:绑定到特定IP地址(默认:0.0.0.0) # 在使用主机网络时有用,可防止Web UI暴露到未受保护的网络。设置为特定IP(如127.0.0.1或特定接口IP)以限制访问。 # - BIND_ADDRESS=127.0.0.1 volumes: # Fail2Ban UI必需:存储SQLite数据库、应用设置和SSH密钥 - ./config:/config:Z # Fail2Ban UI必需:用于测试logpath是否有效(启用jail前)。没有此只读访问,Fail2Ban UI将无法启用jails(logpath测试会失败) - /var/log:/var/log:ro - /var/log/httpd:/remotelogs/apache2:ro # 将RPM系统(如Rocky Linux)的apache2日志挂载到linuxserver-fail2ban的默认位置(Debian系统为/var/log/apache2,目前在linuxserver-fail2ban容器中硬编码) # Compose本地Fail2Ban实例必需:挂载与linuxserver-fail2ban容器相同的Fail2Ban配置(/config/fail2ban供fail2ban-ui修改配置) - ./fail2ban-config/fail2ban:/etc/fail2ban:z # Compose本地Fail2Ban实例必需:挂载包含fail2ban.sock的同一运行目录,用于fail2ban-ui和linuxserver-fail2ban容器之间的通信 - ./f2b-run:/var/run/fail2ban:z restart: unless-stopped
bash# 编辑docker-compose进行自定义: # - Fail2Ban UI的PORT环境变量 # - 时区(TZ环境变量) # - 卷路径 # 启动两个服务 docker-compose up -d
特性:
host网络模式以实现正确的iptables集成卷结构:
./fail2ban-config/fail2ban → /config/fail2ban(fail2ban容器) ./fail2ban-config/fail2ban → /etc/fail2ban(fail2ban-ui容器) ./f2b-run → /var/run/fail2ban(两个容器) ./config → /config(fail2ban-ui容器)
重要注意事项:
privileged: true以修改root拥有的Fail2Ban配置network_mode: host以实现正确的网络功能:z或:Z标志)如果系统启用了SELinux,必须应用所需的SELinux策略以允许容器与Fail2Ban通信。
策略位于./SELinux/:
bashcd deployment/container/SELinux semodule -i fail2ban-container-ui.pp semodule -i fail2ban-container-client.pp
如果要修改或自行编译SELinux规则:
bashcd deployment/container/SELinux # 编译模块 checkmodule -M -m -o fail2ban-container-client.mod fail2ban-container-client.te # 打包模块 semodule_package -o fail2ban-container-client.pp -m fail2ban-container-client.mod # 安装模块 semodule -i fail2ban-container-client.pp
bashsemodule -l | grep fail2ban
应显示:
fail2ban-container-uifail2ban-container-client症状: 无法访问Web界面
解决方法:
检查容器是否运行:
bashpodman ps | grep fail2ban-ui
检查容器日志:
bashpodman logs
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务