惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
J
Java Code Geeks
Jina AI
Jina AI
罗磊的独立博客
宝玉的分享
宝玉的分享
S
SegmentFault 最新的问题
D
DataBreaches.Net
博客园 - 叶小钗
腾讯CDC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google DeepMind News
Google DeepMind News
阮一峰的网络日志
阮一峰的网络日志
B
Blog
V
Visual Studio Blog
雷峰网
雷峰网
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
Engineering at Meta
Engineering at Meta
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

繁星点点

最新轻量级龙虾部署教程 通过netboot.xyz重装系统 giffgaff卡保号教程 Llinux系统中全新透明代理方案(可代理所有出站流量) tailscale开启子网路由常见的坑 OpenWrt固件编译 解决UFW和Docker的问题 使用PGP的非对称算法加密文件 NSSM工具把任意exe程序注册为Windows后台服务 轻量级简约端口转发rinetd 安卓IDE的安装和使用 IP信息查询网站汇总 热点共享代理教程 SSH使用密钥认证登录详细解释 Debian系统公网IP出口切换指南,适用多IP服务器 Windows系统安装Scoop包管理器 安卓Flutter开发学习笔记 使用手机搭建节点服务端 关于github提交记录泄露真实邮箱的处理办法 anytls协议部署教程 通过gitlab流水线自动备份仓库 通过CF-Workers代理访问网站 低配机器使用alpine系统跑docker 端口敲门教程 3x-ui面板通过api管理示例 nmap端口扫描 数据库常用命令 snap和winget包管理器 Git推送GitHub常用命令 😩😩😩学不完,根本学不完😩😩😩
caddy给域名用上ECH加密
2025-04-24 · via 繁星点点

caddy2.10.0正式版本 已经加入了ECH的支持

要使用caddy自动配置ech则需要编译cloudflare dns插件,用于caddy自动添加DNS记录

编译caddy并加入cloudflare DNS插件的支持

1:一键安装go环境

bash <(curl -sSL https://cdn.jsdelivr.net/gh/sky22333/shell@main/go.sh)

2:下载xcaddy

go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest

3:编译带cloudflare dns插件的caddy

xcaddy build --with github.com/caddy-dns/cloudflare

此时你的当前目录会生成一个已经包含了cloudflare dns插件的caddy二进制文件

debug模式测试运行

创建/etc/caddy/Caddyfile文件,并写入以下文件

{
    debug
    dns cloudflare xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ech ech.example.com

    log {
        output stdout
        format console
        level DEBUG
    }
}

test.example.com {
    root * /tmp
    file_server browse
    encode zstd gzip
}

配置说明

dns cloudflare这个配置填CF的区域 DNS API 令牌

ech ech.example.com替换你的任意二级域名,并且解析到你的IP,用于发布ECH公钥,或者第三方提供的ECH配置服务域名也行。

test.example.com替换你的域名,并且解析到你的IP,不要开小黄云

root * /tmp这个配置代表以网页浏览文件的形式,浏览你服务器的/tmp目录,这里只是测试为了方便起服务

启动caddy

sudo ./caddy run --config /etc/caddy/Caddyfile --adapter caddyfile

不出意外的话就启动成功了,然后可以访问你的域名看下是否能成功访问

并且/root/.local/share/caddy目录会生成一个锁文件,如果需要重新部署则需要删除这个目录

CF里也会自动添加一个类型为HTTPS的解析记录

检查ech是否配置成功

dig test.example.com TYPE65

执行这个命令后,在输出的信息里可以看到有如下类似的信息就代表启用成功

ech=AEr+DQBGlwAgACBVSsnixVAfd/Ca9HP9JTf2O+B1kynOkZIwAMASDASDQABAAIASDASDADHw9lY2guZXhhbXBsZS5jb20AAA==

生产环境

移动二进制文件

mv ~/caddy /usr/bin/caddy

创建系统服务配置

touch /etc/systemd/system/caddy.service

写入配置

[Unit]
Description=Caddy Web Server
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Wants=network-online.target

[Service]
User=root
Group=root
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target

管理命令

# 重新加载 systemd 配置
sudo systemctl daemon-reexec
sudo systemctl daemon-reload

# 启动 Caddy
sudo systemctl start caddy

# 设置开机启动
sudo systemctl enable caddy

# 查看运行状态
sudo systemctl status caddy

生产环境反代配置示例

{
	dns cloudflare xxxxxxxxxxxxxxxxxxxxx
	ech ech.example.com
}

test.example.com {
	reverse_proxy localhost:8080
}

重新部署记得删除:/root/.local/share/caddy锁文件,和CF里的HTTPS解析记录