Caddy构建脚本

使用docker构建caddy二进制

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
FROM docker.202816.xyz/library/caddy:builder AS builder
ENV GOPROXY=https://goproxy.cn
RUN xcaddy build \
    --with github.com/ysicing/caddy2-geocn \
    --with github.com/caddy-dns/cloudflare \
    --with github.com/caddy-dns/dnspod \
    --with github.com/caddy-dns/alidns \
    --with github.com/caddy-dns/acmedns \
    --with github.com/caddy-dns/godaddy \
    --with github.com/caddy-dns/digitalocean \
    --with github.com/caddy-dns/duckdns \
    --with github.com/caddy-dns/namecheap \
    --with github.com/caddy-dns/dynv6 \
    --with github.com/caddy-dns/route53
1
docker build -t caddy_custom_build .

从容器中拷贝文件到宿主机

1
2
3
4
5
docker create --name extract caddy_custom_build
docker cp extract:/usr/bin/caddy ./caddy
docker rm extract
chmod +x caddy
./caddy list-modules

geocn插件使用样例

实现屏蔽国内访问, 作者改了代码, 但是文档没更新, 坑爹

下载数据库

1
2
3
4
cd /etc/caddy
wget https://ghfast.top/https://github.com/Hackl0us/GeoIP2-CN/raw/release/Country.mmdb
## 或者
wget https://cdn.jsdelivr.net/gh/Hackl0us/GeoIP2-CN@release/Country.mmdb
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
        @geofilter {
           not path /uploads/*  # 排除一些路径在外
           geocn {
              geolocal "/etc/caddy/Country.mmdb"
            }
        }

        handle @geofilter {
           header Content-Type text/html
           respond <<HTML
                <!DOCTYPE html>
                <html lang="en">
                <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Notice</title></head>
                <body>
                     # 自定义的页面
                </body>
                </html>
               HTML 200
        }
Licensed under CC BY-NC-SA 4.0
记录平时瞎折腾遇到的各种问题, 方便查找
使用 Hugo 构建
主题 Stack 3.29.0Jimmy 设计