Wherelse Blog

Caddy2安装与托管静态博客

2021-01-17 · 5 min read
笔记 网络

Caddy2 installation and hosting of static blogs

Caddy2安装

以下操作均为ubuntu环境

源安装(推荐)

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https 
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/cfg/gpg/gpg.155B6D79CA56EA34.key' | sudo apt-key add -
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/cfg/setup/config.deb.txt?distro=debian&version=any-version' | sudo tee -a /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

安装完成后,在命令窗口输入caddy,可以查看caddy相关的命令。

usage:
 caddy <command> [<args...>]

commands:
 adapt           Adapts a configuration to Caddy's native JSON
 build-info      Prints information about this build
 environ         Prints the environment
 file-server     Spins up a production-ready file server
 fmt             Formats a Caddyfile
 hash-password   Hashes a password and writes base64
 help            Shows help for a Caddy subcommand
 list-modules    Lists the installed Caddy modules
 reload          Changes the config of the running Caddy instance
 reverse-proxy   A quick and production-ready reverse proxy
 run             Starts the Caddy process and blocks indefinitely
 start           Starts the Caddy process in the background and then returns
 stop            Gracefully stops a started Caddy process
 trust           Installs a CA certificate into local trust stores
 untrust         Untrusts a locally-trusted CA certificate
 validate        Tests whether a configuration file is valid
 version         Prints the version

下载安装并手动注册linux service

首先到官网下载Caddy2,然后将下载的文件改名为caddy后上传至服务器。

sudo mv caddy /usr/bin/
caddy version #测试是否正常运行
sudo groupadd --system caddy
sudo useradd --system \
    --gid caddy \
    --create-home \
    --home-dir /var/lib/caddy \
    --shell /usr/sbin/nologin \
    --comment "Caddy web server" \
    caddy

下载caddy.service文件,并移动到/etc/systemd/system/caddy.service。然后可以通过以下指令配置caddy运行状态:

sudo systemctl daemon-reload #重载配置
sudo systemctl enable caddy    #启用caddy
sudo systemctl start caddy     #开启caddy
sudo systemctl reload caddy     #应用所有配置文件修改
sudo systemctl status caddy     #查看caddy状态
sudo systemctl stop caddy       #停止caddy

使用官方服务文件时,caddy输出将重定向到journalctl

journalctl -u caddy --no-pager | less

编辑配置文件

Caddy2与Caddy1不同,开始使用json作为默认的配置文件,但是仍然可以使用Caddyfile进行配置,后续内容均使用Caddyfile。默认Caddyfile路径为/etc/caddy,使用vi或nano编辑该文件,若无该文件则手动创建。

cd /etc/caddy
touch Caddyfile #若目录下无配置文件
sudo nano Caddyfile

在配置文件填写以下内容:

your domain {
        root * /root/deploy #你需要发布的文件路径
        encode gzip #开启压缩
        file_server{
            hide .git #隐藏git文件
        }
}

Auto-HTTPS

Caddy的Auto-HTTPS验证有几种方法,这里主要讲一下基于DNS的验证,以Cloudflare为DNS托管服务商为例。首先去Cloudflare控制台,选择站点->获取您的 API 令牌->API令牌->创建令牌->编辑区域DNS->使用模板,选择相关配置后,创建令牌,复制并记录令牌。在Caddyfile中添加一下语句。

tls {
    dns cloudflare $your_token 
}

配置完成后的完整配置:

your domain {
        root * /root/deploy #你需要发布的文件路径
        encode gzip #开启压缩
        file_server{
            hide .git #隐藏git文件
        }
        tls {
        dns cloudflare $your_token 
        }
}

Cloudflare的DNS验证需要Caddy的验证插件,而源安装的版本是不带验证插件的,需要对caddy源文件进行替换,首先去官网下载预编译插件版本源文件,注意选择插件,运行平台后下载。

下载后上传至服务器,并移动源文件至/usr/bin/目录下。

sudo mv caddy /usr/bin/
chmod +x /usr/bin/caddy #赋可执行权限

重启Caddy,并运行caddy list-modules,查看插件是否已在已安装列表中。

这里就完成了Auto-HTTPS的配置。
更详细进一步的配置参考请官方文档。

启动与运行

首先使用caddy validate命令,验证配置文件语法有无错误。

caddy validate --config /etc/caddy/Caddyfile

停止并重新启动caddy

caddy stop
caddy start

将静态网站内容上传至发布目录,配置防火墙端口放行后,网站应该就可以访问了。