lsiodev/swagSWAG(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规则[***]访问默认主页(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和子域名变化,自动吊销旧证书并生成新证书
docker exec -it swag htpasswd -c /config/nginx/.htpasswd <用户名>(首次创建用户,-c为创建文件)docker exec -it swag htpasswd /config/nginx/.htpasswd <用户名>(不含-c,避免覆盖现有文件)可通过LDAP进行安全和访问控制,需配合独立镜像linuxserver/ldap-auth与LDAP服务器通信。容器提供可配置的示例ldap.conf文件
/config/nginx/site-confs/default.conf,可修改此文件或添加其他.conf文件至该目录。若删除default.conf,容器启动时会自动生成新文件/config/nginx/proxy_confs目录,参考该目录下README.md启用方法。预设配置来源于reverse-proxy-confs仓库在站点配置的server块中、ssl.conf引用行上方添加:
nginxadd_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
可请求搜索引擎不索引站点,注意:长期启用会导致站点从搜索引擎中移除
需暴露80端口并配置相应重定向规则
容器自动生成其他应用(如Emby、Znc)所需的证书文件,包括:
cert.pem、chain.pem、fullchain.pem、privkey.pemprivkey.pfx(Windows/.NET应用支持,无密码)priv-full***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>/(仅共享证书,不暴露完整配置)容器默认启用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内容会追加至.confapp.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
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务