Caddy 是一个新兴的web服务器。它的优点有两个:

  • 自动 https ;

  • 配置简单。

下面记录一下在 Ubuntu (或者其他支持 systemd 的 Linux) 安装 caddy server 的过程。

安装 curl

1
sudo apt install curl

安装 caddy server

1
2
3
4
sudo curl https://getcaddy.com | bash -s personal http.forwardproxy
sudo chown root:root /usr/local/bin/caddy
sudo chmod 755 /usr/local/bin/caddy
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy

其中,personal表示个人使用,http.forwardproxy是可选的、附带安装的插件。

基本配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
sudo groupadd -g 33 www-data
sudo useradd \
  -g www-data --no-user-group \
  --home-dir /var/www --no-create-home \
  --shell /usr/sbin/nologin \
  --system --uid 33 www-data
sudo mkdir /etc/caddy
sudo chown -R root:www-data /etc/caddy
sudo mkdir /etc/ssl/caddy
sudo chown -R root:www-data /etc/ssl/caddy
sudo chmod 0770 /etc/ssl/caddy
sudo touch /etc/caddy/Caddyfile
sudo chown -R www-data:www-data /etc/caddy
sudo chmod 444 /etc/caddy/Caddyfile
sudo mkdir /var/www
sudo chown -R www-data:www-data /var/www
sudo chmod 555 /var/www
sudo mkdir /var/log/caddy
sudo touch /var/log/caddy/access.log
sudo touch /var/log/caddy/errors.log
sudo chown -R www-data:www-data /var/log/caddy
sudo mkdir /var/www/example.com
sudo chown -R www-data:www-data /var/www/example.com
sudo chmod -R 555 /var/www/example.com

其中,/etc/caddy/Caddyfile是配置文件,/var/www/example.com是某个示范网站的根目录。

将 caddy 安装为系统服务(systemd service)

1
2
3
4
5
6
7
sudo wget -P /etc/systemd/system/ \
https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service
sudo chown root:root /etc/systemd/system/caddy.service
sudo chmod 644 /etc/systemd/system/caddy.service
sudo systemctl daemon-reload
sudo systemctl start caddy.service
sudo systemctl enable caddy.service

定时更新 caddy

通过 crond服务定时更新。

1
sudo crontab -e

在文件的末尾加上:

1
34 4 * * * curl https://getcaddy.com | bash -s personal http.forwardproxy && service caddy restart

每天凌晨4点34检查更新。