Skip to content

Latest commit

 

History

History
145 lines (99 loc) · 3.36 KB

README_ZH.md

File metadata and controls

145 lines (99 loc) · 3.36 KB

Docker Caddy

一个使用 Docker 运行 Caddy 的开箱即用模板。

包含模块

  • caddy-dns/cloudflare
  • caddy-dns/dnspod
  • caddy-dns/alidns

配置

克隆本仓库

git clone https://github.com/Xm798/docker-caddy.git

修改 compose file

  1. 中国大陆用户可以使用 registry.cn-shanghai.aliyuncs.com/xm798/caddy:latest 代替 xm798/caddy:latest,避免网络原因无法拉取镜像。
  2. 使用 user: 1000:1000 配置用户和用户组(1000:1000 需要配置为想要使用的用户和用户组 id),避免使用 root 用户运行导致的安全风险。
  3. 如果不使用标准端口,自行修改 ports
  4. 如果不想使用网桥,可以直接使用 network_mode: host

配置自动 DNS 质询

Caddyfiles/Caddyfile 中头部的全局配置段中添加对应配置,例如:

Cloudflare:

email user@example.com
acme_dns cloudflare "YOUR_CLOUDFLARE_TOKEN"

阿里 DNS:

email user@example.com
acme_dns alidns {
    access_key_id "YOUR_KEY"
    access_key_secret "YOUR_ID"
    }

配置站点

在 Caddyfiles 文件夹中新建以 .Caddyfile 结尾的文件,例如 proxy.Caddyfile(当然也可以在 Caddyfile 中直接添加,分文件更便于管理),在其中添加站点配置即可。

反向代理

以下配置段可以启动一个反向代理,172.17.0.1:8080 是目标地址,如果容器已经加入了 caddy_default 网络,那么可以直接使用 容器:端口 来指定。

hello.example.com {
  reverse_proxy 172.17.0.1:8080
}

以下配置段可以启动一个后端是 HTTPS 的代理。

https.example.com {
  reverse_proxy https://test.example.com
}

以下配置段可以启动一个后端是 HTTPS 的代理,并且忽略证书验证,这对一些不受信任的自签证书很有效。

https.example.com {
  reverse_proxy {
    to https://10.0.0.10:443
    transport http {
      tls
      tls_insecure_skip_verify
    }
  }
}

PHP

以下配置段可以配置一个需要使用 PHP 的网站。

php83-fpm:9000 是 php-fpm docker 的地址,/srv/php-api 是站点根目录,注意修改。

php-api.example.com {
  root * /srv/php-api
  php_fastcgi php83-fpm:9000
  file_server
}

设置日志

设置日志,可以添加以下 snippet:

import log app_name

会自动将日志存储到 ./log/app_name/access.log 中,并应用 roll 规则。

限制白名单访问反代

使用 import rp_ipwl 10.0.0.8:1234 可以反代一个具有只允许部分 IP 访问的站点,可以参考:一行代码快速配置 Caddy 站点日志——复用 Caddy 配置段 - Cyrus's Blog。白名单 IP 段在 Caddyfilerp_ipwl 中配置。可以很方便的反代只允许在局域网内访问的服务。

使用

创建网络

docker network create  -d bridge caddy_default

创建挂载目录

mkdir data config log srv

如果在 compose file 中指定用户了,需要对应修改权限:

sudo chown -R 1000:1000 .

启动

配置完成后,启动容器:

docker compose up -d

重载

修改 Caddyfile 后,可以使用以下命令来重载配置:

docker exec -w /etc/caddy caddy sh -c "caddy fmt --overwrite && caddy reload"