使用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
}
|