doona
服務管理
示範
繁體中文

服務管理

本頁以 systemd 或 OpenWrt procd 服務的形式運作 honk:先建立一次服務,再列出啟動、停止、重新啟動、重載 honk 以及檢視日誌的命令。本頁不含 OpenRC 步驟。請先完成最小組態。

doona 的套件都不安裝 honk 服務,honk 的發行封存檔中也沒有服務檔案,因此第 1 步需要自行建立。

系統 服務管理器 使用的分頁
Debian、Ubuntu、Fedora、RHEL、Arch Linux、使用 systemd 的 Gentoo systemd 「sudo」或「root」
OpenWrt procd 「OpenWrt」
使用 OpenRC 的 Gentoo 或 Alpine OpenRC 不在本頁範圍內:見下文 OpenRC 一節

OpenRC

doona 與 honk 都不提供 OpenRC 指令碼。如需完成首次登入,用最小組態第 6 步的命令在前景啟動 honk:

sudo

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

root

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

honk 持續運作,直到按下 Ctrl+C 或關閉終端機,日誌直接輸出到該終端機。honk 不會隨開機啟動。本頁其餘內容只適用於 systemd 與 procd。

1. 建立服務

此步只需執行一次。systemd 單元與 honk 快速入門給出的相同;procd 指令碼以 OpenWrt 的路徑啟動同一條命令。

sudo

sudo tee /etc/systemd/system/honk-core.service > /dev/null <<'EOF'
[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
EOF
sudo systemctl daemon-reload

root

cat > /etc/systemd/system/honk-core.service <<'EOF'
[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
EOF
systemctl daemon-reload

OpenWrt

cat > /etc/init.d/honk-core <<'EOF'
#!/bin/sh /etc/rc.common

START=99
STOP=10
USE_PROCD=1

start_service() {
	procd_open_instance
	procd_set_param command /usr/bin/honk-core --config /etc/honk/config.dae --data-dir /etc/honk/data --disable-timestamp
	procd_set_param limits nofile="1048576 1048576"
	procd_set_param env MIMALLOC_PURGE_DELAY=0
	procd_set_param respawn
	procd_set_param stdout 1
	procd_set_param stderr 1
	procd_close_instance
}

reload_service() {
	/usr/bin/honk-core reload
}
EOF
chmod 0755 /etc/init.d/honk-core

不要在單元中加入 NoNewPrivileges=yes、能力限制或只讀的 /proc/sys:honk 啟動時需要 BPF、網路管理、名稱空間、掛載與 sysctl 權限。

在 OpenWrt 上,請保留上述 procd 指令碼中的 MIMALLOC_PURGE_DELAY=0,讓 mimalloc 立即將已釋放的記憶體歸還給系統。此建議也適用於 debug.2026.9.28.native-api.4 及之後將 geodata 更新串流寫入磁碟的建置:在 256 MB 路由器上,這類建置未設定時,geodata 更新後仍佔用約 120 MB;設定後連續三次更新穩定在 36–46 MB。

2. 啟動 honk 並設為開機啟動

sudo

sudo systemctl enable --now honk-core

root

systemctl enable --now honk-core

OpenWrt

/etc/init.d/honk-core enable
/etc/init.d/honk-core start

systemd 輸出 Created symlink '/etc/systemd/system/multi-user.target.wants/honk-core.service' → '/etc/systemd/system/honk-core.service'.。honk 報告就緒後,命令才返回。

3. 檢查 honk 是否在運作

sudo

sudo systemctl status honk-core

root

systemctl status honk-core

OpenWrt

/etc/init.d/honk-core status

正在運作的 honk 如下所示。Debian 13 上的 systemd:

● honk-core.service - honk transparent proxy engine
     Loaded: loaded (/etc/systemd/system/honk-core.service; enabled; preset: enabled)
     Active: active (running) since …

procd 輸出 running;停止後輸出 inactive。

日誌中也會出現 honk-core is running. Press Ctrl+C to stop.;把位址換成你的位址後執行 curl http://192.168.1.1:9527/api,返回內容與最小組態第 5 步相同。

檢視日誌

sudo

sudo journalctl -u honk-core -e

root

journalctl -u honk-core -e

OpenWrt

logread -e honk-core

如需持續顯示新寫入的日誌:

sudo

sudo journalctl -u honk-core -f

root

journalctl -u honk-core -f

OpenWrt

logread -f -e honk-core

按 Ctrl+C 結束。systemd 日誌中也保留了之前幾次啟動的內容,請從最後一行 starting 開始閱讀。

重載組態

修改 .dae 檔案後重載 honk。重載會重新讀取組態,不停止 honk。

sudo

sudo systemctl reload honk-core

root

systemctl reload honk-core

OpenWrt

/etc/init.d/honk-core reload

日誌先顯示 SIGHUP reload request 1 started,隨後顯示 applied,或顯示 rejected 與 reload rejected: changed fields require process restart fields=[…]。其中列出的欄位需要重新啟動才能生效,包括 native_api 下的全部欄位、log_level 與各介面。doona 的「組態」頁儲存後會自動重載。

重新啟動

重新啟動會停止 honk 並再次啟動。

sudo

sudo systemctl restart honk-core

root

systemctl restart honk-core

OpenWrt

/etc/init.d/honk-core restart

停止

sudo

sudo systemctl stop honk-core

root

systemctl stop honk-core

OpenWrt

/etc/init.d/honk-core stop

honk 保持停止,直到下次啟動或開機。

取消開機啟動

sudo

sudo systemctl disable honk-core

root

systemctl disable honk-core

OpenWrt

/etc/init.d/honk-core disable

下一步:首次登入。

遇到問題時

看到的內容 原因與處理
Active: failed 或 activating (auto-restart) honk 在啟動階段結束。日誌中以 fatal error, shutting down: 開頭的一行給出原因;常見原因見最小組態。
systemd 找不到 honk-core.service 跳過了第 1 步,或第 1 步之後沒有運作 systemctl daemon-reload。
重載時出現 Error: no running honk-core instance; /run/honk-core.lock does not exist honk 沒有運作,或以 --mock-ebpf 運作(這種方式不持有鎖)。請啟動服務,而不是重載。
重載後修改沒有生效 日誌中顯示 reload rejected。請改為重新啟動。

更多錯誤訊息見疑難排解。

doona

doona 文件

繁體中文
doona 文件doona 是 daeuniverse 引擎共用原生 API 的靜態 Web 介面:目前對接 honk,dae 實作同一份契約後也可對接。 系統需求 在 Debian 或 Ubuntu 上安裝本頁在 Debian、Ubuntu 及其他使用 APT 的系統上,用 .deb 套件安裝 doona,並從同一個 doona 發行版本安裝 honk-core。 在 Fedora 或 RHEL 上安裝本頁在 Fedora、RHEL 及其他使用 DNF 的系統上,用 .rpm 套件安裝 doona,並從同一個 doona 發行版本安裝 honk-core。 在 Arch Linux 上安裝本頁在 Arch Linux 及其他使用 pacman 的系統上,用 .pkg.tar.zst 套件安裝 doona,並從同一個 doona 發行版本安裝 honk-core。 在 Gentoo 上安裝本頁用 Portage 從 doona 儲存庫中的 ebuild 安裝 doona,並從同一個 doona 發行版本安裝 honk-core。 在 OpenWrt 上安裝本頁在 OpenWrt 25.12 上用發行版本中的封存檔安裝 doona 與 honk-core。 在其他系統上安裝本頁在沒有 doona 套件、符合核心要求的 x86_64 或 aarch64 Linux 系統(例如 Alpine Linux)上,用發行版本中的封存檔安裝 doona 與 honk-core。 安裝詳解先安裝 honk 並撰寫組態,再安裝 doona 並啟動 honk。 最小組態本頁撰寫能啟動 honk 並提供 doona 的最小 honk 組態,然後手動啟動 honk 檢查組態。 服務管理本頁以 systemd 或 OpenWrt procd 服務的形式運作 honk:先建立一次服務,再列出啟動、停止、重新啟動、重載 honk 以及檢視日誌的命令。 首次登入本頁在瀏覽器中開啟 doona,建立管理員帳戶,並檢查 doona 是否顯示正在運作的 honk。 介面導覽本頁說明登入 doona 後各項功能的位置:四個導覽分區、頂端列,以及頁面內的分頁、詳細資料面板與操作選單。 觀測流量本頁說明「活動」分區(「活動」與「系統狀態」)及「觀測」分區(「連線」、「分流」、「DNS」、「日誌」與「事件」)。 路由、節點與規則本頁說明「路由」分區中的「策略」「節點」與「規則」三個頁面。 組態與設定本頁說明「組態」頁:在此檢視、驗證並套用 honk 的組態檔。 常見操作本頁彙整調整路由、查看流量與維護 honk 的常用步驟。 組態組態分為兩個檔案。 功能請先確認閘道器能轉送流量。 疑難排解 開發送出 pull request 前先讀 CONTRIBUTING.md。