news 2026/8/21 21:39:59

树莓派没有公网 IP,用 webrpc 做 24 小时在线节点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
树莓派没有公网 IP,用 webrpc 做 24 小时在线节点

独立开发者笔记,非官方教程。SDK 与套餐以 https://www.webrpc.cn/ 为准。

很多人买树莓派,不是为了再养一台云主机,而是想在家里留一个常亮的小节点:挂硬盘、跑备份、偶尔让手机问一句「还活着吗」。卡点几乎总是同一句——

家里没有公网 IP,也不想把路由器端口映射当成日常运维。

frp 能透,但你得一直养一台 VPS;自己打洞,树莓派那点精力很快就被网络细节吃掉。后来我把它定位成 webrpc 的「家庭常驻端」:派上 24 小时登录,手机或笔记本当访客端,用会话收发,而不是先给这台小机器找一个公网入口。

webrpc是面向无公网 IP 的跨平台 P2P 通信 SDK:Token 标识设备,登录后建立尽量直连的加密会话,再用SendData/SendFile收发。官网:https://www.webrpc.cn/

为什么是树莓派,而不是再买一台云

家庭节点有几个很土、但很真实的约束:

  • 要常开,功耗得低
  • 数据最好留在自己的盘上
  • 人在外面用手机或笔记本访问
  • 宽带多半是大内网,没有稳定公网地址

树莓派(以及同类 ARM 小主机)刚好卡在这个位置。它弱项不是 CPU,而是可达性:你不能像对待公网 VPS 那样,假设永远有一个固定 IP 和端口。

webrpc 在这里做的不是「再给派做一个网盘产品」,而是给它一个常驻身份:一个 Token、一个长期进程、一套回调收包。业务仍然是你的——状态查询、拉日志、传一张图、列某个白名单目录——都可以往后加。

这台派在链路里扮演什么角色

最小拓扑只有两端:

树莓派(家宽 NAT 后,24h) 手机 / 笔记本(公司网或 4G) Token = PI Token = PHONE 登录 + 回调读循环常驻 需要时登录,OpenSession(PI) 守着本地文件或传感器 SendData / 等回包 / SendFile

派是被找到的那一端,不要让它去主动拨号找你的手机——手机 IP 变得太勤。让访客端OpenSession到派的 Token,心智更稳。

个人套餐常见是两个 Token、约每年 5 美元(以官网为准),刚好够「派 + 手机」或「派 + 电脑」做最小验证。家里以后加 NAS、加第二台派,再按「一台设备一个 Token」扩。

硬件和系统:先别上复杂

够用的起点:

  • Raspberry Pi 4 / 5,或任意能跑 64 位 Linux 的 ARM 板
  • 系统用 64 位 Raspberry Pi OS / Debian,少踩 32 位库
  • 有线网口优先于 Wi‑Fi;常驻节点对抖动更敏感
  • 系统盘尽量用靠谱的卡或直接 SSD,避免 SD 卡被日志写坏

SDK 不要拿桌面 x86 的.so硬塞。官方面向 Linux ARM 的包名是libwebrpc-Linux-arm64这一路(以你下载到的文件名为准)。架构错了,表现常常是加载失败或登录永远停在 0,看起来像「webrpc 在树莓派上不能用」。

语言我更建议派上用Go 或 C:CGO/动态库、systemd 常驻都顺。Python 能跑,但 ctypes 声明和路径更容易在 ARM 上踩坑;那是另一篇文章的事。

接入时只验证「常驻」,不要一上来堆网盘

树莓派上第一周只做三件事就够:

  1. 进程能登录成功,崩溃后能被拉起来
  2. 回调端口稳定连上127.0.0.1
  3. 外面用第二个 TokenOpenSession成功,来回一条小消息

例如访客端发PING,派回PONG|<uptime>。磁盘、目录、传图都是后话。常驻没稳住就上业务,最后你会在「备份协议」里排查「其实服务没在跑」。

Go 侧登录循环、读帧、异步回包,和官网示例同一套。ARM 上唯一要额外盯的是链接库:

#cgo linux,arm64 LDFLAGS: -L. -lwebrpc-Linux-arm64

以及运行时的LD_LIBRARY_PATH,指向.so所在目录。

用 systemd 把它变成「插电就在」

树莓派当节点,成败不在 Demo 能跑,而在重启、掉电、偶发崩溃之后还在

一个够用的 unit 示意:

# /etc/systemd/system/webrpc-pi.service [Unit] Description=webrpc home node After=network-online.target Wants=network-online.target [Service] Type=simple User=pi WorkingDirectory=/home/pi/webrpc-node Environment=LD_LIBRARY_PATH=/home/pi/webrpc-node ExecStart=/home/pi/webrpc-node/pi-agent Restart=always RestartSec=5 [Install] WantedBy=multi-user.target

注意几点:

  • network-online之后再起,避免开机瞬间登录必失败
  • Restart=always,但登录逻辑自己要有超时,不要空转打满 CPU
  • Token 放文件权限收紧,不要世界可读,更不要提交到公开 git
  • 日志用 journald 即可,别把完整 Token 打进日志

systemctl enable --now webrpc-pi之后,拔电再插,你期望的是:过一两分钟,外面仍能OpenSession到这台派。

电、热和磁盘:常驻设备的脏细节

这些不像 API,但会决定你能不能真的 24 小时:

  • 电源:廉价充电头在负载和高网卡活动时会欠压,进程表现成随机挂;用官方或够流的供电
  • 散热:Pi 4/5 在夏天小盒子里会降频,看起来像「P2P 变慢」
  • 磁盘:外接硬盘要给足电流,挂载写进fstab或 systemd mount,避免 Agent 起来时盘还没挂上
  • 时间:没 RTC 的板子刚开机时间不对,可能影响证书/登录观感,开 NTP

webrpc 解决的是 NAT 后怎么被找到;电源和挂盘,它帮不了你。

外面怎么连:4G 可以,但先同网

联调顺序建议:

  1. 笔记本和派在同一局域网,先通 PING
  2. 笔记本切到手机热点,再通一次
  3. 最后才把访客端放到公司网或真 4G

跨网失败时,先看派是否仍登录(journalctl -u webrpc-pi)、Token 有没有填反、动态库是不是 arm64。握手不能保证 100%,弱网下要给SendData设超时,失败就重新OpenSession——这些是应用层的事,和「树莓派」本身无关,但常驻节点上更容易被忘掉。

业务上给派做只读白名单:允许PING、允许某个目录的列表或拉取,默认不要在派上执行任意命令。常开设备,权限开错一次,比桌面 Demo 危险得多。

适合挂在派上的,和不适合的

比较适合:

  • 家庭状态节点:在线、温度、磁盘剩余
  • 小文件与日志回传
  • 作为后续 NAS/相册/备份的「门口」:先通会话,再扩业务

不太适合:

  • 把派当 4K 实时监控服务器硬扛(散热、上行、编码都不在 webrpc 职责里)
  • 只想 SSH 进去改两行配置(开一下 frp 或 Tailscale 往往更快)
  • 没做白名单就把整个根目录暴露给手机

树莓派 + webrpc 的产品故事是:低功耗常亮 + 无公网可达。别把它写成万能云。

一份落地清单

  1. 64 位系统 +Linux arm64SDK,文件和头放在程序同目录
  2. 控制台申请独立 Token,只给这一台派
  3. 进程:登录 →GetReceivePort→ 后台读回调 → 等会话
  4. systemd 常驻、开机自启、日志里不打 Token
  5. 访客端第二个 Token,先同网再 4G
  6. 业务从PING开始,路径和方法白名单再加

下载 SDK、看 arm64 库名和各语言示例,都在官网:https://www.webrpc.cn/

最后

树莓派最贵的不是板子,而是你愿意让它在柜子里亮着。
没有公网 IP 时,缺的不是又一个 Linux 服务,而是一个能被外面找到、又不必把家门端口打开的身份

webrpc 给的就是这层身份和会话。派负责 24 小时在线,手机负责需要时拨进来。通了之后,备份、相册、传感器都只是回调里多几种字节。先让这台小机器「插电就在」,再谈它能替你看家到什么程度。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 21:38:02

Yi.Abp.Admin 完整指南:.NET 8 + ABP 框架管理后台快速上手

Yi.Abp.Admin 完整指南&#xff1a;.NET 8 ABP 框架管理后台快速上手 【免费下载链接】Yi.Abp.Admin &#x1f525;爽&#x1f525;.Net8集大成者&#xff0c;终究轮子&#xff0c;简易实用&#xff0c;老牌经典。 后端.Net8&#xff0c;前端Vue3&#xff0c;框架三层架构\DDD…

作者头像 李华
网站建设 2026/8/21 21:38:00

NVIDIA显卡驱动安全回退指南:彻底卸载与纯净安装

在实际使用英伟达显卡进行开发、游戏或专业图形处理时&#xff0c;驱动版本的选择并非总是“越新越好”。新驱动可能带来性能优化&#xff0c;也可能引入新的兼容性问题、稳定性Bug&#xff0c;甚至导致特定软件或游戏无法正常运行。当遇到黑屏、闪退、性能下降或特定功能失效时…

作者头像 李华
网站建设 2026/8/21 21:33:05

049、表维护生成器

那会儿我刚接手一个老旧项目&#xff0c;生产系统里有个自定义订单类型&#xff0c;业务员录入到一半保存时报“表锁冲突”。翻代码找半天没找到任何显式LOCK&#xff0c;最后查出来是表维护生成器的事务码SM30在后台被某个批处理任务调用了&#xff0c;而且那个表恰好是订单主…

作者头像 李华
网站建设 2026/8/21 21:33:03

048、锁对象与锁机制

048、锁对象与锁机制 半夜两点被电话吵醒&#xff0c;客户说那张采购订单保存时卡死了&#xff0c;整个物料主数据都锁住&#xff0c;业务员在电话里急得骂人。我远程一看&#xff0c;SM12里躺着一个大锁&#xff0c;owner是一个早就下线的后台作业&#xff0c;锁了三天没释放…

作者头像 李华
网站建设 2026/8/21 21:32:11

Windows系统文件umpoext.dll丢失找不到问题解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/8/21 21:30:40

Python如何实现蚁群算法

如何实现蚁群算法在这篇文章里面, 会针对怎样切实实现蚁群算法, 为大家展开极为详尽的讲解, 小编觉着它相当实用, 所以特此给予分享, 提供给大家当作参考, 期望大家在阅读完这篇文章以后, 能够有所斩获。1、引言几十年以来, 自然界里各种生物群体所展现出的智能, 受到了学者们的…

作者头像 李华