如何通过 Tailscale 在手机上访问 Happier:不开端口也能用 HTTPS

一套让手机稳定通过 HTTPS 链接访问 Happier 的配置,不用开放端口,也不依赖局域网 IP。

基于版本
CLI
0.2.17
预览 ref
a2c45c8

第一次用手机访问自托管的 Happier 时,经常会碰到一个让人困惑的浏览器限制。

http://localhost 用起来没问题。

但只要你换成类似这样的地址:

  • http://192.168.x.x:PORT
  • http://100.x.y.z:PORT(Tailscale IP)

……有些浏览器就不再把它当作安全上下文。

而 Happier 依赖需要安全上下文的浏览器功能(WebCrypto),所以“页面能打开,但用起来不对劲”是真实存在的故障。

可靠的方案是 Tailscale Serve,它会给你一个只能在 tailnet 内访问的 HTTPS *.ts.net 地址。

要点

  1. 在电脑和手机上安装 Tailscale。
  2. 为你的 Happier 启用 Serve(通过 hstack tailscale enable)。
  3. 在手机上打开生成的 https://*.ts.net 地址。

常见做法及其取舍

  • 局域网 IP + 端口:简单,但不是 HTTPS,可能不满足安全上下文的要求。

  • Tailscale IP + 端口:默认仍然不是 HTTPS,所以会遇到同样的问题。

  • Tailscale Serve:给你真正需要的 HTTPS 地址,而且不用向公网开放端口。 取舍:每台设备都需要安装并登录 Tailscale。

如果你第一次接触 Happier(它是什么、在哪里获取)

Happier 是一款面向 Claude Code、Codex 和 OpenCode 等 AI 编程代理的开源配套应用(移动端 / 网页 / 桌面端)。

这里的工作流是:在你信任的机器上运行 Happier,然后用手机通过稳定的 HTTPS 链接访问它。

开始设置:

为什么这里 HTTPS 很重要(安全上下文限制)

浏览器把 http://localhost 视为安全,但不会这样对待随便一个 http://<ip>:<port>。

所以远程访问需要 HTTPS。

Tailscale Serve 用一种省事的方式解决了这个问题:它给你一个只在 tailnet 内可用的 HTTPS 地址。

分步操作:为 Happier 启用 Tailscale Serve

在运行 Happier 的机器上:

  1. 安装 Tailscale 并登录。
  2. 运行:
hstack tailscale enable
hstack tailscale url
  1. 复制这个地址。

在手机上:

  1. 安装 Tailscale,并登录同一个 tailnet。
  2. 在 Safari / Chrome 中打开该地址。

提示:在 iOS 的 Safari 中可以“添加到主屏幕”,用起来更像一个应用。

自动化(可选)

如果已经配置好 Serve,hstack start 可以优先使用 https://*.ts.net 地址作为规范链接和分享链接。

对于自托管服务器,设置 HAPPIER_PUBLIC_SERVER_URL 也有帮助,这样深层链接和二维码都会指向 HTTPS 地址。

故障排查

症状:页面能加载,但行为异常(加密 / 认证问题)

可能原因:

  • 你通过局域网或 Tailscale IP 使用的是普通 HTTP,而不是 HTTPS

解决:

  • 改用 Tailscale Serve,使用 https://*.ts.net 地址

相关指南

mobileself-hosttailscaleremote-access
最后更新: 2026-10-26