快速开始
把 Raemote 跑起来
五分钟:在跑应用的电脑上装好服务端,在手机上装好 App(或者改成配对浏览器——见第 6 步),扫一次二维码完成配对。
1 开始之前
你的应用能用吗?十秒钟就能确认。
在运行它的那台电脑上,用浏览器打开 http://localhost:<端口>——
就是你平时在本机用的那个地址。能打开,Raemote 就能连上。
在终端里就是一行:
curl -I http://localhost:3000
Raemote 使用普通 HTTP——不少自托管软件默认就是这样。 已经配好证书、只提供 HTTPS 的应用暂时还连不上,这是我们接下来要做的事。
现在还没有任何应用在跑?没关系,以后也可以手动添加:
raemote apps add <名字> <端口>。
你还需要准备
- 一台 Mac(Apple Silicon 或 Intel)或 Linux 机器(x86_64、arm64, 树莓派也行),上面跑着你想在手机上访问的网页应用。
- 一台 iPhone。App 需要 iOS 27 或更高版本。
- 不会有任何东西暴露到公网:Raemote 把一切都留在你的机器上, 只交给你配对过的设备。
现在一个应用都没跑?开发服务器就够了—— 随便起一个能提供网页的东西,Raemote 就会把它列出来。
2 安装服务端
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 和 raemoted 放进
~/.local/bin,注册并启动后台服务(macOS 用 launchd,Linux
用 systemd),最后打印你的配对链接。
安装选项与 AI Agent
常用参数:--no-service、--bin-dir <目录>、
--proxy <url>、--source gitee|github、
--tag <版本>、--quiet。
给 AI Agent 或脚本用时,加 --json:标准输出只有一个 JSON
对象(含节点 ID 和配对用的 uri),过程信息走标准错误,
失败时退出码非零:
curl -fsSL https://github.com/raemote/raemote_cli/raw/main/install.sh | sh -s -- --json
完整约定见 agent-install.md。
想先读一遍?把 install.sh 下载下来再
sh install.sh 即可。
3 安装手机 App
在 iPhone 上从 TestFlight 安装 Raemote(iOS 27+), 然后打开。不用注册账号,也不用填任何信息。
浏览器是同等的选择:raemote connect 会给一台电脑
配对、提供同样的应用——第 6 步。同一个链接可以两者都配对。
4 配对手机
在运行服务端的那台电脑上:
raemote pair
它会打印一个 raemote:// 链接和二维码。在 App 里点
+ 扫描,或者用手动添加粘贴链接。
每台设备配对一次就够了。
同一个链接也能配对电脑:运行
raemote connect '<来自 raemote pair 的链接>',
它就会成为另一台配对设备(第 6 步)。
这个链接是短期的(默认五分钟),在过期前可以配对多台设备。随时运行
raemote pair 就能打印一个新的。
更长效的链接,或之后再添加设备
如果需要一个长期有效的链接,在 ~/.raemote/config.toml
里固定 token 和较长的有效期:
[bind]
token = "…64 位十六进制…"
token_ttl_secs = 3153600000
然后再运行一次 raemote pair。请把这个链接当作密钥保管:
拿到它的人就能配对。也可以完全绕开服务端——在已配对的设备上用
… → 邀请设备… 生成一次性邀请码。
只让某台设备访问部分应用
默认情况下,配对链接授予服务端能看到的全部应用。只想给一部分时,把端口列出来:
raemote pair --ports 8096,3000
这台设备的应用列表里只会出现这些应用,打开别的会被拒绝。之后也可以收紧 或放宽某台已配对设备的权限,改动立即生效:
raemote devices access <id> --ports 8096
raemote devices access <id> --all
邀请遵守同样的规则:权限受限的设备用 … → 邀请设备… 时,可以交出它拥有的全部权限,或者更小的一部分——绝不会超出它自己的范围。 权限按端口划分,所以同一个端口后面的应用总是同进同退。
5 开始使用
- 已配对的服务端会出现在 App 里,点进去就能看到
raemoted发现的应用。 - 点应用就在 Safari 里打开。每个应用都有自己的源,登录状态和站点 数据都会保留。
- 可以再打开一个应用,两个都会继续运行——最近那一行 可以瞬间切换,页面状态原样保留。
- 回到 App 时列表会自动刷新;想立刻重新扫描就用 … → 刷新应用。
某个应用一直不出现,就手动固定:
raemote apps add jellyfin 8096
raemote apps list
6 用浏览器使用
raemote connect 是一个完整的客户端,和手机 App 完全一样:
用同一个链接给这台电脑配对,然后在浏览器里提供你的应用:
raemote connect '<来自 raemote pair 的链接>' # 配对并打开
raemote connect # 打开上次用的服务端
应用列表跑在 127.0.0.1:7788(用 --port 改端口),
每个应用还会分到自己的回环端口,所以 URL、Cookie 和登录状态与在服务端
一致。配对后的电脑会出现在 raemote devices list 里,和手机
一样——可以起名字、限制、撤销。加 --no-open 可以不自动打开浏览器。
7 常用命令
| 命令 | 作用 |
|---|---|
raemote status | 服务是否在跑、发现了几个应用 |
raemote doctor | 体检守护进程、权限、配置、发现和中继 |
raemote discover | 立刻重新扫描(加 --verbose 看每个被跳过的端口和原因) |
raemote apps list | 合并后的应用列表,含每条记录的来源 |
raemote apps hide <名字> | 隐藏误识别的应用(unhide 恢复) |
raemote devices list | 已配对设备,含名称、节点 ID 和各自的访问权限 |
raemote devices rename <id> "客厅" | 给设备起个可读的名字 |
raemote devices revoke <id> | 立刻断开某台设备 |
raemote devices access <id> --ports 8096 | 把该设备限制在指定应用(--all 恢复全部) |
raemote config set name "Mac mini" | 改服务端在已配对设备上显示的名字 |
raemote logs -n 50 | 最近日志(--follow 持续输出) |
raemote restart | 改完配置后重启服务 |
8 出问题了
先从这里开始:
raemote doctor
| 现象 | 处理 |
|---|---|
| 应用没出现在列表里 | 先 raemote discover --verbose 看原因,再 raemote apps add <名字> <端口> |
| 应用打不开 | 确认它能在 http://localhost:<端口> 上响应;只提供 HTTPS 的应用暂不支持 |
| 手机提示未被授权 | 它被撤销过,或服务端身份变了——重新运行 raemote pair 再扫一次 |
| doctor 说中继连不上 | 受限网络里设置出站代理:raemote config set network.proxy http://host:port,然后 raemote restart |
| Safari 显示「非安全」页面 | 这是 Safari 对回环地址的提示,按上文在设置里关掉即可 |
| 改完配置没生效 | 多数设置用 raemote reload;网络或身份相关的改动要 raemote restart |
更多内容见 troubleshooting.md。
9 卸载
curl -fsSL https://github.com/raemote/raemote_cli/raw/main/install.sh | sh -s -- --uninstall
加上 --purge 会一并删除 ~/.raemote——服务端身份
和已配对设备列表。如果只是想断开某台设备,用
raemote devices 撤销即可,不必卸载。
安全问题与隐私咨询:cool@lyuhj.top · SECURITY.md · PRIVACY.md