doona
最小組態
示範
繁體中文

最小組態

本頁撰寫能啟動 honk 並提供 doona 的最小 honk 組態,然後手動啟動 honk 檢查組態。本頁假定 doona 已位於 /usr/share/doona,honk-core 也已安裝,即各安裝頁完成後的狀態。

說明

Debian 與 Ubuntu 的套件名稱為 doona-web 與 doona-web-fonts,安裝於 /usr/share/doona-web 下。請將下文範例中的 ui: '/usr/share/doona' 改為 ui: '/usr/share/doona-web'。

此範例使用兩個檔案。/etc/honk/config.dae 是主檔案。/etc/honk/config.d/api.dae 啟用 doona 所用的原生 API。在加入節點與規則之前,所有連線都直接發出;更完整的範例見組態。

開始之前

  • 閘道器上的 shell:可使用 sudo 的使用者,或 root。在 OpenWrt 上,凡是提供「OpenWrt」分頁的地方都選擇它。該分頁的命令以 root 執行,並把 honk 的資料放在 /etc/honk/data,因為 OpenWrt 的 /var 位於記憶體中,重新啟動後清空。
  • 進入這台機器的第二種途徑,例如主控台,供第 6 步使用。honk 正式啟動時會改動閘道器的網路設定。

1. 檢視閘道器的區域網路位址

區域網路裝置透過這個位址開啟 doona。

ip -4 addr show

找到區域網路裝置所連線的介面(OpenWrt 上為 br-lan),記下 inet 後面的位址,不含 /24。例如:

    inet 192.168.1.1/24 brd 192.168.1.255 scope global eth0

為後續步驟設定該位址:

LAN_IP=192.168.1.1

2. 建立目錄

sudo

sudo install -d -m 0700 /etc/honk /etc/honk/config.d /var/lib/honk

root

install -d -m 0700 /etc/honk /etc/honk/config.d /var/lib/honk

OpenWrt

mkdir -p /etc/honk/config.d /etc/honk/data
chmod 0700 /etc/honk /etc/honk/config.d /etc/honk/data

這些目錄只有 root 可以讀取,因為組態與狀態資料庫中儲存著憑證。

3. 撰寫主檔案

sudo

sudo tee /etc/honk/config.dae > /dev/null <<'EOF'
include {
    config.d/*.dae
}

global {
    wan_interface: auto
}

routing {
    fallback: direct
}
EOF

root

cat > /etc/honk/config.dae <<'EOF'
include {
    config.d/*.dae
}

global {
    wan_interface: auto
}

routing {
    fallback: direct
}
EOF

OpenWrt

cat > /etc/honk/config.dae <<'EOF'
include {
    config.d/*.dae
}

global {
    wan_interface: auto
    lan_interface: br-lan
    data_dir: '/etc/honk/data'
    bootstrap_resolver: '127.0.0.1:53'
}

routing {
    fallback: direct
}
EOF
行 作用
include { config.d/*.dae } 讀取 /etc/honk/config.d/ 中的每個 .dae 檔案,路徑相對於主檔案。第 4 步的 API 檔案即在其中。
wan_interface: auto 把 honk 掛到 IPv4 預設路由所在的介面上,由 honk 處理閘道器自身的流量。
lan_interface: br-lan 將 honk 掛到 OpenWrt 的區域網路橋接介面,處理區域網路裝置的流量。
data_dir: '/etc/honk/data' 僅用於 OpenWrt。honk 存放地理資料與狀態資料庫(包括管理員帳戶)的目錄。其他系統使用預設值 /var/lib/honk。
routing { fallback: direct } 所有連線都直接發出,不經過代理。節點、群組與規則稍後在 doona 或按組態一頁加入。

在 OpenWrt 上,bootstrap_resolver: '127.0.0.1:53' 使用 dnsmasq 解析直接下載網址的網域名稱。地理資料網址不得重新導向:使用 raw.githubusercontent.com 等最終網址,不要使用 GitHub 發行版本的網址。

依要處理的流量設定 lan_interface:

  • 主路由器:使用 br-lan,用戶端已將這台路由器設為閘道器。
  • 旁路由器:使用 br-lan,並將用戶端的閘道器與 DNS 設為旁路由器的區域網路位址;可逐一設定用戶端,也可修改主路由器的 DHCP 設定。
  • 僅處理本機流量:省略 lan_interface,與 sudo、root 兩個範例相同。

lan_interface: auto 會選取預設路由所在的介面,在主路由器上通常是 WAN。

4. 撰寫 API 檔案

該檔案使用第 1 步設定的 LAN_IP。

sudo

sudo tee /etc/honk/config.d/api.dae > /dev/null <<EOF
experimental {
    native_api {
        enabled: true
        listen: '${LAN_IP}:9527'
        password_auth: true
        config_write: true
        ui: '/usr/share/doona'
    }
}
EOF
sudo cat /etc/honk/config.d/api.dae

root

cat > /etc/honk/config.d/api.dae <<EOF
experimental {
    native_api {
        enabled: true
        listen: '${LAN_IP}:9527'
        password_auth: true
        config_write: true
        ui: '/usr/share/doona'
    }
}
EOF
cat /etc/honk/config.d/api.dae

OpenWrt

cat > /etc/honk/config.d/api.dae <<EOF
experimental {
    native_api {
        enabled: true
        listen: '${LAN_IP}:9527'
        password_auth: true
        config_write: true
        ui: '/usr/share/doona'
    }
}
EOF
cat /etc/honk/config.d/api.dae

輸出的檔案中,listen 一行應為你的位址,例如 listen: '192.168.1.1:9527'。

使用 openwrt.lan 等網域名稱時,須分別在 allowed_hosts 中設定主機與連接埠,在 allow_origins 中設定瀏覽器來源,然後重新啟動 honk。語法與 403 檢查步驟見網域名稱與來源存取。

行 作用
experimental { native_api 原生 API 組態塊,必須位於 experimental 之內。
enabled: true 啟動 API 監聽。doona 需要它。
listen: '…:9527' 開啟 doona 所用的位址與埠。預設值 127.0.0.1:9527 只能從閘道器本機存取。
password_auth: true 使用管理員使用者名稱與密碼登入。管理員在首次登入時建立。啟用 API 卻沒有設定任何登入方式時,honk 拒絕啟動。
config_write: true 允許 doona 編輯組態、節點、訂閱、群組與規則。關閉此項會阻止組態寫入;執行期控制、群組選擇以及經過認證的地理資料設定仍可寫入。見 doona 可以修改什麼。
ui: '/usr/share/doona' 在 /ui/ 提供 doona 的檔案。該目錄中沒有 index.html 時,honk 拒絕啟動。

每個 native_api 欄位都要重新啟動後才生效。其餘欄位見欄位表。

doona beta.19 的 honk-core debug.2026.10.9.native-api.2 附件(提交 eac5e0c5fba5078a7ff4517a3e3851e7fa0f4f8e)內建 doona 0.1.0-beta.19。要在 /ui/ 提供內建介面,將上面的 ui 行改為:

ui: embedded

doona lite 的壓縮檔安裝到 /usr/share/doona-lite,並設定 ui: /usr/share/doona-lite。ui: embedded 僅提供標準版。修改 ui 後必須重新啟動 honk。

使用 ui: embedded 時,獨立的介面套件是可選項。內建介面不含 Noto Sans TC/SC,瀏覽器會使用系統字型。如需提供外部介面檔案或這些字型,安裝 doona 和 doona-fonts,並將 ui 指向安裝目錄,例如 /usr/share/doona;Debian 或 Ubuntu 則使用 doona-web、doona-web-fonts 和 /usr/share/doona-web。

5. 檢查組態

honk 沒有單獨的檢查命令。用 --mock-ebpf 啟動一次:honk 會讀取並接受整份組態,啟動 API 並提供 doona,但不改動網路。

sudo

sudo /usr/local/bin/honk-core --config /etc/honk/config.dae --mock-ebpf

root

/usr/local/bin/honk-core --config /etc/honk/config.dae --mock-ebpf

OpenWrt

honk-core --config /etc/honk/config.dae --data-dir /etc/honk/data --mock-ebpf

honk 在前景持續運作。每行以時間戳開頭,其中應包括:

INFO honk_core: honk-core debug.2026.10.9.native-api.2 starting
INFO honk_core: Config: /etc/honk/config.dae
INFO honk_core: Loaded 2 nodes, 0 groups, 0 routing rules
WARN honk_core: NFQUEUE is unavailable at startup; continuing with NFQUEUE staging disabled requested=true reason=the mock eBPF backend was selected
INFO honk_core: Using mock eBPF backend
INFO honk_core: listen=192.168.1.1:9527 native API listener ready
INFO honk_core: honk-core is running. Press Ctrl+C to stop.

使用 --mock-ebpf 時出現 WARN 一行屬於正常情況。honk 運作期間,在第二個終端機中查詢 API,並把 192.168.1.1 換成你的位址:

curl http://192.168.1.1:9527/api

API 返回一行內容;setup_required: true 表示尚未建立管理員:

{"api_major":1,"auth":{"mode":"password","setup_required":true},"links":{"auth_login":"/api/v1/auth/login","auth_setup":"/api/v1/auth/setup"},"name":"dae/honk-native"}

在第一個終端機中按 Ctrl+C。honk 輸出 Received SIGINT, shutting down...,最後輸出 honk-core stopped。

6. 正式啟動 honk 一次

這次啟動會載入 eBPF 程式並掛到組態指定的介面上。請準備好進入機器的第二種途徑。

sudo

sudo /usr/local/bin/honk-core --config /etc/honk/config.dae

root

/usr/local/bin/honk-core --config /etc/honk/config.dae

OpenWrt

honk-core --config /etc/honk/config.dae --data-dir /etc/honk/data

日誌中出現同樣的 native API listener ready 與 honk-core is running. Press Ctrl+C to stop.,但沒有 mock 相關的行。按 Ctrl+C 停止 honk;之後由下一頁的服務運作 honk。

下一步:服務管理。

遇到問題時

honk 在以 fatal error, shutting down: 開頭的行或 ERROR 行中給出原因。

看到的內容 原因與處理
native API listener bind failed listen 位址不屬於這台機器。請重做第 1 步與第 4 步。
failed to inspect native UI index.html: No such file or directory 檢查 ui 實際指向的目錄是否包含 index.html:Debian 或 Ubuntu 為 /usr/share/doona-web,其他平台通常為 /usr/share/doona。按對應平台的安裝頁安裝 doona。
Subscription network owner failed error="subscription HTTP client creation failed",隨後是 subscription network startup failed 缺少 CA 憑證。請安裝 ca-certificates 套件(OpenWrt 上為 ca-bundle)。
native API requires a secret, password login, or explicitly anonymous loopback api.dae 缺少 password_auth: true 一行。
native API setting belongs inside native_api { } 某個 native_api 欄位直接寫在了 experimental 下。請把它移入 native_api { }。
unknown experimental setting enabled 直接寫在了 experimental 下,或這是沒有原生 API 的 daeuniverse/honk main 分支建置。見 unknown experimental setting。
command not found honk-core 不在命令所指的路徑上。請重做安裝 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。