Dashboard Overview
Recent Audit Events
Client Management
Connected Clients
| Client ID | Hostname | OS / Arch | Version | Remote | Connected | Status | Proxies | Forward | Actions |
|---|---|---|---|---|---|---|---|---|---|
| pending approved rejected | ⇅ — 🔑 |
|
Proxy Config:
| Name | Type | Local IP | Local Port | Peer only | Encrypt | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 🔗 peer— | ||||||||||||
| No proxies configured. Click "+ Add Proxy" to add one. | ||||||||||||
Egress 白名單(forward 出站目標)
空=允許全部;每行一個 host,支援 *.suffixPSK(加密通道預共用金鑰)
🔑 PSK 已設定 未設定本地轉發 (local_forward) / 重連退避
Port Pool Management
Reserve Port
Port Assignments
| Port | Status | Client | Proxy | Encrypt | Actions |
|---|---|---|---|---|---|
| reserved reserved (idle) allocated 已暫停 | — |
|
|||
| No ports allocated | |||||
Connection Monitor
加密流量 / 偽裝(chaff)
即時彙總目前加密連線的真實 vs 假資料流量Active Connections ()
| ID | Client | Proxy | Source | Dest | Type | Enc | Chaff | In | Out | Since |
|---|---|---|---|---|---|---|---|---|---|---|
Traffic Monitor
趨勢圖
即時速率各 Client 流量排行 點一列可鑽入該 client
各通道明細 點一列可鑽入該通道
| Client | 狀態 | In | Out | 合計 | 連線 | 🔒加密 |
|---|---|---|---|---|---|---|
| online offline | ||||||
| 尚無流量資料 | ||||||
| 通道 | In | Out | 合計 | 連線 | 🔒加密 |
|---|---|---|---|---|---|
| 尚無通道流量資料 | |||||
Top 目標位址 (其他) = 已彙整的其餘位址
| 目標位址 | In | Out | 合計 | 連線 | 🔒加密 |
|---|---|---|---|---|---|
| 目前尚無資料 | |||||
Audit Log
Recent Events
Connection Gate
審核連線請求、管理核准窗口。
🔒 等待審核
| Client | 來源 IP | 區域 | 代理 | 目的 | 等待 | 操作 |
|---|---|---|---|---|---|---|
✅ 核准窗口
| 來源 IP | 區域 | 代理 | 到期時間 | 剩餘 | 操作 |
|---|---|---|---|---|---|
📋 歷史紀錄
| 時間 | 事件 | Client | 代理 | 來源 IP | 區域 | 目的 | 備註 |
|---|---|---|---|---|---|---|---|
Settings
Admin Users
| Username | Source | Actions |
|---|---|---|
| config dynamic | defined in config | |
| No admin users configured | ||
Blacklist
Add IP
Blocked IPs
| IP | Added At | Added By | Reason | |
|---|---|---|---|---|
| No blocked IPs. | ||||
Trusted IPs
Add Trusted IP / CIDR
Trusted
| IP / CIDR | Added At | Added By | Reason | |
|---|---|---|---|---|
| No trusted IPs. | ||||
Client 產生·更新
新機器裝 client、現有機器換版,都在這裡server.toml 內把 [builder] enabled = true 後重啟 tunnel-server。
進階:server 覆寫(留空=沿用伺服器設定)
- 把檔案複製到目標機器並執行(Windows 直接執行
tt-cli.exe;Linux / mac 先chmod +x)。要開機自啟請看「📖 部署指南」。 - 回到 Clients 分頁,該機器會以 pending 出現 → 按 Approve 核准。
- 單檔版已內建 ssh peer 通道;要開 RDP 等其他服務,在 Clients 分頁展開它新增 proxy 即可,server 會即時推過去。勾「Peer only」則不開公網 port,只給其他 client 用
<client_id>.peer:<port>連。
最近產生的安裝包
| 檔名 | 大小 | 時間 | |
|---|---|---|---|
流程只有兩步:① 建一個 OTA 檔 → ② 推給 client。client 收到後自動覆寫執行檔並重啟,設定與憑證都保留。
② 推送到 client
下拉只列出符合該台平台、且允許推給它的檔案| Client | 類型 | 平台 | 目前版本 | OTA 檔 | |
|---|---|---|---|---|---|
| 🔑 PSK | |||||
| 目前沒有連線中的 client | |||||
在目標機器以背景服務執行(免安裝、開機自啟)
不經安裝程式、不進安裝紀錄tt-cli,放到穩定位置直接跑即可,不需要工作目錄。設定會自動落在
macOS /Library/Application Support/tt-cli/、Linux /var/lib/tt-cli/、Windows %ProgramData%\tt-cli\。一般版(zip):解壓後是一個資料夾(
tt-cli、client.toml、certs/),把整個資料夾放到穩定位置(下面用 <DIR> 代表),背景服務務必以 <DIR> 為工作目錄——client.toml 內的憑證是相對路徑,工作目錄不對就連不上。
用 LaunchDaemon(root、開機自啟)。以 <DIR> = /usr/local/ttc 為例。單檔版把 -c client.toml 與 WorkingDirectory 兩行拿掉即可。
1. 建立 plist(一次貼上即建立;若你的 <DIR> 不同請改路徑):
sudo tee /Library/LaunchDaemons/com.local.tt-cli.plist >/dev/null <<'PLIST' <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"><dict> <key>Label</key><string>com.local.tt-cli</string> <key>ProgramArguments</key> <array><string>/usr/local/ttc/tt-cli</string><string>-c</string><string>client.toml</string></array> <key>WorkingDirectory</key><string>/usr/local/ttc</string> <key>RunAtLoad</key><true/> <key>KeepAlive</key><true/> <key>StandardOutPath</key><string>/var/log/tt-cli.out.log</string> <key>StandardErrorPath</key><string>/var/log/tt-cli.err.log</string> </dict></plist> PLIST
2. 設權限並載入(權限必須 root:wheel 644,否則 launchd 會忽略):
sudo chown root:wheel /Library/LaunchDaemons/com.local.tt-cli.plist sudo chmod 644 /Library/LaunchDaemons/com.local.tt-cli.plist sudo launchctl load -w /Library/LaunchDaemons/com.local.tt-cli.plist
3. 驗證 / 停止 / 重啟 / 看 log:
sudo launchctl list | grep tt-cli # 左欄是數字 PID = 有跑;是 - 就是沒起來 sudo launchctl unload /Library/LaunchDaemons/com.local.tt-cli.plist # 停(才停得下,不會被 KeepAlive 拉回) sudo launchctl kickstart -k system/com.local.tt-cli # 重踢一次 tail -n 50 /var/log/tt-cli.err.log # 看錯誤
不想動系統目錄 / 不想用 root:改放 ~/Library/LaunchAgents/,launchctl load 免 sudo,但只在該使用者登入後才跑。移除:launchctl unload …plist 後刪掉 plist 即可。
用 systemd(開機自啟、自動重啟)。以 <DIR> = /opt/ttc 為例。單檔版也可以直接 sudo ./tt-cli -install 一鍵註冊為 svc-connect 服務。
1. 建立 unit:
sudo tee /etc/systemd/system/tt-cli.service >/dev/null <<'UNIT' [Unit] Description=tt-cli tunnel client After=network-online.target Wants=network-online.target [Service] Type=simple WorkingDirectory=/opt/ttc ExecStart=/opt/ttc/tt-cli -c client.toml Restart=always RestartSec=5 [Install] WantedBy=multi-user.target UNIT
2. 啟用 / 驗證 / 停止:
sudo systemctl daemon-reload sudo systemctl enable --now tt-cli # 開機自啟 + 立刻啟動 sudo systemctl status tt-cli # active (running) = OK journalctl -u tt-cli -f # 看 log sudo systemctl stop tt-cli # 停 sudo systemctl disable tt-cli # 取消開機自啟(移除:再刪 unit 檔 + daemon-reload)
沒有 systemd / 想最輕量(不留 unit,但無自動重啟監控):crontab -e 加一行 @reboot cd /opt/ttc && nohup ./tt-cli -c client.toml >>/opt/ttc/tt.log 2>&1 &
用工作排程器(schtasks),不是 Windows 服務、也不是安裝程式。以 <DIR> = C:\ttc 為例。
1. 在 C:\ttc 建一個 run-ttc.bat(確保工作目錄正確;單檔版把 -c client.toml 拿掉):
@echo off cd /d "%~dp0" tt-cli.exe -c client.toml
2. 以系統管理員開 PowerShell / cmd,建開機執行的排程工作(SYSTEM 帳戶、開機即跑、免登入、無視窗):
schtasks /create /tn "tt-cli" /sc onstart /ru SYSTEM /rl HIGHEST /tr "C:\ttc\run-ttc.bat" /f schtasks /run /tn "tt-cli"
3. 驗證 / 停止 / 移除:
:: 確認有沒有在跑(有 tt-cli.exe = 有跑) tasklist | findstr tt-cli :: 詳細狀態 schtasks /query /tn "tt-cli" /v :: 停這次 schtasks /end /tn "tt-cli" :: 移除排程(不留痕) schtasks /delete /tn "tt-cli" /f
要看輸出 log:把 run-ttc.bat 最後一行改成 tt-cli.exe -c client.toml >> C:\ttc\tt.log 2>&1