doona
开发
演示
简体中文

开发

提交 pull request 前先读 CONTRIBUTING.md。修正翻译或提议新增语言,见其中的 Translations 一节。

本文档及其站点的源码在 Zakkaus/doona-docs。

命令

在仓库根目录执行:

pnpm install --frozen-lockfile
pnpm build                       # writes dist/
pnpm check                       # types, lint, translations, formatting, unit tests, generated API types
pnpm check:size                  # gzip budgets for the dist/ build
pnpm e2e:install --with-deps     # once, for the browser tests
pnpm e2e                         # rebuild, then test against the mock at the root and under /ui/
pnpm package                     # release/doona-<version>.tar.gz, doona-fonts-<version>.tar.gz, SHA256SUMS

pnpm dev 以 Vite 开发服务器提供模拟后端。pnpm package 使用 package.json 中的版本号;pnpm package --git-version 使用去掉开头 v 的 git describe --tags --always 输出。时间戳使用 SOURCE_DATE_EPOCH,未设置时使用 HEAD 提交时间。

对实际后端测试

在仓库根目录执行 DOONA_API=http://router:9527 DOONA_TOKEN=… pnpm e2e:live,可对实际后端执行只读的无障碍、移动端导航与键盘测试。DOONA_API 必填;后端不要求身份验证时可省略 DOONA_TOKEN。测试拒绝通过 fixture 存储覆盖后端设置,并中止控制请求,包括 DNS 查询。普通 pnpm e2e 测试在设置了 DOONA_API 时拒绝执行,除非显式设置 DOONA_LIVE_OBSERVE=1。

截图

node tools/screenshots.mjs <url> docs/screenshots 截取各语言的模拟后端页面、配色总览、英文主题图库、手机拼图、页面导览静帧与路由动画,输出 WebP。需要安装 cwebp、img2webp 与 Playwright 的 Chromium。

源码布局

路径 用途
src/features/ 各页面及其 hook 与文案,一页一个文件夹
src/shell/ 应用外壳、导航与搜索
src/ui/ 共用组件、主题与图标
src/api/ 客户端、后端档案、引擎适配器与生成的类型
mock/ 演示、预览与测试使用的模拟后端
src/store/ 资源监听、读取缓存与操作 hook
src/i18n/ 翻译与区域设置辅助
contract/ 内嵌的 OpenAPI 契约与钉点
public/ 静态图标、manifest 与 service worker
e2e/ 浏览器测试
tools/ 构建、打包、一致性检查与截图工具
install/ nfpm 配置与 OpenWrt、Alpine、Gentoo、Nix 打包配置
docs/ 国旗与字体文档
node_modules/@fontsource-variable/ Vite 打包的 Noto Sans TC/SC 字体源码

截图工具在运行时创建 docs/screenshots/;截图不在源码树中。

契约

SOURCE.md 记录 openapi.yaml 的钉点。移动钉点后执行 pnpm gen:api 重新生成 src/api/types.ts。node tools/conformance.mjs http://router:9527 --token … 按契约检查线上后端的发现端点、能力与只读响应,不发送任何修改。

版本变更见 CHANGELOG.md。

doona lite

doona lite 源代码位于 apps/lite,具有独立的锁文件。在 doona 仓库根目录安装两套依赖,再构建 lite:

pnpm install --frozen-lockfile
pnpm --dir apps/lite install --frozen-lockfile
pnpm --dir apps/lite build

输出目录为 apps/lite/dist。使用 pnpm --dir apps/lite dev 启动开发服务器。lite 具有独立的界面与状态,复用标准版的 API 客户端与生成的类型;详见后端要求。

doona

doona 文档

简体中文
doona 文档首次启动若只使用直连,请按快速入门操作。 快速入门使用仅直连的 honk 配置启动 doona 标准版,登录后验证网关本机的流量。 标准版与 doona lite标准版用于管理配置与观测流量。 系统要求 在 Debian 或 Ubuntu 上安装在 Debian、Ubuntu 或其他使用 APT 的系统上,从 doona-web .deb 软件包安装 doona,并从同一个发布版本安装 honk-core。 在 Fedora 或 RHEL 上安装在 Fedora、RHEL 或其他使用 DNF 的系统上,从 .rpm 软件包安装 doona,并从同一个发布版本安装 honk-core。 在 Arch Linux 上安装在 Arch Linux 或其他使用 pacman 的系统上,从 .pkg.tar.zst 软件包安装 doona,并从同一个发布版本安装 honk-core。 在 Gentoo 上安装在本地 ebuild 仓库中,用 Portage 从 doona 的 ebuild 安装 doona,并从同一个发布版本安装 honk-core。 在 OpenWrt 上安装在 OpenWrt 25.12 上,从发布软件包或归档安装 doona,并从同一个发布版本安装 honk-core。 在其他系统上安装在符合以下内核要求的 x86_64 或 aarch64 Linux 系统上,从发布归档安装 doona 与 honk-core。 安装详解先安装 honk 并编写配置,再安装 doona 并启动 honk。 最小配置本页编写能启动 honk 并提供 doona 的最小 honk 配置,然后手动启动 honk 检查配置。 服务管理本页把 honk 作为 systemd 或 OpenWrt procd 服务运行:先创建一次服务,再列出启动、停止、重启、重载 honk 以及查看日志的命令。 为第一条连接设置路由从快速启动继续,保持 honk 运行并以管理员身份登录。 首次登录本页在浏览器中打开 doona,创建管理员账户,并检查 doona 是否显示正在运行的 honk。 界面导览用导航打开页面,用顶部栏搜索或刷新,用标签页切换视图。 观测流量用「活动」与「系统状态」查看引擎健康,用「连接」「分流」与「DNS」检查流量。 路由、节点与规则策略管理组选择与成员。 配置与设置「配置」页读取、校验并应用 honk 的配置文件。 常见操作本页介绍标准版;doona lite 请参阅 doona lite。 功能各项功能的前提条件与操作被禁用的原因,见功能启用条件。 doona litedoona lite 为初学者提供较小的界面,用于编辑 honk 配置。 连接 doona lite将 doona lite 连接到 honk 原生 API,或在没有后端时打开演示。 doona lite 常见操作使用 doona lite 导入资源并编辑 honk 配置。 配置参考本页列出 doona 涉及的 honk DAE 设置、默认值及生效方式。 doona 可以修改什么doona 通过不同的控制项修改配置源、运行时状态、持久保存的地理数据设置和浏览器偏好。 功能启用条件在表中找到你要使用的标准版功能,再按对应章节检查前提并启用。 故障排查 开发提交 pull request 前先读 CONTRIBUTING.md。