caddy是Go语言写的轻量级Web服务器,内置自动获取和更新Let's Encrypt SSL证书的功能。如果您采用别的Linux/Unix环境下的Web服务器(nginx、apache)也想自动获取Let's Encrypt证书,建议用acme脚本(https://github.com/Neilpang/acme.sh)。
文档适用于云环境下的CentOS 7.x / Ubuntu 16.x / Debian 9.x
文档基于root身份操作,非root用户需要sudo
0)更新系统到最新
(CentOS)
yum update -y
或(Ubuntu)
apt-get update
apt-get full-upgrade -y
重启系统
1)dns将要用的域名解析到此虚拟机弹性IP(或ELB CNAME)
2)下载、安装caddy
wget https://getcaddy.com -O getcaddy
chmod +x getcaddy
./getcaddy personal
看看caddy安装在什么路径
which caddy
(一般在 /usr/local/bin/caddy)
2-A)(可选),如果要同时安装插件,则:
浏览可选的插件
https://caddyserver.com/download
运行下列格式以安装caddy加插件(比方安装http.ipfilter和http.ratelimit)
./getcaddy personal http.ipfilter,http.ratelimit
3)建立caddy的启动用户
(CentOS)
adduser -r -d /var/www -s /sbin/nologin caddy
或(Ubuntu/Debian)
adduser --system --group --disabled-login --home /var/www --shell /sbin/nologin caddy
4)建立/授权相关目录、文件
mkdir /etc/caddy
chown -R root:caddy /etc/caddy
touch /etc/caddy/Caddyfile
mkdir /etc/ssl/caddy
chown -R caddy:root /etc/ssl/caddy
chmod 0770 /etc/ssl/caddy
mkdir /var/www
chown caddy:caddy /var/www
5)下载systemctl自启动文件
curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service
6)修改自启动文件
vi /etc/systemd/system/caddy.service
从
; User and group the process will run as.
User=www-data
Group=www-data
改为
; User and group the process will run as.
User=caddy
Group=caddy
7)激活systemctl服务
systemctl daemon-reload
systemctl enable caddy
systemctl status caddy
8)(可选,仅CentOS),关闭防火墙(如果之前没关闭的话)
systemctl status firewalld
systemctl stop firewalld
systemctl mask firewalld
如果不想关闭,可以加如下规则
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
9)(可选)部署测试站点
echo '<h1>Hello World!</h1>' | tee /var/www/index.html
vi /etc/caddy/Caddyfile
内容
http:// {
root /var/www
gzip
}
保存后运行
systemctl start caddy
systemctl status caddy
如果在Debian上启动显示绑定端口失败(拒绝权限),是Debian系统默认不允许绑定低位端口,要执行:
apt-get install libcap2-bin -y
setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/caddy
(caddy路径如果不对,可通过which caddy得出)
浏览网站
http://你的ip
10)设为TLS站点(自动获取、更新Let's Encrypt的SSL证书)
vi /etc/caddy/Caddyfile
改内容为(域名和邮件地址只是举例,需要替换为实际域名和邮件地址)
example.com {
root /var/www
gzip
tls sammy@example.com
}
重启服务
systemctl restart caddy
systemctl status caddy
浏览网站
https://你的域名
应可以看到证书是OK的(绿色)
11)(可选)配合v2ray的示例设置
vi /etc/caddy/Caddyfile
内容(假定v2ray的inbound监听端口是10000——注意v2ray监听127.0.0.1即可)
example.com {
root /var/www
proxy /ray localhost:10000 {
websocket
header_upstream -Origin
}
tls sammy@example.com
}
重启服务
systemctl restart caddy
systemctl status caddy
推荐阅读