Oracle Cloud 不重建 Instance 直接重灌系統

OCI 後台沒有「重灌」按鈕,這件事困擾我很久。一般雲端主機要重灌就 terminate 再開一台,沒什麼大不了。但 OCI Always Free 不一樣,免費額度有限,ARM 機器尤其難搶,terminate 之後不一定開得回來,很多人就是卡在 "Out of capacity" 反覆刷好幾天都搶不到。就算搶到了,IP 會變、環境要重弄,等於白費。所以能不 terminate 就不 terminate。

後來發現 OCI 其實有個 Replace Boot Volume 功能,可以直接換掉系統碟,instance 不用終止,IP 和設定全部保留。整個過程在 Console 上點幾下就搞定。不管是想乾淨重灌 Ubuntu、升級到新版 image,還是先把系統弄乾淨再轉 Debian,第一步都是 Replace Boot Volume。

Read more  ↩︎

重灌 macOS 之後,我一定會裝回來的套件(2026)

每次重灌 macOS 最煩的不是灌系統,是灌系統之後把一堆軟體一個一個裝回來。以前都是憑記憶,裝到一半才想起漏了什麼。後來養成習慣,把整台機器在用的套件全部丟進一份 Brewfile,重灌完只要一行 brew bundle install 就復原九成。

這篇整理目前這台機器實際在跑的 Brewfile,順便記一下怎麼產生跟還原,還有幾個容易漏掉的地方。

Read more  ↩︎

sigilo:金鑰放 Bitwarden 或自架 Vaultwarden,簽 SSH 一樣要 Touch ID

自己平常簽 SSH、簽 git commit 用的是 1Password 的 agent,金鑰放進 1Password 的 vault,每次要簽章都跳一次 Touch ID,體驗很好。剛好 1Password 到期,想說乾脆整個密碼管理都換成自架的 Vaultwarden,SSH 簽章這塊也得跟著搬過去。

Bitwarden 官方沒有對應的 agent。網路上找得到的替代方案(vault-conductor、bw-agent 這類)能從 Secrets Manager 或 secure notes 撈金鑰,但少了 1Password 那個「每次簽章都要按一下」的關卡:同一個使用者跑的程式,只要能連上 agent 的 socket,就能靜靜簽過去,不會有任何提示。

於是寫了 sigilo:SSH agent 本體,金鑰來源是 Bitwarden Secrets Manager 或自架的 Vaultwarden,每一次簽章都會跳出 Touch ID 提示,金鑰只存在記憶體,從不落地。

Read more  ↩︎

用 Cloudflare Workers 幫 Vaultwarden 代理 Favicon,伺服器 IP 不外洩

自建 Vaultwarden 的人大概都沒細想過一件事:那些帳號旁邊漂亮的網站 icon 是怎麼來的。預設的 ICON_SERVICE=internal 其實是伺服器自己出去抓,你存了多少個網域,伺服器就對多少個網域發過一次請求,等於把伺服器的對外 IP 送給每一個存過密碼的網站。內建的替代方案 duckduckgogooglebitwarden 不會洩漏伺服器 IP,但換成把使用者查詢的網域清單整批交給那些第三方。

自己也在跑 Vaultwarden,想了想這兩個選項都不滿意,於是寫了 vaultwarden-icons-worker:圖示代理自己架,架在 Cloudflare 的邊緣節點上,伺服器和客戶端的 IP 都不會被目標網站看到。

Read more  ↩︎

用 Cloudflare Workers 自動簽到 PTT 並推送到 Telegram

PTT 的鄉民大概都遇過:太久沒登入帳號就被砍。社群早期有 PTTAutoSign 這類工具,跑在 VPS 或 Raspberry Pi 上排程登入。可是為了一個每天只跑一次的小腳本去顧一台機器,實在不太划算。

ptt-autosign-worker 把這件事搬到 Cloudflare Workers 上:每天 02:30 UTC 由 Cron Trigger 觸發,自動登入 PTT、抓登入資訊、丟到 Telegram。不用 VPS,不用 Docker,crontab 也省了,Free plan 就跑得起來。

Read more  ↩︎