Fleet Center
管理員登入
── 或 ──
裝置清單
新增裝置
建立裝置後,在目標 Mac 以 root 執行 Enrollment 指令完成安裝。
裝置已建立。在目標 Mac 以 root 執行以下指令完成安裝:
心跳監控
資料每 10 秒自動更新;距今秒數每秒即時計算。
管理員 Sessions
API Token(長效憑證)
API Token 效用等同 Session,供 Chrome Extension 等外部工具使用。建立後 Token 僅顯示一次,請妥善保存。
Passkey 管理
常用指令
點擊「複製」快速取得指令。
Agent 管理
啟動 Agent
sudo launchctl load /Library/LaunchDaemons/com.fleet.agent.plist
停止 Agent
sudo launchctl unload /Library/LaunchDaemons/com.fleet.agent.plist
強制重啟 Agent(保留 plist)
sudo launchctl kickstart -k system/com.fleet.agent
日誌查看
即時追蹤日誌
sudo tail -f /var/log/fleet-agent.log
查看最後 100 行
sudo tail -100 /var/log/fleet-agent.log
狀態檢查
查看 Agent 狀態詳情
sudo launchctl print system/com.fleet.agent
確認 Agent 是否在執行
launchctl list | grep fleet
查看 Agent 設定檔
cat /etc/fleet/agent.conf
伺服器啟動
開發模式
cd server && npm run dev
生產模式
cd server && npm start
測試 & 維護
執行測試套件
cd server && npm test
查看 SQLite DB(互動式)
sqlite3 server/fleet.db
列出所有裝置(DB 直查)
sqlite3 server/fleet.db "SELECT device_id, name, enrolled, last_seen_at FROM devices;"
查看待執行任務
sqlite3 server/fleet.db "SELECT id, device_id, action, status, created_at FROM tasks WHERE status='pending';"
Caddy / Nginx
重新載入 Caddy 設定
caddy reload --config /etc/caddy/Caddyfile
重新載入 Nginx 設定
sudo nginx -s reload
Agent 版本歷程
每次 AGENT_VERSION 異動時記錄於此。裝置卡片與心跳監控表格均顯示目前各裝置的 Agent 版本。
v2 2026-03-11
- 新增雙 process 架構:背景 subshell 以
notifyutil -R監聽com.apple.screenIsLocked/screenIsUnlocked。 - 螢幕鎖定/解鎖狀態變化 <1s 即時送出 heartbeat,不等下一次輪詢週期。
- Watcher 擁有獨立 temp file 與 RTT 狀態,不與主迴圈競爭寫入。
- Auth failure 隔離:watcher 遭遇
unknown_device只記錄日誌,由主迴圈決定是否 unload daemon。 - 主迴圈加入
trap EXIT TERM INT以確保 watcher 子 process 在 agent 結束時一併清理。
v1 初始版本
- 基礎 heartbeat 迴圈:定時傳送主機名稱、OS 版本、Agent 版本、裝置態至 Control Center。
- Long-poll 任務輪詢:支援 lock / logout / restart / shutdown / ping / device_info。
- HMAC-SHA256 簽章 + timestamp/nonce 防重放。
- 連續 3 次
unknown_device回應後自動 unload LaunchDaemon。 - NTP 時鐘偏移容忍 ±30 秒;RTT 四點量測(t1~t4)回報。
ioreg IOConsoleLocked偵測裝置態(使用中 / 鎖定 / 尚未登入)。
系統指標
載入中…
Chrome Extension 安裝
使用 Chrome Extension 可在任意裝置上快速查看艦隊狀態與執行一鍵鎖屏,無需開啟 Dashboard 網頁。
② 在 Chrome 安裝(載入未封裝)
- 解壓縮下載的
fleet-extension.zip,得到fleet-chrome-extension/資料夾 - 開啟 Chrome,前往
chrome://extensions - 右上角開啟「開發人員模式」
- 點擊「載入未封裝項目」,選取
fleet-chrome-extension/資料夾
更新版本時:重新下載解壓縮後,回到 chrome://extensions 點擊擴充功能卡片上的「重新載入(⟳)」即可,無需重新安裝。
③ 設定連線
- 點擊瀏覽器工具列的 Fleet Extension 圖示開啟 Popup
- 在「Server URL」輸入 Control Center 網址(例如:
https://fleet.example.com) - 前往 Dashboard → 管理 → Session 管理 → API Token 區段,建立新 Token
- 將 Token 貼入「API Token」欄位
- 點擊「儲存」,擴充功能即會開始顯示裝置清單
功能說明
- 裝置清單:顯示線上/離線狀態、裝置態(鎖定/使用中/未登入)、距今時間
- 一鍵鎖屏:對單一裝置發送
lock指令 - 全部鎖屏:同時對所有線上裝置鎖屏
- 自動刷新:每 15 秒自動更新裝置狀態
更新 zip(修改原始碼後)
修改 chrome-extension/ 原始碼後,執行以下指令重新封裝並覆蓋舊版:
rm -f server/public/fleet-extension.zip && cp -r chrome-extension fleet-chrome-extension && zip -r server/public/fleet-extension.zip fleet-chrome-extension/ -x "*.DS_Store" && rm -rf fleet-chrome-extension
執行後重新整理 Dashboard,下載連結即提供新版。