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 上使用 mimalloc 建置時,請保留上述 procd 指令碼中的 MIMALLOC_PURGE_DELAY=0,讓已釋放的記憶體及時歸還系統。使用系統配置器的建置不使用此設定。

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 步相同。

API 可存取不代表透明分流正常。請在「系統狀態」檢查資料路徑降級情況,並從區域網路用戶端測試流量。

檢視日誌

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 文件首次啟動若只使用直連,請按快速入門操作。 快速入門使用僅直連的 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。