20230924 nuos0tel
今天把 home-lab 跑的各种 WEB 服务去掉了 Caddy,直接由 Traefik 反代。 之前因为不想每次起新服务时手动添加 Caddy 记录,所以使用了 On-Demand TLS。启用这个功能后,一旦一直被外部使用不存在的域名尝试访问,就会一直发起质询,直到被滥用限制熔断。所以我写了一个脚本来拒绝 caddy...
今天把 home-lab 跑的各种 WEB 服务去掉了 Caddy,直接由 Traefik 反代。
之前因为不想每次起新服务时手动添加 Caddy 记录,所以使用了 On-Demand TLS。启用这个功能后,一旦一直被外部使用不存在的域名尝试访问,就会一直发起质询,直到被滥用限制熔断。所以我写了一个脚本来拒绝 caddy 对我不可能用到的域名申请证书。目前看来,有很大的缓解,但是还是有比较多的漏网之鱼。
我从入手第一个 All in One 主机时,就已经使用 Caddy 了,后面服务越来越多,就在后面套了一个 Traefik 做服务发现,方便我管理和反向代理各个服务。这次为了避免滥用签发机构的 API,所以直接去掉 Caddy 了,让 Traefik 直接上前线,同时自动签发证书的任务也交给它了。
我是使用 Docker Compose 部署绝大部分服务的,Traefik 也是,所以启用这个功能需要做以下几步:
- 开启 Traefik 自动申请证书:
在 Traefik 的启动命令追加以下几条:
--entrypoints.websecure.Address=:443
--certificatesresolvers.le.acme.tlschallenge=true
--certificatesresolvers.le.acme.email="your@email.address"
--certificatesresolvers.le.acme.storage="/acme/acme.json"
--certificatesresolvers.le.acme.httpchallenge.entrypoint=web
--certificatesresolvers.le.acme.caserver=https://acme-v02.api.letsencrypt.org/directory
/acme/acme.json 所有证书的保存位置,请根据自己的需要配置。email 填写自己的邮箱地址。
- 在每个需要启用 HTTPS 的服务的 labels 添加以下两行:
- 'traefik.http.routers.your-service.tls=true'
- 'traefik.http.routers.your-service.tls.certresolver=le'
注意 your-service 要替换成你的路由名称。le 是上一步设置的证书解析器的名称。
- 自动从 HTTP 跳转至 HTTPS
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
- "traefik.http.routers.redirs.rule=hostregexp(`{host:.+}`)"
- "traefik.http.routers.redirs.entrypoints=web"
- "traefik.http.routers.redirs.middlewares=redirect-to-https"
将上面几行追加到 Traefik 启动命令上,就能实现自动跳转。注意所有 WEB 服务都必须要配 HTTPS 访问。