doona
組態
示範
繁體中文

組態

組態分為兩個檔案。主檔案 /etc/honk/config.dae 包含網路介面、節點、群組、分流與 DNS;/etc/honk/config.d/api.dae 包含 doona 使用的原生 API。主檔案引入 config.d/ 中的所有 .dae 檔案,相對路徑以主檔案所在目錄為基準。

主檔案

# /etc/honk/config.dae
include {
    config.d/*.dae
}

global {
    # The interface LAN clients reach the gateway through.
    # Remove it to proxy only the gateway's own traffic.
    lan_interface: br-lan
    # Follow the IPv4 default-route interface.
    wan_interface: auto
    data_dir: '/var/lib/honk'
    log_level: info
    dial_mode: domain
    auto_config_kernel_parameter: true
    # Resolves proxy and download hostnames without passing through honk.
    bootstrap_resolver: '1.1.1.1:53'
}

subscription {
    # Replace with your provider's subscription URL.
    my_sub: 'https://subscription.example/sub'
}

node {
    # An optional static node; replace or remove it.
    backup: 'socks5://192.0.2.2:1080'
}

group {
    proxy {
        filter: subtag('my_sub')
        filter: name('backup')
        policy: min_moving_avg
    }
}

routing {
    # Keep private destinations off the proxy; this also bypasses private DNS servers.
    dip(geoip: private) -> direct(must)
    domain(geosite: cn) -> direct
    dip(geoip: cn) -> direct
    fallback: proxy
}

dns {
    upstream {
        local_dns: 'udp://223.5.5.5:53' -> direct
        remote_dns: 'https://dns.google/dns-query' -> proxy
    }
    routing {
        request {
            qname(geosite: cn) -> local_dns
            fallback: remote_dns
        }
    }
}
  • lan_interface:將範例中的 br-lan 改為區域網路用戶端連到閘道器所用的網路介面;只代理閘道器本身的流量時移除此項。wan_interface: auto 同時處理閘道器本身的流量。
  • data_dir:執行期根目錄,預設為 /var/lib/honk,存放地理資料檔案與狀態資料庫 state/honk.db。
  • bootstrap_resolver:直接解析代理伺服器與地理資料下載位址的網域名稱,避免被 honk 攔截。直接下載且網址使用網域名稱時必須設定此項;下載預設依路由規則轉送。
  • subscription 與 node:請換成自己的訂閱與節點。之後可在 doona 的節點頁繼續新增。
  • group proxy:包含訂閱中的節點與靜態節點;min_moving_avg 選擇延遲最低的成員。
  • routing:私有位址優先以 direct(must) 直連,中國大陸網域與 IP 位址直連,其餘流量經由 proxy。
  • dns:中國大陸網域交給本地解析器,其餘經由代理以 DNS over HTTPS 解析。

API 檔案

# /etc/honk/config.d/api.dae
# Every native_api field needs a restart; a reload rejects changes.
experimental {
    native_api {
        enabled: true
        # The gateway's LAN address. The default, 127.0.0.1:9527,
        # is reachable only from the gateway itself.
        listen: '192.168.1.1:9527'
        # Administrator password login. For token mode, delete this
        # line and set secret instead; the two cannot be combined.
        password_auth: true
        # secret: 'replace-with-a-long-random-token'
        config_write: true
        ui: '/usr/share/doona'
        # On by default; listed so the names are known.
        record_flows: true
        record_traffic: true
        record_memory: true
        record_logs: true
        record_dns_log: true
        # Geodata Update works even without a state db. Direct, final
        # HTTP(S) URLs only; a redirect is refused.
        geosite_download_url: 'https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/release/geosite.dat'
        geoip_download_url: 'https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/release/geoip.dat'
    }
}

請將 192.168.1.1 換成閘道器的區域網路位址,並將此組態區塊單獨放在一個檔案。檔案在 native_api 或 clash_api 中包含 secret,或包含與 8 位元組以上監聽密鑰相同的文字時,doona 會將該檔案顯示為唯讀,因為 honk 會隱藏至少 8 位元組的密鑰,寫回隱藏後的文字會遺失密鑰。該檔案中宣告的群組同樣變為唯讀。

新增節點與訂閱會寫入主檔案,因此主檔案不能包含任何密鑰。

從其他來源開啟 doona 時,例如經由 TLS 反向代理,還需加入:

experimental {
    native_api {
        # Only when doona is opened from another origin, such as a TLS reverse proxy.
        allow_origins: 'https://panel.example'
        allowed_hosts: 'panel.example'
    }
}

native_api 欄位

listen 為 loopback 位址且設定 allow_anonymous_loopback: true 時,請求無需 Token 即可獲准存取,權限與通過 bearer Token 驗證的請求相同。此模式僅用於本機開發。

欄位 預設值 在 doona 中啟用的功能
enabled false API 監聽器。需要 secret、password_auth: true,或 loopback listen 與 allow_anonymous_loopback: true。
listen '127.0.0.1:9527' doona 連線的位址,只接受數字 IP 與連接埠。預設值只能從閘道器本機存取。
password_auth false 以管理員使用者名稱與密碼登入,不能與 secret 或 allow_anonymous_loopback 同時使用。
secret '' Token 模式,doona 會要求輸入此 Token。沒有最短長度限制;只接受不含空白或逗號的可見 ASCII。不能與 password_auth 同時使用。
config_write false 編輯與新增組態檔案,管理節點、訂閱、群組與規則,以及更新地理資料。需要 password_auth 或 secret。
ui '' 在 /ui/ 提供 doona。目錄中必須有 index.html;目錄不存在時 honk 無法啟動。embedded 需要 native-ui;發布建置已包含此功能,並在打包時嵌入 doona。
record_flows true 從 beta.9 起,連線頁和規則頁依需求顯示流程記錄。設為 false 時,執行期開關也無法開啟。
record_traffic true 流量歷史圖表。
record_memory true 記憶體歷史圖表。
record_logs true 日誌頁。
record_dns_log true DNS 記錄。
geosite_download_url、geoip_download_url '' assets.geodata.geosite 與 assets.geodata.geoip 的舊別名,仍接受但會警告。沒有狀態資料庫時,更新需要這兩個網址;有資料庫時,啟動時覆寫已儲存的網址。
allow_origins、allowed_hosts 空 從其他來源或經由反向代理開啟 doona。

native_api 的每個欄位都需要重新啟動才會生效。重載會拒絕這些欄位的變更,並保留執行中的監聽。

狀態資料庫可用時,設定頁會把地理資料來源、更新排程和「SHA-256 驗證」儲存在資料庫,而不是寫入 native_api。預設開啟驗證;.sha256sum 回傳 404 時,未經驗證的檔案本就可以載入。僅當可信鏡像站的.sha256sum 網址回傳其他錯誤時才關閉;參閱更新失敗。

地理資料問題請參閱來源無法編輯、reason 為 unsafe與更新失敗。

安裝組態檔案

sudo install -m 0600 config.dae /etc/honk/config.dae
sudo install -m 0600 api.dae /etc/honk/config.d/api.dae

接著依安裝 doona 並啟動安裝 doona,之後再啟動 honk。

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。