doona
安裝詳解
示範
繁體中文

安裝詳解

先安裝 honk 並撰寫組態,再安裝 doona 並啟動 honk。開始前確認系統需求,或依對應系統的安裝頁操作。

說明

從發布頁下載 beta.19 附件。

安裝 honk

doona beta.19 的 honk-core 附件來自 Glassyiris/honk feat/native-api 標籤 debug.2026.10.9.native-api.2,提交為 eac5e0c5fba5078a7ff4517a3e3851e7fa0f4f8e。HONK-SOURCE.txt 記錄 honk 建置,並提供 honk 原始碼與對應 doona 原始碼的連結。請從同一個發行版下載適合閘道器的封存檔與 SHA256SUMS。只有 Glassyiris/honk feat/native-api 分支的建置提供原生 API,且須啟用 native-api;daeuniverse/honk main 分支的建置沒有原生 API,詳見 honk 版本。

檔名片段 用途
x86_64、aarch64 閘道器的 CPU 架構,即 uname -m 的輸出。
unknown-linux-musl 靜態連結,適用於閘道器。無法確定時請選擇此項。
unknown-linux-gnu 連結 glibc,適用於一般發行版。
無後綴 使用預設記憶體配置器 mimalloc。
-stock 後綴 使用系統記憶體配置器,而非 mimalloc。

如需分別下載、驗證與安裝 honk-core,請先完成在其他系統上安裝的第 1 步,再依第 4 至 6 步操作。

VERSION=0.1.0-beta.19               # the doona release, without v
TARGET=x86_64-unknown-linux-musl   # or aarch64-unknown-linux-musl, -gnu, and a -stock suffix
BASE=https://github.com/Zakkaus/doona/releases/download/v$VERSION
curl -fL -O "$BASE/honk-core-debug-$TARGET.tar.gz" -O "$BASE/SHA256SUMS"
grep " honk-core-debug-$TARGET.tar.gz\$" SHA256SUMS | sha256sum -c -
tar -xzf honk-core-debug-$TARGET.tar.gz
sudo install -m 0755 honk-core-debug-$TARGET/honk-core /usr/local/bin/honk-core
honk-core --version   # prints the tag the build came from, such as debug.2026.10.9.native-api.2

如需自行建置 honk,請簽出 HONK-SOURCE.txt 註明的提交,依 honk 快速入門的步驟建置:先建置 eBPF 物件,再執行 cargo build --release -p honk-core --features ebpf,native-api。native-api 需要明確啟用,發布建置已包含此功能;未啟用 ebpf 時 honk 沒有資料路徑。發布頁同時附有該提交的原始碼封存 honk-source-<commit>.tar.gz。

執行檔已內建 eBPF 物件,不需另行安裝該物件。

目錄與地理資料

建立組態目錄與資料目錄,再下載範例規則使用的 geosite 與 geoip 檔案。honk 會在 data_dir 中尋找這兩個檔案;它們也是 honk 更新地理資料時下載的檔案。

sudo install -d -m 0700 /etc/honk /etc/honk/config.d /var/lib/honk
sudo curl -fL --retry 3 -o /var/lib/honk/geosite.dat \
  https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/release/geosite.dat
sudo curl -fL --retry 3 -o /var/lib/honk/geoip.dat \
  https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/release/geoip.dat

systemd 服務

發布套件不含 systemd 單元。請建立 /etc/systemd/system/honk-core.service:

[Unit]
Description=honk transparent proxy engine
Wants=network-online.target
After=network-online.target

[Service]
Type=notify
User=root
WorkingDirectory=/var/lib/honk
ExecStart=/usr/local/bin/honk-core --config /etc/honk/config.dae --disable-timestamp
ExecReload=/usr/local/bin/honk-core reload
Restart=on-failure
RestartSec=2s
TimeoutStopSec=30s
LimitNOFILE=1048576
LimitMEMLOCK=infinity
UMask=0077

[Install]
WantedBy=multi-user.target

此時請勿啟動服務。範例組態從 /usr/share/doona 提供 doona,該目錄沒有 index.html 時 honk 會拒絕啟動;啟動步驟位於安裝 doona 並啟動。

請勿加入 NoNewPrivileges=yes、能力邊界限制或唯讀 /proc/sys,因為啟動過程需要 BPF、網路管理、命名空間、掛載與 sysctl 權限。

撰寫組態

依組態一頁撰寫並安裝 /etc/honk/config.dae 與 /etc/honk/config.d/api.dae,再繼續下一節。

安裝 doona 並啟動

設定 ui: embedded 時,doona beta.19 的 honk debug.2026.10.9.native-api.2 附件(提交 eac5e0c5fba5078a7ff4517a3e3851e7fa0f4f8e)提供內建的 doona 0.1.0-beta.19,不需單獨安裝介面套件。也可以設定 ui: /usr/share/doona,提供依下文安裝的發行檔案,詳見最小組態。

同時下載 doona 發布套件與 SHA256SUMS,再將套件解壓縮到 /usr/share/doona,也就是 ui 指定的目錄。最後一個指令必須列出 index.html,否則 honk 無法啟動。

如需逐步下載、驗證並解壓縮程式與選用字型,請依在其他系統上安裝的第 1 至 3 步操作。

doona lite 使用壓縮檔,暫不提供發行版套件。請按安裝 doona lite操作,設定 ui: /usr/share/doona-lite,然後繼續本頁的 honk 步驟。選擇所需版本與 shell 對應的分頁。

標準版

VERSION=0.1.0-beta.19   # the doona release, without v
BASE=https://github.com/Zakkaus/doona/releases/download/v$VERSION
curl -fL -O "$BASE/doona-${VERSION}.tar.gz" -O "$BASE/doona-fonts-${VERSION}.tar.gz" -O "$BASE/SHA256SUMS"
grep -E " doona(-fonts)?-${VERSION}\.tar\.gz\$" SHA256SUMS | sha256sum -c -
sudo mkdir -p /usr/share/doona
sudo tar -xzf "doona-${VERSION}.tar.gz" -C /usr/share/doona
# Optional Noto Sans TC and SC fonts:
if [ -f "doona-fonts-${VERSION}.tar.gz" ]; then
    sudo tar -xzf "doona-fonts-${VERSION}.tar.gz" -C /usr/share/doona
fi
ls -l /usr/share/doona/index.html

doona lite

VERSION=0.1.0-beta.19
BASE=https://github.com/Zakkaus/doona/releases/download/v$VERSION
curl -fL -O "$BASE/doona-lite-${VERSION}.tar.gz" -O "$BASE/SHA256SUMS"
grep " doona-lite-${VERSION}.tar.gz\$" SHA256SUMS | sha256sum -c -
sudo mkdir -p /usr/share/doona-lite
sudo tar -xzf "doona-lite-${VERSION}.tar.gz" -C /usr/share/doona-lite
ls -l /usr/share/doona-lite/index.html

honk 每次請求都從磁碟讀取這些檔案,因此日後替換檔案不需重新啟動。

啟動 honk

啟用並啟動服務,再查看日誌:

sudo systemctl daemon-reload
sudo systemctl enable --now honk-core
sudo systemctl status honk-core
sudo journalctl -u honk-core -e

日誌出現 honk-core is running 即表示啟動完成。

狀態資料庫

honk 預設會開啟 <data_dir>/state/honk.db:global.store_subscribe 預設為開啟,本範例也啟用了 native_api。狀態資料庫沒有需要加入的開關。此資料庫儲存管理員帳號、地理資料來源,以及 honk 需要持久保存的其他狀態。honk 會自行建立 state/ 與 honk.db,/var/lib/honk 不存在時也由 honk 建立。執行 honk 的使用者必須能在 /var/lib 中建立該目錄,並能寫入該目錄;本範例中該使用者為 root。

本範例設定了 password_auth: true,資料庫無法開啟時 honk 不會啟動。Token 模式下,資料庫無法使用、路徑不安全或被管理員重設鎖定時,honk 可在沒有持久儲存的情況下啟動,並記錄警告。資料庫屬於其他應用程式、結構版本過新或已被另一個 honk 程序使用時,仍會阻止啟動。日誌訊息的意義請參閱狀態資料庫問題。

首次登入

lite 使用者請按連線 doona lite輸入後端位址並檢查連線。下方步驟與配對連結僅適用於標準版。

  1. 開啟 http://192.168.1.1:9527/ui/,也就是 listen 位址。doona 會在同一來源找到 API,並將其儲存為後端。
  2. 密碼模式:登入頁面顯示「建立管理員」。請在閘道器本機或區域網路裝置上填寫使用者名稱、密碼與確認密碼,再按下「建立並登入」。建立帳號後會自動登入。
  3. Token 模式:輸入 secret 作為 Token,或開啟配對連結。doona 載入後會從網址列移除 Token。
http://192.168.1.1:9527/ui/#/settings?api=http://192.168.1.1:9527&token=…

忘記管理員密碼時,請先停止 honk,再執行 sudo /usr/local/bin/honk-core admin reset(在 root shell 中去掉 sudo;OpenWrt 上執行 /usr/bin/honk-core --data-dir /etc/honk/data admin reset);下次啟動時會重新進入首次設定。

透過網域名稱或其他來源存取

doona 由其他伺服器提供時,瀏覽器會送出跨網域請求,honk 只接受 allow_origins 列出的來源與 allowed_hosts 列出的主機。請在設定中填寫伺服器根網址,例如 http://192.168.1.1:9527,不要附加 /api/v1。「測試連線」會在儲存前檢查探索端點,儲存後頁面會重新載入。

透過 http://owrt.lan:9527/ui/ 存取時,將以下兩個值加入現有 experimental → native_api 組態區塊的允許清單。這是組態片段,不可用它取代完整組態;保留清單中的其他值,以及現有的 listen、secret、password_auth 和 ui 設定。

experimental {
    native_api {
        allowed_hosts: 'owrt.lan:9527'
        allow_origins: 'http://owrt.lan:9527'
    }
}

allowed_hosts 允許請求的 Host,值為網域名稱和連接埠,不含協定或路徑;它不會自動允許 Origin。allow_origins 允許 HTTP 來源,值包含協定、網域名稱和連接埠,不含 /ui/、其他路徑或末尾的斜線。填寫多個值時,每個值分別加上引號,以逗號分隔;不要使用 JSON 方括號,也不要把整個清單放在同一對引號內。

HTML 可以開啟,但 JavaScript 或 CSS 請求回傳 403 時,在瀏覽器的網路面板查看這些請求。核對 Host、Origin 及其連接埠是否符合上述設定。修改後須重新啟動 honk,僅重新載入組態不足以生效。然後重新載入頁面,檢查原先失敗的請求是否成功。

建立管理員另有限制:honk 檢查實際連線來源是否為本機、私有網路或鏈路本地位址。Host 和 Origin 允許清單不會改變這項限制。

透過 HTTPS 載入的頁面無法存取純 HTTP 的 API,瀏覽器會將其視為混合內容並封鎖。請從 honk 的 /ui/ 開啟 doona,或將 honk 置於 TLS 反向代理之後。

任一靜態伺服器都能提供解壓縮後的檔案,放在網站根目錄或 /ui/ 這類前綴下皆可。頁面使用 hash 路由(/ui/#/activity),不需要改寫規則。

反向代理可讓 doona 與 honk 同源:將精確路徑 /api(探索端點)和 /api/ 下的所有路徑轉送至 honk 的監聽位址,靜態檔案放在 /ui/ 下。如果設定了代理路徑前綴,兩類 API 路徑都必須保留該前綴。

發行版套件

發行版本提供與架構無關的 deb、rpm、Arch、OpenWrt 24.10 ipk、OpenWrt 25.12 apk 與 Alpine apk 套件。安裝步驟見 Debian 或 Ubuntu、Fedora 或 RHEL、Arch、OpenWrt 或 Alpine。OpenWrt 簽署 apk 索引,Alpine 簽署每個 apk 套件,兩者的檔案與公鑰不能混用。

doona-fonts 加入選用的 Noto Sans TC 與 SC 字型。未安裝時介面使用後備字型,不會請求缺少的字型檔案。doona-precompressed 在原始檔案旁加入文字資源的 .br 與 .gz 副本,讓伺服器傳送預先壓縮的回應。它需要相同版本的主套件,約占 1.6 MB 儲存空間;未安裝時主套件保持不變。手動安裝時,將 doona-precompressed-<version>.tar.gz 解壓縮到 doona 目錄。

OpenWrt、Alpine、Gentoo 與 Nix 的打包設定尚未進入各發行版儲存庫。在 Gentoo 上安裝使用 ebuild;AUR 的 doona-bin 位於獨立儲存庫。本機打包可使用 make install DESTDIR=… PREFIX=/usr 與 make install-fonts。

Debian 與 Ubuntu 的套件名稱為 doona-web,安裝目錄為 /usr/share/doona-web,選用套件為 doona-web-fonts 與 doona-web-precompressed。其他格式安裝到 /usr/share/doona。

日常維護

重載與重新啟動

sudo systemctl reload honk-core    # re-read the configuration
sudo systemctl restart honk-core   # needed for native_api, interfaces, data_dir
sudo journalctl -u honk-core -e    # look for applied or rejected

重載會重新讀取組態,並在日誌中記錄 applied 或 rejected。honk 會拒絕變更需要重新啟動的設定,並在日誌中列出欄位,包括 native_api、網路介面、TPROXY 設定、data_dir、log_level、log_file、check_interval、tcp_check_url、tcp_check_http_method、udp_check_dns、store_subscribe、nfqueue_enable、dns.bind、Clash API 設定、auto_config_kernel_parameter、pprof_port、so_mark_from_dae 與 experimental.cache_file。將 tls_implementation 改為 utls 或從 utls 改為其他值也需要重新啟動。

組態頁會自動套用可重載的修改。若修改需要重新啟動,API 會在寫入前拒絕,doona 會列出相關設定與重新啟動指令。請在主機上編輯這些設定,再重新啟動 honk。

更新 honk

從較新的 doona 發布版本下載 honk-core 封存檔,依安裝 honk 一節安裝,再執行 sudo systemctl restart honk-core 並檢查 honk-core --version。請將版本與 honk 版本註明的版本對照。

更新 doona

設定 ui: /usr/share/doona 時,將新版本解壓縮到該目錄,再於瀏覽器中重新載入頁面,honk 不需重新啟動。設定 ui: embedded 時,須安裝內建新版 doona 的 honk-core 建置(見「更新 honk」),或將新版本安裝到 /usr/share/doona 並設定 ui: /usr/share/doona。完成任一變更後,重新啟動 honk 並重新載入頁面。

更新地理資料

在設定 → 地理資料中按「立即更新」,honk 會更新已載入的檔案並啟用有變更的內容。套件檔案的替換檔案會寫入 data_dir。此操作不能安裝缺少的檔案;請按目錄與地理資料下載,再重啟 honk。內容相同的檔案不會重寫;所有內容均未變更時,更新成功但不啟用或重載。自動更新預設開啟,每 24 小時檢查一次;可在同一卡片關閉或變更「更新間隔(小時)」。「重設為預設值」會先要求確認,再移除所有地理資料覆寫及取自設定檔的值,恢復內建來源與預設值。該卡片也列出已安裝的地理資料檔案。

檔案位置

路徑 內容
/etc/honk/config.dae 主組態檔案
/etc/honk/config.d/api.dae 原生 API 組態區塊
/var/lib/honk/ data_dir:地理資料檔案與執行期資料
/var/lib/honk/state/honk.db 狀態資料庫
/usr/share/doona/ 在 /ui/ 提供的 doona 檔案
journalctl -u honk-core honk 日誌
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 檢查組態。 服務管理本頁以 systemd 或 OpenWrt procd 服務的形式運作 honk:先建立一次服務,再列出啟動、停止、重新啟動、重載 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。