Skip to content

Instantly share code, notes, and snippets.

@Restry
Last active April 25, 2020 10:53
Show Gist options
  • Select an option

  • Save Restry/9b5733e623a06c57d7c43c9743522cd4 to your computer and use it in GitHub Desktop.

Select an option

Save Restry/9b5733e623a06c57d7c43c9743522cd4 to your computer and use it in GitHub Desktop.
自动配置caddy ,运行 bash <(curl -s -L https://git.io/JftUm)
systemd=true
sys_bit=$(uname -m)
is_path=true
v2ray_transport=4
path=about
v2ray_port=24000
email=michael.keepgoing #申请ssl时的邮箱
proxy_site=https://developer.mozilla.org # 代理跳转到的网址
domain=windart-api.chinanorth.cloudapp.chinacloudapi.cn # ssl申请时必需要的域名
do_service() {
if [[ $systemd ]]; then
systemctl $1 $2
else
service $2 $1
fi
}
_download_caddy_file() {
caddy_tmp="/tmp/install_caddy/"
caddy_tmp_file="/tmp/install_caddy/caddy.tar.gz"
[[ -d $caddy_tmp ]] && rm -rf $caddy_tmp
if [[ $sys_bit == "i386" || $sys_bit == "i686" ]]; then
local caddy_download_link="https://caddyserver.com/download/linux/386?license=personal"
else
local caddy_download_link="https://caddyserver.com/download/linux/amd64?license=personal"
fi
mkdir -p $caddy_tmp
if ! wget --no-check-certificate -O "$caddy_tmp_file" $caddy_download_link; then
echo -e "$red 下载 Caddy 失败!$none" && exit 1
fi
tar zxf $caddy_tmp_file -C $caddy_tmp
cp -f ${caddy_tmp}caddy /usr/local/bin/
if [[ ! -f /usr/local/bin/caddy ]]; then
echo -e "$red 安装 Caddy 出错!" && exit 1
fi
}
_install_caddy_service() {
setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/caddy
if [[ $systemd ]]; then
cp -f ${caddy_tmp}init/linux-systemd/caddy.service /lib/systemd/system/
# sed -i "s/www-data/root/g" /lib/systemd/system/caddy.service
sed -i "s/on-abnormal/always/" /lib/systemd/system/caddy.service
systemctl enable caddy
else
cp -f ${caddy_tmp}init/linux-sysvinit/caddy /etc/init.d/caddy
# sed -i "s/www-data/root/g" /etc/init.d/caddy
chmod +x /etc/init.d/caddy
update-rc.d -f caddy defaults
fi
mkdir -p /etc/ssl/caddy
if [ -z "$(grep www-data /etc/passwd)" ]; then
useradd -M -s /usr/sbin/nologin www-data
fi
chown -R www-data.www-data /etc/ssl/caddy
mkdir -p /etc/caddy/
}
install_caddy() {
# download caddy file then install
_download_caddy_file
_install_caddy_service
caddy_config
}
caddy_config() {
# local email=$(shuf -i1-10000000000 -n1)
case $v2ray_transport in #传输协议
4)
if [[ $is_path ]]; then
cat >/etc/caddy/Caddyfile <<-EOF
$domain {
tls ${email}@gmail.com
gzip
timeouts none
proxy / $proxy_site {
except /${path}
}
proxy /${path} 127.0.0.1:${v2ray_port} {
without /${path}
websocket
}
}
import sites/*
EOF
else
cat >/etc/caddy/Caddyfile <<-EOF
$domain {
tls ${email}@gmail.com
timeouts none
proxy / 127.0.0.1:${v2ray_port} {
websocket
}
}
import sites/*
EOF
fi
;;
esac
# systemctl restart caddy
do_service restart caddy
}
install_caddy
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment