Files
ykxmz/docs/免费托管方案.md
T
xmz7891 494b6e5671 加一份免费托管方案调研文档
用户问:网上有没有免费办法托管中转服务。

查了协议架构:全是 HTTP 长轮询(agent/register、agent/poll、
agent/send、agent/bye),没有裸 TCP —— 所以托管选择面很宽。
另外 relay.py 是纯 Python 标准库、零第三方依赖、仅 150 KB、
实测内存 23 MB / CPU 0.1%,任何免费实例都装得下。

关键洞察:一旦有了公网 IP,**根本不需要 Cloudflare 隧道**,
现在所有 1033/502/530 都是隧道这一跳的问题,换过去就从根上消失。

文档里对比了 6 个方案(永久性、是否需公网 IP、是否要信用卡、
亚洲节点、能否免隧道),推荐 Oracle Cloud Always Free 首选
(永久免费 + 真公网 IP + 东京/首尔节点),
ClawCloud Run 作为不用信用卡的备选。
还写了具体的搬迁步骤和要删掉的组件。
2026-10-07 11:07:24 +08:00

228 lines
8.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 中转服务免费托管方案
> 起因:中转跑在一台 4G 随身 WiFi 上,链路丢包率 30%,
> 导致 `relay.xxmxxs.top` 间歇性 1033 / 502 / 530。
> 用户问:网上有没有免费的托管方式。
---
## 一、先说结论
**能,而且换过去之后,隧道那一整套问题会从根上消失。**
原因是这两件事:
1. **你的协议全是 HTTP 长轮询**,没有裸 TCP:
```
POST /v1/agent/register
POST /v1/agent/poll ← 长轮询,最多 25 秒
POST /v1/agent/send
POST /v1/agent/bye
```
这意味着托管选择面很宽,不限于「支持自定义 TCP 端口」的商家。
2. **一旦有了公网 IP,就完全不需要 Cloudflare 隧道了。**
现在所有 1033 / 502 / 530 都是隧道这一跳出的问题。
直接 `A 记录 → 服务器 IP` 之后,这一跳消失。
### 资源需求(实测,很小)
| 项目 | 实测值 |
|---|---|
| relay.py 内存 | 23 MB |
| relay.py CPU | 0.1% |
| cloudflared 内存 | 38 MB(有公网 IP 后不需要) |
| 代码体积 | 150 KB |
| 数据目录 | 19 MB(含 15 MB 安装包) |
| 请求量 | 约 6000 次/天(按 2 台设备 × 25 秒轮询算) |
| 第三方依赖 | **零**(纯 Python 标准库) |
**结论:最小的免费实例都绰绰有余。**
---
## 二、方案对比
| 方案 | 永久免费 | 独立公网 IP | 要信用卡 | 亚洲节点 | 免掉隧道 | 稳定性 |
|---|---|---|---|---|---|---|
| **Oracle Cloud Always Free** | ✅ 永久 | ✅ | ✅ 实体卡 | 东京/大阪/首尔 | ✅ | 高 |
| **ClawCloud Run** | ✅ $5/月 | ❌ 容器 | ❌ 只要 GitHub | 有 | ❌ 仍需隧道 | 中 |
| **Google Cloud e2-micro** | ✅ | ✅ | ✅ | ❌ 只有美国 | ✅ | 高 |
| **Cloudflare Workers + Durable Objects** | ✅ | ✅ | ❌ | 全球 | ✅ | 高(但要重写) |
| **Hugging Face Spaces** | ✅ | ❌ | ❌ | 有 | ❌ | 低(会休眠) |
| 现状(4G 随身 WiFi) | — | 隧道 | — | — | — | **低(丢包 30%)** |
---
## 三、推荐方案
### 🥇 第一选择:Oracle Cloud Always Free
**规格(真·永久免费,不是试用):**
| 资源 | 配置 |
|---|---|
| CPU | 4 核 Ampere A1(ARM) |
| 内存 | 24 GB |
| 存储 | 200 GB |
| 月出口流量 | 10 TB |
| 价格 | **$0,不限期** |
另外还附带 2 台 AMD x86 小机器(各约 1 核 1 GB),当备用。
**为什么最合适:**
- 有真实公网 IP → **彻底不用隧道了**
- 10 TB/月流量 → 流量完全不是问题
- 东京 / 大阪 / 首尔区域 → 国内延迟约 50~100 ms
(比现在的公网 690 ms 快 7 倍)
**注册要点(社区总结的风控规律):**
- 需要**实体信用卡**(Visa/Mastercard,招行/工行/中行/浦发都行;**不接受虚拟卡和预付卡**)
- 国内 +86 手机号可以直接用
- **必须关掉代理、用手机热点注册** —— Oracle 校验 IP 来源和信用卡发卡国是否一致
- 账单地址填中国地址
- 主区域**选完不能改**,想清楚再点
**唯一难点:亚洲区的 ARM 实例经常「Out of Capacity」**
社区有自动抢机脚本,挂在 GitHub Actions 上自动重试:
- [oci-free-arm-instance](https://github.com/maoucodes/oci-free-arm-instance)(GitHub Actions 版)
- [oracle-freetier-instance-creation](https://github.com/mohankumarpaluru/oracle-freetier-instance-creation)(Python 版)
**保活**:Oracle 会检查闲置(CPU/内存/网络利用率连续 7 天低于 20% 可能回收)。
**我们的中转一直在长轮询,永远不会闲置** —— 这条风险天然规避,不需要额外保活脚本。
参考:[Oracle 白送 4 核 24G 服务器,注册到跑起来一次讲清](https://byronfinn.github.io/oracle-free-vps-guide/)
---
### 🥈 第二选择:ClawCloud Run(不用信用卡)
| 项目 | 规格 |
|---|---|
| 免费额度 | **$5 / 月**(连接 GitHub 账号领取) |
| 容器 | 4 核 8 GB / 10 GB 磁盘 / 10 GB 流量 |
| 信用卡 | **不需要** |
| 注册 | GitHub 一键登录 |
**优点**:零门槛,不绑卡。
**缺点**:
- 是**容器**,没有独立公网 IP → **仍然需要 Cloudflare 隧道**
- 有「定期活跃检查 + 长期闲置释放」机制
不过我们一直在轮询,不会闲置,这条影响很小
- 仍需自己算好 $5 额度(按最低配 0.16 刀/天算,一个月约 $4.8,够但没余量)
参考:[永久免费的高配容器 ClawCloud](https://cloud.tencent.com.cn/developer/article/2516945)
---
### 🥉 第三选择:Cloudflare Workers + Durable Objects
**完全免费、不用信用卡、全球节点、天然免隧道。**
Cloudflare 的 Durable Objects 就是为「有状态的长连接中转」设计的,
社区已经有人用 Worker + DO 做中转([openchamber-relay](https://github.com/openchamber/openchamber-relay))。
**代价**:Workers 跑不了 Python,**整个中转要用 JavaScript 重写**。
你现在的 150 KB Python 代码用不上。
除非以后想彻底脱离服务器,否则不值得。
---
## 四、搬到新服务器要改什么
**好消息:被控端和手表一个字都不用改。** 它们只知道一个域名。
### 服务器上要做的事
```bash
# 1. 装 Python(Debian/Ubuntu 自带)
apt update && apt install -y python3
# 2. 把 relay/ 目录拷过去
scp -r relay/ root@<新服务器IP>:/root/lanremote-relay/
# 3. 写 systemd 服务
cat > /etc/systemd/system/lanremote-relay.service <<'EOF'
[Unit]
Description=ykxmz 中转服务器
After=network.target
[Service]
Type=simple
WorkingDirectory=/root/lanremote-relay
Environment=RELAY_BIND=0.0.0.0
Environment=RELAY_PORT=8080
Environment=RELAY_DATA=/root/lanremote-relay
ExecStart=/usr/bin/python3 /root/lanremote-relay/relay.py
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now lanremote-relay
```
**只改一处环境变量**:`RELAY_BIND` 从 `127.0.0.1` 改成 `0.0.0.0`
(现在绑本地是因为前面有隧道;有了公网 IP 要直接对外)
### Cloudflare 后台要做的事
1. 进 DNS,把 `relay` 这条记录的**类型从 Tunnel 改成 A**
2. 值填新服务器 IP
3. 橙云(代理)**建议保持开启** —— 免费 DDoS 防护 + 隐藏真实 IP
4. SSL/TLS 模式设为 **Full** 或 **Full (Strict)**
### 可以删掉的东西
- ❌ `cloudflared` 隧道服务(`lanremote-tunnel`)
- ❌ 看门狗(`lanremote-watchdog`)—— 没有隧道就不需要看门狗
- ❌ 网络调优脚本(`lanremote-nettune`)—— 那是为 4G 的 MTU 问题写的
- ❌ 那个 4G 随身 WiFi 设备本身
**代码里有两处要顺手改掉:**
- `relay.py:267` 写死了 `/root/lanremote-relay/public_url.txt` → 改用 `RELAY_PUBLIC_URL` 环境变量
- `relay.py:1245` 读隧道 metrics → 没有隧道了,直接返回「直连模式」
---
## 五、代价与风险(说实话)
| 风险 | 说明 | 缓解 |
|---|---|---|
| Oracle 注册失败 | 风控严,IP/卡/地址三者要一致 | 按上面的清单来,用手机热点 |
| ARM 实例抢不到 | 亚洲区热门,常见 Out of Capacity | 挂自动抢机脚本,等几小时到几天 |
| Oracle 可能回收闲置实例 | 连续 7 天利用率 <20% | **我们一直轮询,不会闲置** |
| 商家政策变化 | 任何免费服务都可能改条款 | 代码无依赖,随时能搬走 |
| 国内访问延迟 | 取决于线路,绕路可能反而变慢 | 选东京/大阪/首尔,实测再定 |
| 换 IP 期间的过渡 | 手表里填的是域名,不用改 | 但切换那一刻会有短暂中断 |
**最坏情况**:Oracle 用不了,就退回 ClawCloud(不用信用卡),或者继续用现在的 4G 设备 —— 现在的 watchdog 已经能自愈,只是没那么稳。
---
## 六、我的建议
**先试 Oracle。** 理由:
1. 唯一一个「永久免费 + 真公网 IP」的组合 → **能把隧道问题从根上解决**
2. 配置高到离谱(4 核 24G),跑 100 个中转都够
3. 东京/首尔延迟比现在好一个数量级
**如果 Oracle 注册不顺利**,就退到 ClawCloud(不用信用卡),
但那仍然要隧道,稳定性提升有限 —— 只是把「4G 链路」换成「机房链路」。
---
## 附:判断依据来源
- [Oracle Cloud Free Tier 官方文档](https://docs.oracle.com/en-us/iaas/Content/FreeTier/freetier.htm)
- [Oracle 白送 4 核 24G 服务器,注册到跑起来一次讲清](https://byronfinn.github.io/oracle-free-vps-guide/)
- [永久免费的高配容器 ClawCloud](https://cloud.tencent.com.cn/developer/article/2516945)
- [Cloudflare Durable Objects 定价](https://developers.cloudflare.com/durable-objects/platform/pricing/)
- [openchamber-relay(Worker + DO 中转实例)](https://github.com/openchamber/openchamber-relay)
- [ClawCloud Run 控制台](https://console.run.claw.cloud/)
> 注:免费服务的条款随时会变,落地前请再确认一次当时的政策。