Update 自动部署并配置 cloudflared 隧道服务

This commit is contained in:
2025-11-18 13:11:10 +08:00
committed by GitHub
parent 68ea85f4d6
commit 1de4bfbe94

View File

@@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# cloudflared Docker 容器化一键部署脚本 # cloudflared Docker 容器化一键部署脚本
# 功能:自动部署并配置 cloudflared 隧道服务,支持选择密钥和服务器位置 # 功能:自动部署并配置 cloudflared 隧道服务
set -e # 遇到任何错误立即退出脚本 set -e # 遇到任何错误立即退出脚本
@@ -12,15 +12,12 @@ YELLOW='\033[1;33m'
BLUE='\033[0;34m' BLUE='\033[0;34m'
NC='\033[0m' # 无颜色 NC='\033[0m' # 无颜色
# 默认 Cloudflare Tunnel 令牌 # 定义两个不同的密钥和服务器类型
DEFAULT_CF_TUNNEL_TOKEN="eyJhIjoiYmI2OTg1ZGU4N2ZiMDEyYjNjNjI2YWExM2VkYTY3OTciLCJ0IjoiNGYyMjNhM2UtNWNjYy00ZmMwLWI1N2MtNjQzZGY5ZmI1ZWZmIiwicyI6Ik1qTmxOR1U0WmpndE5ERXlPQzAwTjJKaExUazNaVFl0WVRWaU5tUmtObVkxTkdSaSJ9" CF_TOKEN_1="eyJhIjoiYmI2OTg1ZGU4N2ZiMDEyYjNjNjI2YWExM2VkYTY3OTciLCJ0IjoiNGYyMjNhM2UtNWNjYy00ZmMwLWI1N2MtNjQzZGY5ZmI1ZWZmIiwicyI6Ik1qTmxOR1U0WmpndE5ERXlPQzAwTjJKaExUazNaVFl0WVRWaU5tUmtObVkxTkdSaSJ9"
SERVER_1="国内服务器"
# 用户提供的 Cloudflare Tunnel 令牌 CF_TOKEN_2="eyJhIjoiYmI2OTg1ZGU4N2ZiMDEyYjNjNjI2YWExM2VkYTY3OTciLCJ0IjoiOWRhNTU2YmMtMWZhNC00Njg2LTg1YTQtZTczOTQ1YmEwMGNmIiwicyI6Ik5XWTNPV05tTkRjdFltVTBOQzAwTkRkaExXRm1ZVEF0T1daaE9XRTVaVFUyTWpRMSJ9"
USER_CF_TUNNEL_TOKEN="eyJhIjoiYmI2OTg1ZGU4N2ZiMDEyYjNjNjI2YWExM2VkYTY3OTciLCJ0IjoiOWRhNTU2YmMtMWZhNC00Njg2LTg1YTQtZTczOTQ1YmEwMGNmIiwicyI6Ik5XWTNPV05tTkRjdFltVTBOQzAwTkRkaExXRm1ZVEF0T1daaE9XRTVaVFUyTWpRMSJ9" SERVER_2="香港服务器"
# 当前使用的令牌
CF_TUNNEL_TOKEN=""
SERVER_LOCATION=""
# 输出带颜色的信息函数 # 输出带颜色的信息函数
log_info() { log_info() {
@@ -130,8 +127,6 @@ deploy_cloudflared() {
# 运行 cloudflared 容器 # 运行 cloudflared 容器
log_info "启动 cloudflared 隧道服务..." log_info "启动 cloudflared 隧道服务..."
log_info "服务器位置: ${SERVER_LOCATION}"
docker run -d \ docker run -d \
--name ${container_name} \ --name ${container_name} \
--restart=unless-stopped \ --restart=unless-stopped \
@@ -165,7 +160,6 @@ verify_deployment() {
echo "" echo ""
log_info "容器名称: ${container_name}" log_info "容器名称: ${container_name}"
log_info "运行状态: ${status}" log_info "运行状态: ${status}"
log_info "服务器位置: ${SERVER_LOCATION}"
log_info "数据目录: /data/cloudflared/" log_info "数据目录: /data/cloudflared/"
log_info "配置目录: /data/cloudflared/config" log_info "配置目录: /data/cloudflared/config"
log_info "日志目录: /data/cloudflared/logs" log_info "日志目录: /data/cloudflared/logs"
@@ -205,58 +199,34 @@ show_usage() {
echo "" echo ""
} }
# 选择使用哪个令牌 # 选择密钥和服务器
select_token() { select_token() {
echo "" echo ""
log_info "请选择要使用的 Cloudflare Tunnel Token:" log_step "请选择要使用的隧道配置:"
echo "1. 使用默认密钥" echo "1) 使用默认密钥 ($SERVER_1)"
echo "2. 使用用户提供的密钥" echo "2) 使用备用密钥 ($SERVER_2)"
echo "" echo ""
while true; do while true; do
read -p "请输入选择 (1/2): " choice read -p "请输入选择 (12): " choice
case $choice in case $choice in
1) 1)
CF_TUNNEL_TOKEN=$DEFAULT_CF_TUNNEL_TOKEN CF_TUNNEL_TOKEN=$CF_TOKEN_1
log_info "已选择使用默认密钥" SERVER_TYPE=$SERVER_1
break break
;; ;;
2) 2)
CF_TUNNEL_TOKEN=$USER_CF_TUNNEL_TOKEN CF_TUNNEL_TOKEN=$CF_TOKEN_2
log_info "已选择使用用户提供的密钥" SERVER_TYPE=$SERVER_2
break break
;; ;;
*) *)
log_error "无效选择,请输入 1 或 2" echo "无效选择,请重新输入"
;; ;;
esac esac
done done
}
# 选择服务器位置
select_server_location() {
echo ""
log_info "请选择服务器位置:"
echo "1. 国内服务器"
echo "2. 香港服务器"
echo ""
while true; do log_info "已选择: $SERVER_TYPE"
read -p "请输入选择 (1/2): " choice
case $choice in
1)
SERVER_LOCATION="国内服务器"
break
;;
2)
SERVER_LOCATION="香港服务器"
break
;;
*)
log_error "无效的选择,请输入 1 或 2"
;;
esac
done
} }
# 主执行函数 # 主执行函数
@@ -265,8 +235,9 @@ main() {
log_info "🚀 开始部署 Cloudflare Tunnel Docker 容器..." log_info "🚀 开始部署 Cloudflare Tunnel Docker 容器..."
log_info "==========================================" log_info "=========================================="
# 让用户选择密钥
select_token select_token
select_server_location
validate_token validate_token
check_docker check_docker
prepare_directories prepare_directories
@@ -275,8 +246,7 @@ main() {
log_info "==========================================" log_info "=========================================="
log_info "✅ Cloudflare Tunnel 部署完成!" log_info "✅ Cloudflare Tunnel 部署完成!"
log_info "隧道已使用提供的 Token 进行认证" log_info "隧道已使用 $SERVER_TYPE 的 Token 进行认证"
log_info "服务器位置: ${SERVER_LOCATION}"
show_usage show_usage
} }