SWAG(Secure Web Application Gateway,前身为letsencrypt,与Let's Encrypt™无关联)是一个集成Nginx Web服务器、反向代理、PHP支持、Certbot客户端及fail2ban入侵防护的安全Web应用网关。Certbot客户端可自动完成免费SSL服务器证书(Let's Encrypt和ZeroSSL)的生成与续期流程,为Web应用提供安全访问能力。
运行前准备
yoursubdomain.duckdns.org,子域名可设为www,ftp,cloud(HTTP验证)或wildcard(DNS验证)证书验证方式
/config/dns-conf目录下对应插件的ini(或部分插件的json)文件中填入凭据
wildcard)必要配置
--cap-add=NET_ADMIN参数,确保fail2ban能修改iptables规则https://yourdomain.url访问默认主页(HTTP访问默认禁用,可编辑/config/nginx/site-confs/default.conf启用)SWAG内置多种Certbot插件,若需额外插件,可通过以下步骤安装:
使用Universal Package Install Docker Mod,设置容器环境变量:
yamlDOCKER_MODS=linuxserver/mods:universal-package-install INSTALL_PIP_PACKAGES=certbot-dns-<插件名>
在/config/dns-conf/<插件名>.ini中填入插件所需凭据(参考插件文档)
建议先设置STAGING=true测试插件功能,确认正常后再正式申请证书
证书自动更新
容器启动时会检测URL和子域名变化,自动吊销旧证书并生成新证书
密码保护(htpasswd)
docker exec -it swag htpasswd -c /config/nginx/.htpasswd <用户名>(首次创建用户,-c为创建文件)docker exec -it swag htpasswd /config/nginx/.htpasswd <用户名>(不含-c,避免覆盖现有文件)LDAP认证
可通过LDAP进行安全和访问控制,需配合独立镜像linuxserver/ldap-auth与LDAP服务器通信。容器提供可配置的示例ldap.conf文件
默认配置
/config/nginx/site-confs/default.conf,可修改此文件或添加其他.conf文件至该目录。若删除default.conf,容器启动时会自动生成新文件预设反向代理配置
/config/nginx/proxy_confs目录,参考该目录下README.md启用方法。预设配置来源于https://github.com/linuxserver/reverse-proxy-confs搜索引擎隐藏
在站点配置的server块中、ssl.conf引用行上方添加:
nginxadd_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
可请求搜索引擎不索引站点,注意:长期启用会导致站点从搜索引擎中移除
HTTP转HTTPS重定向
需暴露80端口并配置相应重定向规则
容器自动生成其他应用(如Emby、Znc)所需的证书文件,包括:
cert.pem、chain.pem、fullchain.pem、privkey.pemprivkey.pfx(Windows/.NET应用支持,无密码)priv-fullchain-bundle.pem(私钥与证书链捆绑,适用于Znc等应用)证书共享方法
/config目录挂载至其他容器(如-v /path-to-swag-config:/swag-ssl),证书路径为/swag-ssl/keys/letsencrypt//config/etc目录(如-v /path-to-swag-config/etc:/swag-ssl),证书路径为/swag-ssl/letsencrypt/live/<your.domain.url>/(仅共享证书,不暴露完整配置)默认启用的Jail
容器默认启用5个fail2ban jail:
常用命令
docker exec -it swag fail2ban-client statusdocker exec -it swag fail2ban-client status <jail名称>docker exec -it swag fail2ban-client set <jail名称> unbanip <IP>配置修改
/config/fail2ban/jail.local(而非.conf文件,.conf会在更新时被覆盖,.local文件优先级更高).conf同名的.local文件(如nginx-http-auth.conf对应nginx-http-auth.local),.local内容会追加至.conf配置文件更新策略
反向代理配置更新
app.subdomain.conf.sample重命名为app.subdomain.conf)不会自动更新,需手动对比新示例文件调整从旧版linuxserver/letsencrypt镜像迁移,请参考官方博客指南
bashdocker run -d \ --name=swag \ --cap-add=NET_ADMIN \ -e PUID=1000 \ # 用户ID,默认1000 -e PGID=1000 \ # 组ID,默认1000 -e TZ=Etc/UTC \ # 时区,如Asia/Shanghai -e URL=yourdomain.url \ # 主域名 -e VALIDATION=http \ # 验证方式:http或dns -e SUBDOMAINS=www, `# 可选,子域名列表,逗号分隔` \ -e CERTPROVIDER= `# 可选,证书提供商,默认Let's Encrypt` \ -e DNSPLUGIN=cloudflare `# 可选,DNS验证插件,如cloudflare` \ -e PROPAGATION= `# 可选,DNS传播等待时间(秒)` \ -e EMAIL= `# 可选,接收证书通知的***` \ -e ONLY_SUBDOMAINS=false `# 可选,是否仅为子域名生成证书` \ -e EXTRA_DOMAINS= `# 可选,额外域名,逗号分隔` \ -e STAGING=false `# 可选,是否使用测试环境(避免证书申请限制)` \ -p 443:443 \ # HTTPS端口 -p 80:80 `# 可选,HTTP端口(用于验证或重定向)` \ -v /path/to/appdata/config:/config \ # 配置文件挂载路径 --restart unless-stopped \ # 重启策略 lscr.io/linuxserver/swag:latest
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务