共享网站
用二维码在同一 Wi-Fi 下的手机或平板上打开域名,或通过公开链接把它发给别人(cloudflared、ngrok、localhost.run、Pinggy)。
.test 域名只在你的 Mac 上响应。共享 让它在别处也能打开:在同一网络中的手机或平板上真机测试网站,或通过公开链接放到互联网上,展示给客户或接收 webhook。
在项目的域名标签页中,点击某一行的共享图标:共享 <域名> 窗口随即打开,包含两个部分。

一切默认关闭,也不会保存任何内容:共享只存在于内存中,Joppa 退出时关闭。域名必须已启用,代理必须正在运行。
在局域网中
打开 在局域网中共享。Joppa 会在你的 Mac 的网络地址(Wi-Fi 或以太网)上打开一个端口,并显示该地址,例如 http://192.168.1.20:41306,同时附上二维码。在连接到同一 Wi-Fi 的手机上,用相机扫码或输入地址即可。
- 每个域名一个端口,只要端口空闲,同一个域名始终使用同一个端口(41000 到 41999 之间):手机上的书签下次依然有效。
- 使用普通 HTTP。 手机不信任 Joppa 的证书颁发机构,它只安装在你的 Mac 上:HTTPS 地址会显示证书错误。如果需要安全上下文(service worker、相机、
crypto.subtle),请使用 HTTPS 的公开链接。 - 热重载照常工作。 Vite 的 HMR 客户端(以及 Next.js、Astro… 的客户端)会重新连接到页面来源的地址:它的 WebSocket 走同一个端口,你保存文件时手机上的页面也会更新。
- 局域网共享免费。
关闭开关会立即关闭该端口。
公开链接
公开链接 通过隧道提供一个任何人都能打开的临时 https:// 地址。它包含在 Joppa Pro 中;在免费版中,该部分会显示「公开链接包含在 Joppa Pro 中」。参见许可证与方案。
选择 隧道,然后点击 打开隧道。几秒钟后,地址会显示出来,附有二维码、一个复制按钮和一个打开按钮。关闭 会停止隧道。
| 隧道 | 账号 | 所需条件 |
|---|---|---|
| Cloudflare,无需账号(默认) | 无 | cloudflared,缺少时由 Joppa 下载 |
| ngrok,你的账号 | ngrok | 已安装 ngrok(brew install ngrok)以及你的令牌 |
| localhost.run,无需账号 | 无 | ssh,macOS 自带 |
| Pinggy,无需账号(60 分钟) | 无 | ssh;免费隧道 60 分钟后关闭 |
- cloudflared:如果它既不在
PATH中也尚未下载,下载 cloudflared 会从 Cloudflare 的 GitHub 发布页获取 Joppa 固定的版本(约 20 MB),并在安装到 Joppa 的文件夹之前校验其 SHA-256(参见文件和文件夹)。指纹不匹配的压缩包会被删除。 - ngrok:粘贴你的 ngrok 令牌(dashboard.ngrok.com)并点击 保存;令牌保存在钥匙串中。如果 ngrok 已有令牌(
ngrok config add-authtoken),则无需填写。ngrok 的免费账号会在网站之前向访客显示一个警告页面。 - localhost.run 和 Pinggy 通过
ssh连接;Joppa 把它们的主机密钥保存在自己的known_hosts文件中,不会改动~/.ssh。
隧道打开期间,状态栏会以橙色显示(「1 条隧道已打开」);点击即可列出已共享的域名,每个都有 关闭,另有 全部关闭。域名在列表中也会带有 公开 标记。如果隧道客户端停止(网络中断、服务拒绝),窗口会显示「隧道已关闭」及其最后的消息,并提供 重试。
应用看到的内容
两种共享都经过 Joppa 的代理,就像你 Mac 上的浏览器一样:
- 无论手机上输入的是什么地址,开发服务器收到的都是域名的
Host(app.acme.test)和X-Forwarded-Proto: https:Vite 的allowedHosts、Laravel 或 Symfony 的受信任域名都无需修改; Origin和Referer会被改回该域名,让 CSRF 保护接受表单;- 请求会出现在分析和检查器中。
反方向上,Joppa 会把该域名的绝对 URL 改写为共享地址:https://app.acme.test/… 变为 http://192.168.1.20:41306/… 或 https://….trycloudflare.com/…。这适用于重定向(Location)、CORS 和 CSP 响应头,以及最大 8 MB 的文本响应正文(HTML、CSS、JavaScript、JSON、XML、SVG)。Cookie 会去掉 Domain 属性;在局域网的 HTTP 下还会去掉 Secure 属性(否则手机会拒绝它们,会话无法保持)。
在终端和 AI 中
joppa share app.acme.test
joppa share app.acme.test --public
joppa share stop app.acme.test
参见 joppa 命令,以及 MCP 服务器的 share_start、share_stop 和 share_status 工具。