
戰略品牌合作夥伴
VMRACK.NET | 讓 Dujiao-Next 部署更簡單
️官方合作閃購款,僅需76刀/年,三網優化線路,助力您業務起飛,支持:支付寶/paypal/USDT。點我享低價獨家閃購!🎉




更新時間:2026-05-16
dujiao-next 二進位內建 admin 子指令,用於伺服器端維運操作:列出管理員、重設 2FA、重設密碼。常見使用情境是超級管理員忘記密碼或遺失 2FA 裝置時的緊急還原。
這些指令直接讀寫資料庫,需要伺服器 shell 權限,繞過了後台 UI 授權。請妥善管控可執行該二進位的維運帳號。
config.yml(預設會從工作目錄載入)config.yml 中資料庫設定正確(SQLite 檔案路徑或 PostgreSQL 連線字串)admin 子指令引入版本(2026-05 之後的發行版)與
dujiao-next(server 啟動)共用同一份設定。不會啟動 HTTP / worker / 內嵌前端,不列印 banner,僅初始化資料庫後執行子指令並退出。
dujiao-next admin list-admins # 列出所有管理員
dujiao-next admin reset-2fa --username <name> # 重設指定管理員的 2FA
dujiao-next admin reset-password --username <name> # 互動式重設密碼(兩次確認)
dujiao-next admin reset-password --username <name> --password <new> # 一次性提供新密碼退出碼:0 成功;1 任何失敗(參數錯誤 / 資料庫錯誤 / 校驗失敗),便於腳本判定。
列出目前資料庫內所有管理員帳號的概覽,不輸出密碼雜湊、TOTP secret、還原碼等敏感欄位。
dujiao-next admin list-admins輸出範例:
ID USERNAME IS_SUPER 2FA_ENABLED LAST_LOGIN
1 admin true yes (2026-04-10) 2026-05-15 14:22:08
2 ops false no 2026-05-14 09:10:33適用情境:確認目標管理員的 username、檢查 2FA 啟用狀況、定位失聯的超級管理員帳號。
清空指定管理員的所有 TOTP 欄位(totp_secret、totp_enabled_at、recovery_codes、totp_pending_*),同時:
token_version 自增 1token_invalid_before 寫入當前時間效果:該管理員所有現有工作階段立即失效,下次登入走密碼登入路徑,並會被提示重新繫結 2FA。
dujiao-next admin reset-2fa --username admin適用情境:管理員遺失手機 / Authenticator App、裝置被盜、還原碼也遺失。
寫入稽核日誌(
admin_login_logs)事件類型2fa_reset_by_admin,Client IP 記為cli、UA 記為admin-tool。
超級管理員忘記密碼的兜底還原路徑。一般管理員忘記密碼請由超級管理員在後台 UI 重設(走完整密碼策略與稽核)。
執行後:
password_hash 被新密碼的 bcrypt 雜湊覆蓋token_version 自增 1token_invalid_before 寫入當前時間password_reset_by_cli不傳 --password 時,從終端機隱藏讀取兩次輸入並比對:
dujiao-next admin reset-password --username admin
新密碼:
再次輸入:
OK: password reset for admin id=1 username=admin at 2026-05-16T20:34:18+08:00
提示: 該管理員所有現有工作階段已強制登出,請用新密碼重新登入。dujiao-next admin reset-password --username admin --password 'StrongPwd!2026'⚠️ 該寫法會把密碼留在 shell 歷史記錄(
~/.bash_history/~/.zsh_history)、行程列表(ps aux)、稽核日誌等位置。僅建議在一次性自動化腳本中使用,執行後立即從歷史記錄刪除並改用強密碼。
非終端機環境(CI / 自動化)下,從 stdin 讀取一行明文:
echo 'StrongPwd!2026' | dujiao-next admin reset-password --username adminCLI 緊急還原情境僅校驗長度 ≥ 8,不強制大小寫 / 數字 / 符號策略。強烈建議維運登入後立即在管理後台改成符合貴站策略的強密碼。
cd /opt/dujiao # 與 server 同一工作目錄(可讀取 config.yml)
./dujiao-next admin list-admins
./dujiao-next admin reset-password --username admin# 假設 WorkingDirectory=/opt/dujiao,User=dujiao
sudo -u dujiao /opt/dujiao/dujiao-next admin reset-password --username admin# 進入容器執行(容器內 WORKDIR 已是 /app,config.yml 透過 volume 掛載)
docker compose exec dujiao-next ./dujiao-next admin list-admins
docker compose exec dujiao-next ./dujiao-next admin reset-password --username admin
# 或一次性容器
docker compose run --rm api ./dujiao-next admin reset-2fa --username adminDocker 環境下互動式密碼輸入需要帶
-it(docker compose exec -it api ...)。
進入 API 程式目錄,以執行 API 的同一使用者身分執行:
sudo -u www /www/wwwroot/dujiao-next/dujiao-next admin reset-password --username admindujiao-next admin ... 的帳號都能改超級管理員密碼或清 2FA,務必限制伺服器 shell 存取。admin_login_logs 資料表會記錄 password_reset_by_cli / 2fa_reset_by_admin 事件,事後可追溯。| 現象 | 排查方向 |
|---|---|
init db: ... | config.yml 不存在 / 資料庫檔案路徑錯誤 / PostgreSQL 連線失敗 |
no admin with username="xxx" | 使用者名稱拼寫錯誤,先跑 list-admins 確認 |
密碼長度至少 8 個字元 | 提高密碼長度後重試 |
兩次輸入不一致 | 互動模式下兩次輸入需完全一致 |
| 指令卡住無反應 | 終端機模式等待密碼輸入;非終端機模式等待 stdin 一行明文 |