
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
使用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
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务