{"repo":"icloudza/r1rpc","free":true,"listed":false,"github":"https://github.com/icloudza/r1rpc","clone":"git clone https://github.com/icloudza/r1rpc.git","description":"真机 RPC 中继：把只能在真机/特定环境跑的函数封装成 HTTP 接口（Go + WebSocket，React 控制台，分组路由、单节点）","language":"Go","stars":42,"topics":["device-farm","frida","golang","mobile-automation","mysql","react","remote-procedure-call","reverse-engineering","rpc","self-hosted"],"license":"MIT","category":"self-hosted-apps","readme_excerpt":"r1rpc 把只能在真机/特定环境里跑的函数，封装成一个 HTTP 接口。 有些能力天生离不开设备——iOS 的 DeviceCheck / App Attest、App 内部的加密签名、必须真机环境才肯出活的 SDK……服务器上算不出来。r1rpc 让真机挂一个常驻客户端连到中心服务器；调用方发一个普通 HTTP 请求，服务器转发给在线设备执行，再把结果同步带回。一句话： 远程过程调用，但\"过程\"跑在你的真机上。 🙏 致谢 ：r1rpc 基于 @manyuegong33 的 r0rpc 重构而来——核心架构与中继协议的思路源自原作者，本项目在其基础上重写了后端、配置、面板与部署。特别鸣谢原作者的开源工作。 ☁️ 雨云，价格实惠，性价比极高的服务器供应商，嘎嘎顶，牛大了，我的自己的 rpc 也用这个～～ --- 特性 - 同步 RPC over WebSocket ：调用方拿到的是同步结果，设备侧是常驻长连接，毫秒级下发。 - 分组路由 + 负载均衡 ：一个分组是一个设备池，同组多台设备自动轮询分发。 - 三套独立鉴权 ：后台账号（登面板）、调用方（按分组 none/apikey）、设备（分组 device key）各管各的，互不串味。 - 能力自动发现 ：设备登录时上报自己支持的 action，面板直接可见，无需手维护。 - 可观测 ：Web 面板含实时请求频谱、成功率/延迟趋势、调用审计、设备/客户端状态。 - 单节点、零外部依赖 ：只需一个 MySQL，无 Redis；状态在内存里算，明细落库。 - 前端内嵌 ：React 面板编译进二进制（ go:embed ），单文件可执行，开箱即用。 --- 面板预览 --- 快速开始 方式一：Docker（推荐） 启动后： - 面板与接口： http://localhost:9876 - 服务首次启动会自动建库建表，并按配置里的 admin.username / admin.password 创建后台管理员。 方式二：从源码运行 需要 Go 1.26+ 和一个 MySQL。 --- 配置 配置文件按优先级查找 config.yaml → r1rpc.yaml ； 任意项都可用同名大写环境变量覆盖 （如 JWT SECRET 、 MYSQL HOST ），方便容器部署。完整模板见 config.example.yaml 。 对外调用鉴权（none/apikey）不在这里配 ，它属于每个分组，在面板的分组页单独设置。 --- 教程 从零接入一台设备并发起调用的完整步骤（建分组 → 设备端接入 → 发起调用）、以及设备接入的 WebSocket 协议，见 docs/tutorial.md 。 可跑示例： examples/ （设备端 + 调用方）。 --- 目录结构 技术栈 Go（标准库 net/http 1.22 路由 + coder/websocket）· MySQL · React 18 + Vite + Radix Themes + Recharts。单节点、无 Redis。 友情链接 LINUX DO —— 新的理想型社区，技术爱好者的聚集地。","default_branch":null,"files":null,"tree":[],"storefront":"/r/icloudza","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/icloudza/r1rpc/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}