跳至主要內容

编译 Caddy 并使用

MonoLogueChiLinux大约 1 分钟

前面有说过 nginx-quic 编译和使用,这篇文章就来简单记录一下 Caddy 的编译和使用。

基本环境

一台 Linux 服务器,这里使用 Ubuntu23.04 系统。

安装 git

sudo apt update
sudo apt install git

安装 xcaddy

详见 https://github.com/caddyserver/xcaddyopen in new window

安装 go

这里有一点特别,因为我不做 go 相关的开发,所以没必要全局安装 go。

$HOME 下创建目录,xcaddy

cd $HOME
mkdir xcaddy

下载 go

cd xcaddy
wget https://go.dev/dl/go1.20.4.linux-amd64.tar.gz  # 替换为最新版本

解压

tar -zxvf go*.linux-amd64.tar.gz && rm go*.linux-amd64.tar.gz

编译构建

在 xcaddy 目录下创建脚本 build.sh

touch build.sh

内容为

#!/bin/bash

# 设置环境变量
export PATH=$HOME/xcaddy/go/bin/:$PATH
export GOPATH=$HOME/xcaddy/gopath

# 编译caddy
xcaddy build v2.7.0-beta.1 --output ./ \
--with github.com/caddy-dns/alidns \
--with github.com/caddy-dns/dnspod \
--with github.com/abiosoft/caddy-exec \
--with github.com/WingLim/caddy-webhook \
--with github.com/ueffel/caddy-brotli

执行脚本

sh ./build.sh

其他文件

创建 caddy.service 备用

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

[Service]
Type=notify
User=ubuntu   ;改为你自己的 User
Group=ubuntu  ;改为你自己的 Group
ExecStart=/usr/bin/caddy run --environ --config /home/ubuntu/www/caddy/Caddyfile   ;改为你自己的路径
ExecReload=/usr/bin/caddy reload --config /home/ubuntu/www/caddy/Caddyfile --force ;改为你自己的路径
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateDevices=yes
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target