iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0

https://ithelp.ithome.com.tw/upload/images/20260813/20181284fktlSaxIRP.png

我 90% 操作,都是用 SSH 連線,進入文字介面操作。在目前,對我們非專業本科的人來說,必需花些時間,讓自己熟悉 ssh 連線的用法。我是用 putty。

安裝 Proxmox,到官網下載 ISO、燒進隨身碟、插上機器、從 USB 開機、點一輪選項。網路上的教學已經有幾百份,我再寫一份也只是第 101 份,沒有價值。就是要記住,你 prxomox 的 ip。真正要交代的是另一件事:安裝好之後,你會得到什麼?

你會有:一台開得起網頁管理介面、但幾乎什麼都還沒調校的裸機:套件庫指向付費版,apt update 會顯示失敗;每次登入網頁介面都跳一個「沒有有效訂閱」的彈窗;IPv6 開著;時區大概也不是你要的。之前這些都需要手動修正,而修正過程中,有可能衍生新的問題或漏掉某個修正。

所以,一台新機器裝好、第一次開機起來,ssh 到 proxmox IP,裝上去的第一個東西不是網頁伺服器、不是資料庫、也不是任何一個真正要跑的服務,是 claude。安裝本身只有一行:抓官方的安裝腳本執行。

curl -fsSL https://claude.ai/install.sh | bash

但這裡有一個實測踩到的坑:它裝進使用者家目錄底下的 .local/bin,那個路徑預設不在 PATH 裡,所以會找不到 claude 這個指令。安裝程式自己會印出這個提醒,但那行字很容易被被忽略過去。把那段路徑補進 shell 的設定檔就好。另外第一次使用要人工登入認證一次,這一步自動不了,也不該自動。

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

人工登入認證:怎麼做? 問AI。AI 時代必備一個技能:win + shift +s ,擷取螢幕。選你要的範圍,擷取,貼給 AI,就會得到答案。

在這台機器上,權限的界線跟平常相反。平常工作機,會有一條硬規則:需要 root 的操作,claude 不做,它只可以把指令整理好,我在另一個終端機自己貼上去跑。燒錄隨身碟那種會清空整顆裝置的事尤其如此——它可以幫我把指令寫對,但按下 Enter 的人得是我。可是剛裝好的虛擬化主機上,能用的帳號就只有 root 一個,這條界線暫時劃不出來。要做的是把界線換個地方劃:會清空磁碟、會改動網路介面的操作,不准自己執行,整理給我。網路介面設定改錯,這台機器就從網路上消失了。

接下來,我習慣:在 /opt/ 下建一個 /claude-working 的目錄,當總管。切換到 claude-working,輸入 claude,信任此資料夾,完成登錄認證後,開始叫 claude 做事:

輸入:

把套件庫從付費版換成免費版、做一次完整升級
關掉 IPv6 而且要開機後仍然有效
時區設成台北並確認時間有在同步
把網頁介面那個訂閱彈窗拿掉
最後在這台機器上留一份文件,寫清楚它是什麼角色、上面會跑什麼、以及剛剛做過的每一項變更

最後那一項是為了下一次——下次任何一個 agent 登入這台機器,它會先讀到這份文件,而不是從零猜起。

那個訂閱彈窗的移除,做法是改網頁介面的一個前端檔案,把判斷訂閱狀態的那一行讓它永遠不成立。這是純顯示層的修改,沒有偽造授權,也沒有動到付費套件庫。但這個檔案屬於一個會被更新的套件。換句話說:只要那次升級剛好更新到它,彈窗就會自己長回來。

我在四台實體虛擬化主機上都做過這件事,而它們也確實都復發過。所以我交給 claude 的那份清單,升級那一項和移除彈窗那一項,順序反了就等於白做。要先升級,再改檔案。

那個檔案有另一個陷阱:判斷訂閱狀態的那一行,在檔案中出現兩次,長得完全一樣。第一次出現的才是彈窗,第二次是訂閱資訊面板本身。如果你用「全部取代」的方式去改,面板也會一起壞掉。所以只能改第一個,而且改之前要先把原檔複製一份留著——不只是為了還原,更是為了下次它被升級洗掉時,能直接比對出「洗掉的是不是同一行」。改完要重啟網頁介面的服務,那會讓管理介面閃一下,但虛擬機不受影響 —— 這件事值得先知道,不然你會以為自己弄壞了什麼。

清單裡最像廢話的一項是關掉 IPv6,結果它是我自己最早寫錯的一項。一般的做法是寫一個核心參數設定檔,把「全部」和「預設」兩個開關關掉。指令跑完不會報錯,重開機也還在,看起來就是關好了。但那只是軟關:網卡上那個自己長出來的本地位址還在,你去看網路介面,IPv6 位址就掛在那裡。

要真的讓整個 IPv6 不載入,得改開機參數。而改開機參數還有一個更陰的地方:那份設定檔裡有兩個長得很像的變數,雲端映像的預設設定會把其中一個整個覆蓋掉,你寫進錯的那一個,重開機後不但沒生效,連別的設定也一起不見。我自己原本寫的那支自動收尾腳本,IPv6 那一步就是軟關的版本。它跑完會回報成功,而它確實成功地做完了一件不完整的事。

這串收尾我原本是想烘進一支自動安裝 USB 的,那支 USB 最後沒能在實機上跑起來,但裡面的設計留了下來。跟網路有關的步驟我加了重試,最多五次,每次隔三十秒。因為第一次開機那個時間點,網路不見得已經完全穩定,而一次沒抓到就整段跳過,代價太大。這種「失敗之後怎麼辦」的交代,我發現交辦給 claude 的時候更需要寫清楚。不寫,它遇到暫時性的失敗會有兩種反應:一種是自己想辦法繞過去,繞出一個你沒預期的做法;另一種是停在那裡等你。兩種都不算錯,但你會想知道是哪一種。

那支 USB 裡面的收尾腳本,現在變成我交給 claude 的那份清單本身。腳本裡有一段設計我後來想想是對的:四個步驟彼此獨立,任何一步失敗都只記錄下來、繼續跑下一步,而不是整支中止。理由很現實——那段腳本只會在第一次開機時執行一次,沒有人會回來重跑它,如果升級因為網路抖一下失敗,不能讓後面的 IPv6 和 claude 安裝就永遠不執行。可是換成交辦給 claude 的時候,我要的剛好相反:我要它每一步停下來報告。同一份工作,自動化跑要「別停」,交辦給人(或 agent)跑要「常停」。

這個過程,以前是純粹的重複勞動,而且是那種做十次會漏一次的重複勞動。現在它變成一段可以被讀、被檢查、被修正的紀錄,留在那台機器上。自動化真正的價值不在省下這一次操作,在於下一次還記得。那支 USB 沒成功,但這件事本身沒有失敗。

明天,把這台調好的機器切開 —— 一台實體機怎麼變成一整個機隊,以及顯示卡直通。


上一篇
D03 網域 DNS 與固定 IP
下一篇
D05 我的機台
系列文
一個人的 IT 部門:用 Claude Code 從裸機到一整座 AI 機房6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言