首页
/ Hoppscotch Desktop 深度解析:基于 Tauri V2 的跨平台桌面端安装、自托管连接与本地构建实战

Hoppscotch Desktop 深度解析:基于 Tauri V2 的跨平台桌面端安装、自托管连接与本地构建实战

2026-09-03 16:28:46作者:江焘钦

本篇指南围绕 Hoppscotch Desktop(位于 packages/hoppscotch-desktop)展开,覆盖桌面端的应用安装(官方包与 Homebrew)、Hoppscotch Cloud 与自托管实例两种接入方式、WHITELISTED_ORIGINS 与 3200 端口等关键配置,以及如何用仓库自带的 webapp-bundler 将 selfhost 前端打包进桌面壳、本地构建并自托管的完整流程。读完后,你将能够在内网环境把桌面端对接到自己的 Hoppscotch 实例,并理解其底层由 Rust + Tauri 实现的目录结构、本地回环服务器与 deep link 认证机制。

Hoppscotch Desktop 应用界面

一、Hoppscotch Desktop 是什么

Hoppscotch Desktop 是 Hoppscotch(开源 API 开发生态,可视为 Postman/Insomnia 的开源替代品)的跨平台桌面应用,基于 Tauri V2 构建。README 标注其当前处于 ALPHA 阶段,版本号为 26.6.0(见 tauri.conf.jsonCargo.toml)。

package.json 的依赖看,前端部分由 Vue 3 + TypeScript 组成,并复用了 workspace 内的 @hoppscotch/common@hoppscotch/kernel 两个包;Rust 侧则通过 tauri-plugin-apploadtauri-plugin-relay(见 Cargo.toml,仓库内亦有 vendored 版本 plugin-workspace/tauri-plugin-apploadplugin-workspace/tauri-plugin-relay)分别承担“加载本地打包的 Web 应用”与“网络请求代理转发”的职责——这正是桌面端能够连接 Cloud 和自托管实例的关键。

连接自托管实例

二、安装方式

方式一:下载官方安装包

  1. 从 Hoppscotch 官网下载页获取最新版 Hoppscotch Desktop App;
  2. 打开下载的文件;
  3. 按照屏幕提示完成安装;
  4. 启动应用。

方式二:使用 Homebrew(macOS / Linux)

brew install --cask hoppscotch

应用标识为 io.hoppscotch.desktop(见 path.rs 中的 APP_ID 常量,与 tauri.conf.jsonidentifier 保持一致),这也是本地配置目录、日志目录命名的依据。

三、两种接入方式:Cloud 与 Self-Hosted

桌面端的核心价值在于:同一个客户端既可以使用 Hoppscotch Cloud,也可以连接你自己部署的 Community/Enterprise 自托管实例。

3.1 Hoppscotch Cloud(个人版)

  1. 打开 Hoppscotch Desktop App;
  2. 点击左上角的 Hoppscotch logo;
  3. 点击 “HOPPSCOTCH CLOUD”
  4. 使用 Hoppscotch Cloud 账号登录,即可访问你的 workspace 与集合。

从源码结构看,Cloud 登录走的是浏览器回跳流程:Rust 侧在 lib.rssetup_server 中,用 random_port15000–25000 端口区间内挑选一个可用端口,启动一个只监听 127.0.0.1 的 axum 回环服务器(见 server.rs)。该服务器暴露 /device-token 端点,用户浏览器完成登录并被重定向回来后,access_token / refresh_token 以查询参数形式送达该端点,随后通过 Tauri 事件 hopp_auth://token 注入前端(见 server.rs)。配套的单元测试 server.rs 覆盖了 refresh_token 可选(如 device code 流程不返回该字段)等边界情况。前端通过 hopp_auth_port 命令(lib.rs)获取该端口以拼接回跳地址。

3.2 自托管实例(Community / Enterprise 版)

前提配置(重要):为了让桌面端被你的自托管实例认可,需要在 .env 中把部署域名对应的“桌面伪装 origin”加入 WHITELISTED_ORIGINS

  • macOS / Linux:app://hoppscotch_mydomain_com
  • Windows:http://app.hoppscotch_mydomain_com

以允许连接 https://hoppscotch.mydomain.com 为例:

WHITELISTED_ORIGINS=...existing_origins,app://hoppscotch_mydomain_com,http://app.hoppscotch_mydomain_com

注意域名编码规则:app:// 前缀后跟的是把 .- 替换为 _ 的域名形式。path.rs 的注释还指出这种编码是有损的(test-orgtest_org 会映射到同一 bundle 名),因此桌面端在配置目录下维护 registry.json 注册表,把 webview 的 app:// 主机名映射回原始服务器 URL。

连接步骤

  1. 打开 Hoppscotch Desktop App;
  2. 点击左上角的 Hoppscotch logo;
  3. 点击 “Add an instance”
  4. 输入你的自托管实例 URL;
  5. 点击 “Connect”

Docker 部署注意:桌面端会请求前端容器内置的一个 3200 端口的服务。因此启动容器时需同时暴露 3000 与 3200:

docker run -p 3000:3000 -p 3200:3200 hoppscotch/hoppscotch-frontend

容器就绪后,可填入 [your-ip]:3200;如果使用子路径(subpath)部署,则直接填写实例的 base address 即可。

四、本地构建与自托管桌面端

README 提供了将 selfhost 前端“烘焙”进桌面壳的完整构建链,适合在内网 on-prem 环境分发。步骤如下([path-to-dist-directory] 指向第 1 步 pnpm generate 生成的 dist 目录):

1. 生成 selfhost web 应用

cd ../hoppscotch-selfhost-web
pnpm install
pnpm generate

2. 构建 webapp-bundler

cd crates/webapp-bundler
cargo build --release

3. 打包 web 应用为 bundle

cd target/release
./webapp-bundler --input [path-to-dist-directory] --output [path-to-hoppscotch-desktop]/bundle.zip --manifest [path-to-hoppscotch-desktop]/manifest.json

4. 启动开发服务器

cd hoppscotch-desktop
pnpm tauri dev

或进行生产构建:

cd src-tauri
pnpm tauri dev

4.1 webapp-bundler 的参数与产物

webapp-bundler 位于 crates/webapp-bundler/src/main.rs,它本质上是 selfhost-web 的 webapp-server 打包部分的 CLI 化实现。参数如下:

参数 说明
-i, --input 待打包的目录(必须存在,指向 selfhost-web 的 dist
-o, --output 输出的 bundle 文件路径(ZIP 格式)
-m, --manifest 可选,manifest JSON 的保存路径
-v, --version 可选,自定义 bundle 版本;缺省时读取环境变量 WEBAPP_BUNDLE_VERSION,再缺省使用工具自身的 CARGO_PKG_VERSION

从实现看(main.rs),它会用 walkdir + rayon 并行遍历输入目录,对每个文件计算 BLAKE3 哈希、大小与 MIME 类型,以 0o644 权限写入 ZIP;manifest 则包含文件清单、版本号与创建时间(created_at)。该 manifest 供 appload 插件在运行时校验/解压 bundle 使用。

4.2 一键脚本与 portable 特性

package.json 中提供了与上述步骤等价的自动化脚本,无需手工串接:

"prepare-web": "(cd ../hoppscotch-selfhost-web && pnpm install && pnpm generate) && (cd crates/webapp-bundler && cargo build --release && cd target/release && ./webapp-bundler --input ../../../../../hoppscotch-selfhost-web/dist --output ../../../../bundle.zip --manifest ../../../../manifest.json)",
"dev:full": "pnpm tauri dev",
"build:full": "pnpm tauri build",
"dev:portable": "pnpm tauri dev -- --no-default-features --features portable",
"build:portable": "pnpm tauri build -- --no-default-features --features portable"

注意 portable 变体通过 Cargo feature portable 切换(Cargo.toml)。从 path.rs 可以确认其语义差异:

  • Standard 模式:配置目录遵循平台惯例(macOS 为 ~/Library/Application Support/io.hoppscotch.desktop,Windows/Linux 为 dirs::config_dir()/io.hoppscotch.desktop);
  • Portable 模式:所有数据(hoppscotch-desktop-datalogshopp_bundle.ziphopp_manifest.json)都落在当前工作目录,适合无安装权限的场景。

main.rs 启动时会打印 PORTABLE / STANDARD 模式,并在日志目录不可用时降级为“无日志启动”(main.rs)。

五、运行时架构要点(源码佐证)

理解以下几处实现,有助于排查自托管连接问题:

  1. 插件装配lib.rs 中依次注册 window-state(记住窗口位置/尺寸,但排除 main 登录窗)、processhttpopenerupdaterstoredeep-linkdialogshellfsapploadrelay 等插件。appload 负责按 registry 从 bundle 加载对应实例的前端,relay 负责代理前端发出的网络请求。
  2. Deep Link 认证tauri.conf.json 注册了 io.hoppscotch.desktop 深链 scheme(tauri.conf.json),Rust 侧收到 URL 后发出 scheme-request-received 事件转发给前端(lib.rs)。
  3. Linux 剪贴板lib.rs 中在 Linux 上专门构建原生 Edit 菜单(Undo/Redo/Cut/Copy/Paste/Select All),因为 webkit2gtk 依赖原生菜单项才能识别 Ctrl+C/V/X 快捷键(lib.rs)。
  4. 自动更新:updater 插件默认启用,端点为 https://releases.hoppscotch.com/hoppscotch-selfhost-desktop.json,并配置了 minisign 公钥做签名校验(tauri.conf.json);updater.rs 提供 check_for_updatesdownload_and_install_updateget_download_progress 等命令(lib.rs)。自托管场景可自行调整该端点。
  5. 数据安全:应用启动时会执行版本变更备份检查(backup.rsperform_version_check_and_backup),配置目录下的数据按 latest / backup 组织(path.rs)。

六、最低系统要求

平台 系统要求 架构
Windows Windows 10 1803+ 或 Windows 11 x64
macOS macOS 10.15 (Catalina) 或更新 Intel x64 / Apple Silicon (ARM64)
Linux 推荐 Ubuntu 24.04 或类似发行版;最低要求 GLIBC 2.38+ x64

为什么推荐 Ubuntu 24.04 级别的发行版? 其自带的 webkit2gtk 2.44.0-2 版本在 WebKit、UI 库、Mesa 驱动与 Wayland 显示之间的交互上足够稳定。

Wayland 显示异常的处理:Wayland 下 WebKit 与底层图形驱动交互可能出现显示异常,可尝试以下环境变量:

WEBKIT_DISABLE_COMPOSITING_MODE=1 hoppscotch
# 或
WEBKIT_DISABLE_DMABUF_RENDERER=1 hoppscotch
# 或两者同时设置

其他注意事项

  • 旧发行版:AppImage 依赖 GLIBC 2.38+,旧系统会出现 GLIBC_2.38 not found 之类的版本错误;
  • Tauri v2 依赖 libwebkit2gtk-4.1,该库默认仅在 Ubuntu 22.04+ 的软件源中可用;
  • 从源码构建请遵循仓库的构建流程(README 中的 Sources 一节给出了官方 build workflow 的参照)。

七、小结

Hoppscotch Desktop 以 Tauri V2 为壳,把 Hoppscotch 完整 Web 前端以 bundle 形式内置到本地(appload 插件 + webapp-bundler 产出的 bundle.zip + manifest),并通过 relay 插件代理网络通信,从而同时支持 Cloud 登录与自托管实例接入。对接自托管实例时的三个关键动作是:为部署域名配置 WHITELISTED_ORIGINS(区分 app:// 与 Windows 的 http://app. 两种 origin 形式)、Docker 部署时暴露 3200 端口、需要内网分发时按第四节流程本地构建。相关实现可继续深入阅读 src-tauri/src/lib.rssrc-tauri/src/server.rssrc-tauri/src/path.rs

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
527
590
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
904
1.82 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
docsdocs
暂无描述
Markdown
889
5.78 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.52 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.33 K
1.45 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
981
502
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
540
384