Linux 安装 Caddy 服务
Caddy 是一个功能强大的、企业级的、开源的 Web 服务器,具有自动 HTTPS 功能。本文介绍在不同 Linux 发行版系统上安装 Caddy 的多种方法。
什么是 Caddy
Caddy 是一个现代化的 Web 服务器,主要特点包括:
- 自动 HTTPS:自动为域名配置 SSL/TLS 证书
- HTTP/2 和 HTTP/3:支持最新的 HTTP 协议
- 反向代理:强大的反向代理功能
- 易于配置:简洁的 Caddyfile 配置语法
- 高性能:基于 Go 语言开发,性能优异
安装方法
方法一:Debian/Ubuntu/Raspbian
Caddy 官方提供了 Debian/Ubuntu/Raspbian 的软件包,这是最推荐的安装方式。
稳定版本
# 安装必要的工具
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
# 添加 Caddy 官方 GPG 密钥
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
# 添加 Caddy 软件源
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
# 设置密钥和源文件权限
sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list
# 更新软件包列表
sudo apt update
# 安装 Caddy
sudo apt install caddy
测试版本(包含 beta 和 RC 版本)
如果需要使用测试版本,可以使用以下命令:
# 安装必要的工具
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
# 添加 Caddy 测试版 GPG 密钥
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/testing/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-testing-archive-keyring.gpg
# 添加 Caddy 测试版软件源
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/testing/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-testing.list
# 设置密钥和源文件权限
sudo chmod o+r /usr/share/keyrings/caddy-testing-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-testing.list
# 更新软件包列表
sudo apt update
# 安装 Caddy
sudo apt install caddy
注意:安装完成后,Caddy 会自动作为 systemd 服务启动并运行。服务名称为 caddy。
如果由于网络问题无法通过 curl 下载 gpg.key 和 debian.deb.txt 文件,可以参考 常见问题 中的解决办法。
方法二:Fedora/RedHat/CentOS
Fedora
# 安装 dnf5 插件
sudo dnf install dnf5-plugins
# 启用 Caddy COPR 仓库
sudo dnf copr enable @caddy/caddy
# 安装 Caddy
sudo dnf install caddy
CentOS/RHEL
# 安装 dnf 插件
sudo dnf install dnf-plugins-core
# 启用 Caddy COPR 仓库
sudo dnf copr enable @caddy/caddy
# 安装 Caddy
sudo dnf install caddy
注意:安装完成后,Caddy 的 systemd 服务文件已安装但默认未启用。需要手动启用和启动服务。
方法三:Arch Linux/Manjaro
# 更新软件包列表
sudo pacman -Syu
# 安装 Caddy
sudo pacman -S caddy
注意:Arch Linux 的 Caddy 包包含修改过的 systemd 服务文件,默认未启用。
方法四:Docker
使用 Docker 安装 Caddy 是最简单的方式之一:
# 拉取 Caddy 官方镜像
docker pull caddy
# 运行 Caddy 容器
docker run -d --name caddy \
-p 80:80 -p 443:443 \
-v $PWD/Caddyfile:/etc/caddy/Caddyfile \
-v caddy_data:/data \
-v caddy_config:/config \
caddy
Docker Compose 配置
推荐使用 Docker Compose 来管理 Caddy:
version: '3.8'
services:
caddy:
image: caddy:latest
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
volumes:
caddy_data:
caddy_config:
方法五:静态二进制文件
如果上述方法都不适用,可以下载静态二进制文件:
-
从 GitHub 下载:
- 访问 Caddy Releases
- 下载对应架构的二进制文件
- 参考 验证资产签名 验证文件
-
从下载页面获取:
- 访问 Caddy 下载页面
-
安装到系统路径:
# 下载二进制文件wget https://github.com/caddyserver/caddy/releases/latest/download/caddy_2.7.6_linux_amd64.tar.gz# 解压tar -xzf caddy_2.7.6_linux_amd64.tar.gz# 移动到系统路径sudo mv caddy /usr/local/bin/# 设置执行权限sudo chmod +x /usr/local/bin/caddy -
配置为 systemd 服务(推荐): 创建
/etc/systemd/system/caddy.service文件:caddy.service[Unit]Description=CaddyDocumentation=https://caddyserver.com/docs/After=network.target network-online.targetRequires=network-online.target[Service]Type=notifyUser=caddyGroup=caddyExecStart=/usr/local/bin/caddy run --environ --config /etc/caddy/CaddyfileExecReload=/usr/local/bin/caddy reload --config /etc/caddy/Caddyfile --forceTimeoutStopSec=5sLimitNOFILE=1048576LimitNPROC=512PrivateTmp=trueProtectSystem=fullAmbientCapabilities=CAP_NET_BIND_SERVICECapabilityBoundingSet=CAP_NET_BIND_SERVICE[Install]WantedBy=multi-user.target然后启用并启动服务:
sudo systemctl daemon-reloadsudo systemctl enable caddysudo systemctl start caddy
验证安装
安装完成后,可以通过以下命令验证:
# 检查 Caddy 版本
caddy version
# 检查 Caddy 是否运行(如果使用 systemd)
sudo systemctl status caddy
# 测试 Caddy 是否响应
curl http://localhost
管理 Caddy 服务
如果 Caddy 作为 systemd 服务安装,可以使用以下命令管理:
# 启动服务
sudo systemctl start caddy
# 停止服务
sudo systemctl stop caddy
# 重启服务
sudo systemctl restart caddy
# 重新加载配置(不中断服务)
sudo systemctl reload caddy
# 查看服务状态
sudo systemctl status caddy
# 设置开机自启
sudo systemctl enable caddy
# 禁用开机自启
sudo systemctl disable caddy
# 查看日志
sudo journalctl -u caddy -f
配置文件
Caddy 的配置文件通常位于:
- Caddyfile:
/etc/caddy/Caddyfile(使用包管理器安装) - JSON 配置:
/etc/caddy/config.json(高级配置)
基本 Caddyfile 示例
# 静态文件服务
localhost {
root * /var/www/html
file_server
}
# 反向代理示例
example.com {
reverse_proxy localhost:8080
}
# 自动 HTTPS
mysite.com {
root * /var/www/mysite
file_server
}
升级 Caddy
使用包管理器升级
Debian/Ubuntu:
sudo apt update
sudo apt upgrade caddy
Fedora/CentOS:
sudo dnf update caddy
Arch Linux:
sudo pacman -Syu caddy
升级静态二进制文件
# 使用 caddy upgrade 命令(如果可用)
caddy upgrade
# 或手动替换二进制文件
# 1. 下载新版本
# 2. 停止 Caddy 服务
sudo systemctl stop caddy
# 3. 替换二进制文件
sudo mv /usr/local/bin/caddy /usr/local/bin/caddy.old
sudo cp caddy /usr/local/bin/
# 4. 启动服务
sudo systemctl start caddy
常见问题
1. 中国大陆网络问题(Debian/Ubuntu)
在中国大陆,由于网络限制,可能无法直接执行 curl 命令下载 Caddy 的 GPG 密钥和软件源配置。有以下几种解决方案:
方案一:使用国内地址替换原始 URL
可以使用我们提供的镜像地址替换原始 URL:
# 添加 Caddy 官方 GPG 密钥
curl -1sLf 'https://getiot.tech/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
# 添加 Caddy 软件源
curl -1sLf 'https://getiot.tech/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
方案二:手动下载并上传文件
-
在能访问外网的机器上下载文件:
# 下载 GPG 密钥curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' -o caddy-stable-archive-keyring.gpg# 下载软件源配置curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' -o caddy-stable.list或直接使用浏览器下载这两个文件,并修改文件名。
-
将文件上传到服务器:
使用
scp或其他方式将文件上传到服务器:scp caddy-stable-archive-keyring.gpg user@your-server:/tmp/scp caddy-stable.list user@your-server:/tmp/ -
在服务器上安装:
# 安装必要的工具sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https# 导入 GPG 密钥sudo gpg --dearmor < /tmp/caddy-stable-archive-keyring.gpg | sudo tee /usr/share/keyrings/caddy-stable-archive-keyring.gpg > /dev/null# 复制软件源配置sudo cp /tmp/caddy-stable.list /etc/apt/sources.list.d/caddy-stable.list# 设置权限sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpgsudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list# 更新软件包列表sudo apt update# 安装 Caddysudo apt install caddy
2. 端口被占用
如果 80 或 443 端口被占用,可以:
# 检查端口占用
sudo netstat -tulpn | grep :80
sudo netstat -tulpn | grep :443
# 或使用 ss 命令
sudo ss -tulpn | grep :80
3. 权限问题
Caddy 需要绑定 80/443 端口,需要相应权限:
- 使用
CAP_NET_BIND_SERVICE能力(推荐) - 或使用 root 用户运行(不推荐)
4. 防火墙配置
确保防火墙允许 HTTP 和 HTTPS 流量:
# Ubuntu/Debian (ufw)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# CentOS/RHEL (firewalld)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload