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

This commit is contained in:
2025-11-18 13:01:43 +08:00
committed by GitHub
parent fb5f4a5b3d
commit 68ea85f4d6

View File

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