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

发布时间:2026/8/21 21:40:00
树莓派没有公网 IP,用 webrpc 做 24 小时在线节点 独立开发者笔记非官方教程。SDK 与套餐以 https://www.webrpc.cn/ 为准。很多人买树莓派不是为了再养一台云主机而是想在家里留一个常亮的小节点挂硬盘、跑备份、偶尔让手机问一句「还活着吗」。卡点几乎总是同一句——家里没有公网 IP也不想把路由器端口映射当成日常运维。frp 能透但你得一直养一台 VPS自己打洞树莓派那点精力很快就被网络细节吃掉。后来我把它定位成 webrpc 的「家庭常驻端」派上 24 小时登录手机或笔记本当访客端用会话收发而不是先给这台小机器找一个公网入口。webrpc是面向无公网 IP 的跨平台 P2P 通信 SDKToken 标识设备登录后建立尽量直连的加密会话再用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 或 CCGO/动态库、systemd 常驻都顺。Python 能跑但 ctypes 声明和路径更容易在 ARM 上踩坑那是另一篇文章的事。接入时只验证「常驻」不要一上来堆网盘树莓派上第一周只做三件事就够进程能登录成功崩溃后能被拉起来回调端口稳定连上127.0.0.1外面用第二个 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] Descriptionwebrpc home node Afternetwork-online.target Wantsnetwork-online.target [Service] Typesimple Userpi WorkingDirectory/home/pi/webrpc-node EnvironmentLD_LIBRARY_PATH/home/pi/webrpc-node ExecStart/home/pi/webrpc-node/pi-agent Restartalways RestartSec5 [Install] WantedBymulti-user.target注意几点network-online之后再起避免开机瞬间登录必失败Restartalways但登录逻辑自己要有超时不要空转打满 CPUToken 放文件权限收紧不要世界可读更不要提交到公开 git日志用 journald 即可别把完整 Token 打进日志systemctl enable --now webrpc-pi之后拔电再插你期望的是过一两分钟外面仍能OpenSession到这台派。电、热和磁盘常驻设备的脏细节这些不像 API但会决定你能不能真的 24 小时电源廉价充电头在负载和高网卡活动时会欠压进程表现成随机挂用官方或够流的供电散热Pi 4/5 在夏天小盒子里会降频看起来像「P2P 变慢」磁盘外接硬盘要给足电流挂载写进fstab或 systemd mount避免 Agent 起来时盘还没挂上时间没 RTC 的板子刚开机时间不对可能影响证书/登录观感开 NTPwebrpc 解决的是 NAT 后怎么被找到电源和挂盘它帮不了你。外面怎么连4G 可以但先同网联调顺序建议笔记本和派在同一局域网先通 PING笔记本切到手机热点再通一次最后才把访客端放到公司网或真 4G跨网失败时先看派是否仍登录journalctl -u webrpc-pi、Token 有没有填反、动态库是不是 arm64。握手不能保证 100%弱网下要给SendData设超时失败就重新OpenSession——这些是应用层的事和「树莓派」本身无关但常驻节点上更容易被忘掉。业务上给派做只读白名单允许PING、允许某个目录的列表或拉取默认不要在派上执行任意命令。常开设备权限开错一次比桌面 Demo 危险得多。适合挂在派上的和不适合的比较适合家庭状态节点在线、温度、磁盘剩余小文件与日志回传作为后续 NAS/相册/备份的「门口」先通会话再扩业务不太适合把派当 4K 实时监控服务器硬扛散热、上行、编码都不在 webrpc 职责里只想 SSH 进去改两行配置开一下 frp 或 Tailscale 往往更快没做白名单就把整个根目录暴露给手机树莓派 webrpc 的产品故事是低功耗常亮 无公网可达。别把它写成万能云。一份落地清单64 位系统 Linux arm64SDK文件和头放在程序同目录控制台申请独立 Token只给这一台派进程登录 →GetReceivePort→ 后台读回调 → 等会话systemd 常驻、开机自启、日志里不打 Token访客端第二个 Token先同网再 4G业务从PING开始路径和方法白名单再加下载 SDK、看 arm64 库名和各语言示例都在官网https://www.webrpc.cn/最后树莓派最贵的不是板子而是你愿意让它在柜子里亮着。没有公网 IP 时缺的不是又一个 Linux 服务而是一个能被外面找到、又不必把家门端口打开的身份。webrpc 给的就是这层身份和会话。派负责 24 小时在线手机负责需要时拨进来。通了之后备份、相册、传感器都只是回调里多几种字节。先让这台小机器「插电就在」再谈它能替你看家到什么程度。