你本来就在跑的应用,现在手机、电脑随处可用。
在电脑上装好 Raemote,用手机扫一次二维码——或者把链接贴给
raemote connect,直接在浏览器里打开同样的应用。无论哪种方式,
你本来就在跑的那些东西——影音、控制台、笔记、项目——都在眼前:
端到端加密,而且不会把任何东西暴露到公网上。
如果你以前为了在外面访问自己的东西,专门搭过隧道、VPN 或者反向代理—— 这条路可以短很多。
- 无需账号
- 不暴露到公网
- 端到端加密
- 必要时走中继
- 开源,AGPL-3.0
三步搞定
安装、扫码、完成
-
装到电脑上
macOS 或 Linux 上一条命令。它会装一个后台服务,自动发现你已经跑着的那些网页应用。
-
扫一下二维码
运行
raemote pair,用 Raemote App 扫一下——或者把链接贴给电脑上的raemote connect。这个链接是短期的,在过期之前可以配对不止一台设备。 -
打开应用
你的应用会列出来。点开就在 Safari 里打开,登录状态和家里一模一样。
curl -fsSL https://github.com/raemote/raemote_cli/raw/main/install.sh | sh
GitHub 不顺的时候用 Gitee 镜像:
curl -fsSL https://gitee.com/pppkin/raemote_cli/raw/main/install.sh | sh
大家都用它做什么
都是些小事,随时随地
Raemote 不做一件大事,它只是把那些零碎又常用的事挪到你手边—— 那些你不想等到回家才能做的事。
-
在家里
看一眼家里的情况
备份跑完了吗。NAS 还在线吗。家里多少度。坐在沙发上就能看摄像头。
Jellyfin · Immich · Home Assistant · Uptime Kuma
-
工作
出门在外也能干活
在看板上挪一张卡。看一眼合并请求。看看这次构建过没过。打开管理后台。
Vikunja 或 Planka · Forgejo 或 Gitea · Woodpecker · Portainer
-
省钱
省掉一份月订阅
RSS 订阅、书签、文档归档、菜谱、账本——都是你自己的,住在自己的机器上。
Miniflux · Linkding · Paperless · Mealie · Actual
-
做东西
随手打开正在做的那个
开发服务器、预览环境、Notebook、数据库后台——就在你眼前这台机器上, 从口袋里点开就能用。
开发服务器 · Jupyter · code-server · Adminer
-
分享
和一个人共享
给家人的设备单独配对,它有自己的身份;随时可以一键撤销。
一台设备一个身份 · 随时撤销 · 不共用账号
-
浏览器
或者直接用浏览器
raemote connect把一台电脑当普通设备配对,在浏览器里提供 同样的应用列表——走的是手机 App 同一条加密隧道。一条命令 · 登录状态保留 · 像其它设备一样可撤销
它为什么存在
费事的做法,和省事的做法
想在外面访问自己的机器,通常意味着要做一个小型网络工程。 喜欢折腾这个过程的人很多,这没什么不好——只是你不该为了看一眼摄像头, 必须先完成这个工程。
-
费事的做法
一整套要维护的东西
- 一台有公网 IP 的机器,或一台小 VPS
- 域名和 DNS 解析
- 证书和反向代理配置
- 手机上的 VPN 客户端
- 防火墙规则,以及一直打补丁
-
省事的做法
一条命令,一次扫码
- 在已有的那台机器上装好 Raemote
- 用 App 扫一次二维码
- 点开一个应用——已经登录好了
- 不会有任何东西被公开到公网
如果你本来就喜欢那套折腾方式,继续用就好。Raemote 不需要它们, 也不会碍事。
功能
Raemote 为你做的事
-
发现
它自己找应用
Raemote 读取本机正在监听的端口列表——不扫端口、不用配置——并从页面标题里读出应用名字。新启动的应用会自动出现。
-
手机端
在真正的 Safari 里打开
应用在系统浏览器视图里打开,每个应用都有自己稳定的源,因此登录状态、Cookie 和本地存储都能跨多次启动保留下来。
-
手机端
同时开多个应用
打开的应用会作为后台标签页继续运行,切换是瞬时的,页面也保持在你离开时的样子。
-
浏览器端
同样的应用,浏览器里也能开
raemote connect会像普通设备一样配对一台电脑,把你的应用放进 桌面浏览器——同一条加密隧道,每个应用自己的源,登录状态照旧,多个应用可以 同时在标签页里打开。 -
连接
端到端加密,能直连就直连
网络允许时,客户端直接和你的电脑通信;不允许时,由公共中继转发——它转发的字节自己读不懂。
-
连接
在麻烦的网络里也能用
支持配置出站 HTTP 代理,用于那些封掉常规路径的网络——酒店、校园、公司网络都算。
-
管控
谁进来由你决定
查看已配对设备、给它们起名字、随时撤销,也可以在 App 或命令行里用一次性邀请码添加新设备。每台配对设备可以访问你的全部应用,或者只访问你允许的那些。
-
运维
方便自查
raemote doctor会体检守护进程、权限、配置、发现和中继;raemote logs能看到发生了什么。服务由 launchd 或 systemd 托管。 -
信任
开源,AGPL-3.0
Raemote 跑在你家里,握着你的私人服务的钥匙,所以服务端和 App 都公开、可审计。代码可以自己看,威胁模型也公开。
工作原理
两个组件,一条私有连接
一个叫 raemoted 的小型服务端跑在放着这些应用的电脑上;
客户端展示它发现了什么,并把它们打开——手机上的 Raemote App,或者浏览器里的
raemote connect。中间没有账号,也没有云服务。
技术细节
连接由 iroh over QUIC 提供:两端互相发现并尝试直连,只有直连不可用时才动用公共中继。两种情况下都是端到端加密。
其上跑两套应用协议:raemote/bind/0 只负责用短期 token
完成配对;raemote/0 提供一小套 HTTP 接口
(/_hub/catalog、/_hub/info、
/_hub/devices、/_hub/discover),并把
/app/<名字>/… 反向代理到应用真实地址。
在客户端这一侧,每个应用有自己的本地回环源,设备上的其它程序碰不到它—— iOS 上由每次启动都会变的密钥守护,浏览器客户端则校验请求的 Host。请求全程 流式转发——请求体、上传、服务端推送和 WebSocket 都原样通过。
信任模型
只有你配对过的设备能进来
配对只做一次。之后每台设备——你的手机、跑着 raemote connect
的电脑、朋友的手机——都凭各自的加密身份被识别:没有账号要登录,也没有密钥要保管。
- 已配对身份保存在服务端;手机丢了,一条命令就能撤销。
- 每台配对设备都可以被限制成只访问你允许的应用;邀请只能缩小发出方自己的权限,绝不能扩大。
- 配对失败次数过多会锁定该 token;token 自己也会过期。
- 不会向公网暴露任何东西——只有配对过的设备能访问这些应用。
想看细节?威胁模型是公开的: Raemote 防什么,以及刻意不防什么。
另一个客户端
浏览器里的 Raemote:raemote connect
raemote connect 是一个完整的客户端:用和 App 完全相同的链接、
完全相同的二维码、完全相同的加密隧道给电脑配对,再把你的应用放进桌面浏览器:
raemote connect # 打开上次用的服务端
raemote connect '<来自 raemote pair 的链接>'
应用列表跑在 127.0.0.1:7788,每个应用还会分到一个
自己的回环端口,所以 URL、Cookie 和登录状态与在服务端完全一致。配对后的电脑
会出现在 raemote devices list 里,和其它设备一样——可以起名字、
用 --ports 限制、随时撤销。
说人话
只出现一次的几个词
- 应用
- 有网页的东西——就像你在浏览器里打开的那些网站。
- 服务端
- 跑着这些应用的那台电脑。对 Raemote 来说,就是装了 Raemote 的那台机器。
- 端口
- 一个应用监听的数字编号,比如
localhost:3000。 - 本机
- 你的电脑,在你的电脑上看向它自己时的样子。
- 中继
- 直连不通时的公开中转站。它帮你转发,但读不懂内容。
说在前面
Raemote 今天到哪一步了
还没有、但正在做的:
- 只提供 HTTPS 的应用(比如你已经配好证书的那些)暂时还连不上。 不少自托管软件默认就是普通 HTTP,这类现在就能用。
- 暂时还没有推送通知——需要打开 App 才会更新。
- 应用需要运行在装了 Raemote 的那台机器上。
永远不会做的:
- 不会把你的应用公开到公网上。
- 不会替代应用自己的登录——每个应用你还是要自己登录。
- 保护不了一台已经被攻破的手机。
- 它不是文件传输工具,也不是远程桌面。