cloudflare 树莓派一键部署脚本

非常好,下面是一个`,用于在树莓派上:
• 安装并配置 Cloudflare Tunnel
• 启用 systemd 自动运行 tunnel
• 暴露多个本地服务(WebUI、SSH、NAS)

🧾 你将需要准备:
1. 已注册的域名(在 Cloudflare 上管理)
2. 已在树莓派中登录 Cloudflare(我们会自动处理)

🛠️ 脚本功能概览:

子域 绑定服务 本地端口
webui.example.com 树莓派的 Web 服务 localhost:8000
ssh.example.com SSH 远程连接 localhost:22
nas.example.com 家用 NAS 网页控制台 192.168.1.100:5000

你可根据需要修改这些地址。

🚀 一键部署脚本(cloudflare-tunnel-setup.sh)

#!/bin/bash

========== 参数设置 ==========

TUNNEL_NAME=“rpi-tunnel”
DOMAIN=“example.com”
CF_TUNNEL_DIR=“/etc/cloudflared”

映射的服务(子域名 -> 本地地址)

declare -A SERVICES=(
[“webui”]=“http://localhost:8000”
[“ssh”]=“ssh://localhost:22”
[“nas”]=“http://192.168.1.100:5000”
)

========== 安装 cloudflared ==========

echo “[1/5] 安装 cloudflared…”
sudo mkdir -p “$CF_TUNNEL_DIR”
sudo apt update && sudo apt install -y curl
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb
rm cloudflared.deb

========== 登录 Cloudflare ==========

echo “[2/5] 登录 Cloudflare,请在浏览器中完成授权”
cloudflared tunnel login

========== 创建 tunnel ==========

echo “[3/5] 创建 tunnel:TUNNELNAME"cloudflaredtunnelcreate"TUNNEL_NAME" cloudflared tunnel create "TUNNELNAME"cloudflaredtunnelcreate"TUNNEL_NAME”

获取 tunnel ID

TUNNEL_ID=(cat"(cat "(cat"HOME/.cloudflared/$TUNNEL_NAME.json" | grep ““TunnelID”” | awk -F’"’ ‘{print $4}’)
echo “Tunnel ID: $TUNNEL_ID”

========== 写入 config.yml ==========

echo “[4/5] 写入配置文件…”
sudo tee “$CF_TUNNEL_DIR/config.yml” >/dev/null <<EOF
tunnel: $TUNNEL_ID
credentials-file: HOME/.cloudflared/HOME/.cloudflared/HOME/.cloudflared/{TUNNEL_NAME}.json

ingress:
EOF

for SUB in “${!SERVICES[@]}”; do
echo " - hostname: SUB.{SUB}.SUB.{DOMAIN}" | sudo tee -a “$CF_TUNNEL_DIR/config.yml”
echo " service: KaTeX parse error: Expected '}', got 'EOF' at end of input: {SERVICES[SUB]}" | sudo tee -a “$CF_TUNNEL_DIR/config.yml”
done

fallback

sudo tee -a “$CF_TUNNEL_DIR/config.yml” <<EOF

  • service: http_status:404
    EOF

========== 创建 systemd 服务 ==========

echo “[5/5] 配置 systemd 服务…”

sudo tee /etc/systemd/system/cloudflared.service >/dev/null <<EOF
[Unit]
Description=Cloudflare Tunnel
After=network.target

[Service]
TimeoutStartSec=0
Type=simple
ExecStart=/usr/bin/cloudflared tunnel --config $CF_TUNNEL_DIR/config.yml run

Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target
EOF

启动服务

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable cloudflared
sudo systemctl start cloudflared

echo “✅ Cloudflare Tunnel 部署完成!”
echo “可访问如下地址:”
for SUB in “!SERVICES[@]";doecho"−https://{!SERVICES[@]}"; do echo " - https://!SERVICES[@]";doecho"https://{SUB}.${DOMAIN}”
done

📦 使用方式:

chmod +x cloudflare-tunnel-setup.sh
./cloudflare-tunnel-setup.sh

⚠️ 脚本中默认使用了 cloudflared-linux-arm64.deb 版本,如你是 32 位树莓派,请改成 armhf 版本。

💡 自定义建议
• WebUI 本地端口:可改为 localhost:80 或其他服务
• NAS IP:改为你实际 NAS 的局域网 IP 和端口
• SSH 映射:通过 ssh.example.com 可实现远程 ssh -p 22

如果你希望我进一步生成 systemd 启动失败自动恢复、或加上自动 Cloudflare DNS 记录注册功能,也可以继续帮你扩展。是否需要?

<think>好的,我现在要帮助用户了解如何在Cloudflare Workers上部署一个worker而不使用模板。首先,我需要确认用户对Cloudflare Workers的基础了解程度,可能他们已经有初步认识,但需要具体的步骤指导。 用户提到“没有模板”,所以我应该从最基础的手动部署流程开始。首先,可能需要介绍必要的准备工作,比如安装Node.js和npm,以及Cloudflare的Wrangler CLI工具,这是部署的关键步骤。 接下来,用户可能想知道如何初始化一个项目,这时候需要指导他们使用wrangler init命令,但要注意不要使用模板,所以可能需要手动创建必要的文件,比如index.js和wrangler.toml。这里要详细说明每个文件的作用,特别是wrangler.toml中的配置项,比如账户ID和名称。 然后,需要解释如何编写一个简单的worker示例,比如响应“Hello World”。这部分要确保代码正确,并且说明addEventListener和fetch事件的基本结构。同时,要提到如何本地测试,使用wrangler dev命令,这对调试很重要。 部署部分需要强调运行wrangler deploy命令,并确保用户已经登录了Wrangler,否则需要提前进行认证。可能用户会遇到配置错误,比如缺少account_id,这时候要提醒他们在wrangler.toml中填写正确信息。 另外,用户可能对绑定自定义域名感兴趣,所以需要简要说明如何修改wrangler.toml中的routes和zone_name,但也要提到需要在Cloudflare控制面板中预先配置DNS记录。 最后,确保整个流程没有遗漏步骤,比如安装工具、初始化项目、编写代码、测试和部署。同时,要检查是否所有命令和代码示例都是正确且符合最新Cloudflare Workers的文档,避免过时的信息。可能还需要提醒用户查看官方文档以获取更多高级配置选项,比如环境变量或KV存储的绑定。 总结下来,回答需要结构清晰,分步骤说明,确保用户即使没有使用模板也能顺利手动部署Worker。同时,语言要简洁明了,避免技术术语过多,必要时解释关键概念,帮助用户理解每个步骤的目的和操作方法。</think>以下是手动部署Cloudflare Workers的步骤指南(不使用模板): --- ### 一、准备工作 1. **安装工具** 安装Node.js和npm后,执行: ```bash npm install -g wrangler ``` 2. **登录Wrangler** ```bash wrangler login ``` 浏览器会自动跳转至Cloudflare完成认证 --- ### 二、初始化项目 1. **创建空目录** ```bash mkdir my-worker && cd my-worker ``` 2. **手动创建核心文件** - `index.js`(Worker主代码) - `wrangler.toml`(配置文件) --- ### 三、编写基础Worker 1. **`index.js` 示例** ```javascript addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }) async function handleRequest(request) { return new Response('Hello World', { headers: { 'content-type': 'text/plain' } }) } ``` 2. **`wrangler.toml` 配置** ```toml name = "my-first-worker" account_id = "your_account_id" # 从Cloudflare控制台获取 compatibility_date = "2024-03-01" ``` --- ### 四、本地测试 ```bash wrangler dev ``` 浏览器访问 `localhost:8787` 应显示 "Hello World" --- ### 五、部署到生产环境 ```bash wrangler deploy ``` 成功后会显示形如 `https://my-first-worker.<your-subdomain>.workers.dev` 的访问地址 --- ### 六、绑定自定义域名(可选) 1. 在Cloudflare控制台添加DNS记录 2. 修改 `wrangler.toml`: ```toml [env.production] routes = ["example.com/*"] zone_name = "example.com" ``` --- ### 常见问题排查 1. **账户ID获取**:通过 `wrangler whoami` 查看账户信息 2. **部署失败**:检查API令牌权限是否包含`Workers`读写权限 3. **更新代码**:直接重新运行 `wrangler deploy` 即可 建议后续通过 `wrangler tail` 命令查看实时日志进行调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值