#!/bin/bash

# 安装依赖
apt update -y
apt install jq curl -y

# 设置下载文件夹
DOWNLOAD_DIR="/tmp/caddy_download"
mkdir -p "${DOWNLOAD_DIR}"
cd "${DOWNLOAD_DIR}"

# 获取 GitHub API 中 Caddy 的最新发布的版本信息并解析 JSON 得到版本号
CADDY_VERSION=$(curl -s https://api.github.com/repos/caddyserver/caddy/releases/latest | jq -r '.tag_name' | cut -c 2-)

# 创建 caddy 用户和用户组，仅当它们不存在时
if ! getent group caddy > /dev/null 2>&1; then
    groupadd --system caddy
fi
if ! getent passwd caddy > /dev/null 2>&1; then
    useradd --system --gid caddy --create-home --home-dir /var/lib/caddy --shell /usr/sbin/nologin --comment "Caddy web server" caddy
fi

# 下载并解压 Caddy
wget -q "https://github.com/caddyserver/caddy/releases/download/v${CADDY_VERSION}/caddy_${CADDY_VERSION}_linux_amd64.tar.gz"
tar -xzf "caddy_${CADDY_VERSION}_linux_amd64.tar.gz"

# 将 Caddy 程序移动至 /usr/bin
mv caddy /usr/bin/

# 下载并设置 Caddy 的服务配置文件
wget -q https://raw.githubusercontent.com/caddyserver/dist/master/init/caddy.service
mv caddy.service /etc/systemd/system/

# 创建 Caddy 配置文件
mkdir -p /etc/caddy
cat <<EOF | tee /etc/caddy/Caddyfile
web.example.xxx {
    reverse_proxy 127.0.0.1:3000
}
EOF

# 重新加载 systemctl 配置
systemctl daemon-reload

# 启动并设置 Caddy 服务开机自启
systemctl enable --now caddy

# 写入快捷重载并格式化命令
{
    echo 'reload_caddy() {'
    echo '    caddy fmt --overwrite /etc/caddy/Caddyfile && systemctl reload caddy'
    echo '}'
} | tee -a /etc/profile > /dev/null
source /etc/profile
echo "Caddy 的 reload_caddy 函数已添加到 /etc/profile 并已加载。"

# 清理下载的文件
cd ~
rm -rf "${DOWNLOAD_DIR}"
bash
# 显示完成信息
echo "Caddy 用户和用户组创建完毕，Caddy v${CADDY_VERSION} 安装并启动成功!,请退出终端重新连接"
echo "如果修改了配置文件请使用reload_caddy重新加载caddy"

