以前的agy可以透過ctrl-tab進行模式切換。最近更新把auto mode從這個切換中拿掉了,頂多讓agent寫寫文件,但是不讓agent去跑程式。解決辦法就是要從一開始就決定進入session的時候要不要開auto mode:
agy --dangerously-skip-permissions
以前的agy可以透過ctrl-tab進行模式切換。最近更新把auto mode從這個切換中拿掉了,頂多讓agent寫寫文件,但是不讓agent去跑程式。解決辦法就是要從一開始就決定進入session的時候要不要開auto mode:
agy --dangerously-skip-permissions
目前nv出了很多機器,尤其是arm版本的cpu,在安裝dirver的時候會碰到蠻多問題的。最簡便的方式就還是透過apt直接進行安裝。只是還是會碰到由第三方編譯後放到ppa上面,這時候就會過不了UEFI的Security認證,需要跑一堆冗長的MOK認證。
不過MOK是可以透過安裝Canonical認證過的package就不需要MOK認證了。
又因為太多編譯版本,縮小搜尋方式的方式,就還是先用核心版本進行鎖定:
1. 使用 apt search搜尋:
linux-modules-nvidia-版本-類型-$(uname -r)
上面的例子,就需要先用uname -r把核心版本找出來
2. 決定要安裝之後,要先把原本的driver移除。但是除了module之外,也要一併處理driver:
# 清除已註冊的 NVIDIA DKMS module,不限定版本
if command -v dkms >/dev/null 2>&1; then
sudo dkms status |
awk -F, '/^nvidia\// {print $1}' |
sort -u |
while IFS= read -r module; do
[ -n "$module" ] && sudo dkms remove "$module" --all
done
fi
# 找出所有已安裝的 NVIDIA driver/kernel 套件,不限定版本
mapfile -t NVIDIA_DRIVER_PKGS < <(
dpkg-query -W -f='${binary:Package}\n' 2>/dev/null |
grep -E \
'^(nvidia-(driver|dkms|kernel-(common|source)|utils|compute-utils|headless|open|firmware|xconfig|conf-xconfig|persistenced|modprobe)(-|:|$)|libnvidia-(cfg1|common|compute|decode|encode|extra|fbc1|gl)(-|:|$)|xserver-xorg-video-nvidia(-|:|$)|linux-(modules|objects|signatures)-nvidia-)'
)
printf '即將移除以下 NVIDIA driver 套件:\n'
printf ' %s\n' "${NVIDIA_DRIVER_PKGS[@]}"
if ((${#NVIDIA_DRIVER_PKGS[@]})); then
sudo apt-get purge "${NVIDIA_DRIVER_PKGS[@]}"
fi
sudo apt-get autoremove --purge
然後進行安裝:
sudo apt install linux-modules-nvidia-版本-類型-$(uname -r)
sudo apt install nvidia-driver-版本號
3. 安裝後 modinfo -F signer nvidia 是否為 Canonical
本文記錄如何透過 Docker 部署 Web-based 終端機 Termix,並結合 Tailscale 網狀網路,解決跨實體區域網路的 SSH/SFTP 連線管理問題。
Termix 是一款輕量化的網頁終端機面板。部署完成後,可直接透過桌面或行動裝置的瀏覽器存取伺服器,無需額外安裝 SSH App 或匯入金鑰。
GitHub 專案位址:
跨網段痛點:若 Termix 部署於 A 區網,而目標伺服器位於 B 區網(如 192.168.yy.x),預設無法連線。此處選用 Tailscale 作為底層 VPN,將 Termix 與目標內網橋接。
部署 Docker 前,需先申請 API 金鑰供容器自動登入 Tailscale 網路。
登入 Tailscale 管理控制台:
進入 Settings -> Keys -> Auth keys。
點擊 Generate auth key。
勾選 Reusable(容器重啟可重複使用)與 Ephemeral(容器刪除時自動清除節點)。
複製產生的 tskey-auth-... 字串。
於工作目錄建立 .env 檔案存放金鑰:
TS_AUTHKEY=tskey-auth-你的金鑰字串...
建立 docker-compose.yaml。此處採用 Sidecar 模式,將 Termix 的網路綁定至 Tailscale 容器。設定檔中需特別注意特權模式(privileged)與 TUN 設備掛載,以確保底層網卡正常運作。
services:
# 1. Tailscale 網狀網路節點 (Sidecar 核心)
tailscaled:
image: tailscale/tailscale:latest
container_name: termix-tailscale
hostname: markliou-termix
# 【關鍵】賦予特權模式,突破系統底層硬體限制
privileged: true
environment:
- TS_AUTHKEY=${TS_AUTHKEY}
- TS_STATE_DIR=/var/lib/tailscale
# 【關鍵】指示該節點主動接收遠端 Subnet Router 廣播的內網路由
- TS_EXTRA_ARGS=--accept-routes
# 【關鍵】強制關閉降級機制,指定使用 Kernel 網卡模式修改路由表
- TS_USERSPACE=false
volumes:
- tailscale-data:/var/lib/tailscale
# 【關鍵】宣告實體 TUN 設備掛載
devices:
- /dev/net/tun:/dev/net/tun
cap_add:
- NET_ADMIN
- NET_RAW
ports:
- "8000:8080"
networks:
- termix-net
restart: unless-stopped
# 2. Termix 服務
termix:
image: ghcr.io/lukegus/termix:latest
container_name: termix
restart: unless-stopped
# 網路層強制綁定至 tailscaled 容器,統一由 VPN 隧道出入
network_mode: "service:tailscaled"
volumes:
- termix-data:/app/data
depends_on:
- guacd
- tailscaled
# 3. Guacamole 代理服務
guacd:
image: guacamole/guacd:latest
container_name: guacd
restart: unless-stopped
networks:
- termix-net
volumes:
termix-data:
driver: local
tailscale-data:
driver: local
networks:
termix-net:
driver: bridge上面幾個要點筆記:
1. 網路部分就是全權交給tailscale了,所以連port的設定都要從原本是termix的container移轉到tailscale路由器container上面
2. enviroment的封包轉發頗重要,要可以廣播到整個docker-compose的網路上
執行啟動指令:
sudo docker-compose up -d
要讓 Termix 容器存取遠端內網,需在遠端內網配置一台實體主機作為「子網路由器 (Subnet Router)」。
運作邏輯如下:
遠端主機向 Tailscale 網路廣播目標網段(如 192.168.yy.x)。
Termix 容器因帶有 --accept-routes 參數,會接收該廣播。
當 Termix 發出前往 192.168.yy.x 的封包時,系統會查詢 Tailscale 建立的隱藏路由表(Table 52),並將封包封裝後送往遠端主機進行解封與轉發。因為涉及到封包轉發出去,所以就有下面2.2的ubuntu核心參數修改
於目標內網的遠端主機(如 Ubuntu)執行以下指令,修改 Linux 核心參數以允許封包轉發:
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
執行 tailscale up 指令並指定要放行的內網網段。若需同時打通多個網段(例如增加 10.2.0.0/16),需以半形逗號分隔,不可包含空格:
sudo tailscale up --advertise-routes=192.168.yy.0/24,10.2.y.y/16基於安全性,廣播的路由不會自動生效,需手動放行:
回到 Tailscale 管理控制台:
找到該台遠端 Ubuntu 節點,點擊右側 ⋮ 選單,選擇 Edit route settings。
在 Subnet routes 區塊中,將 192.168.yy./24 與 10.2.0.0/16 旁邊的開關設為 Enable。位置就是上面的那張圖,有個"Edit route setting",點進去就知道要在哪邊打勾了。
Tailscale 會將跨網段路由寫入隱藏的第 52 號路由表 (Table 52) 以避免與系統主路由衝突。回到部署 Termix 的宿主機,執行以下指令驗證:
sudo docker exec -it termix-tailscale ip route show table 52
若輸出顯示對應的網段由 tailscale0 設備接管,即代表底層網路對接完成:
10.2.0.0/16 dev tailscale0
192.168.71.0/24 dev tailscale0
至此,已可直接開啟 Termix 網頁介面,輸入遠端內網 IP 進行無縫連線操作。
以前的agy可以透過ctrl-tab進行模式切換。最近更新把auto mode從這個切換中拿掉了,頂多讓agent寫寫文件,但是不讓agent去跑程式。解決辦法就是要從一開始就決定進入session的時候要不要開auto mode: agy --dangerously-skip...