我的家用伺服器本來有一個每月提醒:每個月第一個週六上午 10 點,Google 日曆會跳出來,叫我把上面的服務全部更新一輪。
最近駭客入侵的新聞實在太多,包括之前 PHP 的漏洞,讓我覺得這種「一個月更新一次」的做法有點過時了。比較合理的做法是:我有在用的服務,就持續追它的官方資安公告,有新公告就馬上確認我現在的版本有沒有風險。
這篇寫我怎麼用 n8n 做這件事、幾個刻意不做的地方,以及第一次收到通知後,我怎麼在公司連回家把漏洞補好。
一個月更新一次,為什麼不夠
回頭看 10 月,光是跟我有關的資安事件就有這幾件:
| 日期 | 發生什麼事 | 我怎麼處理 |
|---|---|---|
| 10/14 | n8n 一次發布 15 則安全公告 | 隔天升級 |
| 10/21 | Node.js 修正 4 個高風險漏洞;n8n 裡面就有 Node.js | n8n 的新版還沒換上修好的 Node.js,只能等,10/25 才修補完成 |
| 10/21 | PHP 發布重大修正(我的部落格主機用 PHP) | 主機商自己修補,我只要確認 |
| 10/27 | Cloudflare 來信:cloudflared 要更新到新版 | 當天升級 |
| 10/28 | n8n 又發布 12 則公告(3 則高風險) | 當天升級 |
照日曆,10 月的每月維護是 10 月 3 日,下一次是 11 月 7 日。如果只靠每月提醒,上面每一件都要等上好幾週才會處理。
另一個問題是消息來源很散:n8n 的公告有之前做的通知,cloudflared 是 Cloudflare 寄信來,Node.js 和 PHP 則是看到新聞、聽同事說才知道。
只追官方資安公告,不追資安新聞
一開始我想的是「定期抓資安新聞」。Claude 建議把範圍收窄:不要追新聞,只追「伺服器上有裝的軟體」的官方公告。
新聞量大、同一件事會有好幾篇,而且很難判斷「這則跟我有沒有關係」。通知一多我就不會看了,等於沒做。官方公告則會寫清楚哪些版本受影響、哪一版修好,拿來對照自己的版本最直接。
n8n 本身的公告我之前已經在追(做法寫在〈家用伺服器通知怎麼做:Telegram、心跳、備份、登入,全部免費〉)。
這次要補的,是其他每月才手動更新的服務:Jellyfin、File Browser、Caddy、cloudflared、Tailscale、Docker、rclone,還有藏在 n8n 裡的 Node.js。
三種官方來源
| 來源 | 是什麼 | 我用在哪些服務 |
|---|---|---|
| GitHub 安全公告 | 開源軟體在 GitHub 上發布的漏洞說明,格式統一,有受影響版本和修正版本 | Jellyfin、File Browser、Caddy、cloudflared、rclone、Docker 等 9 個 |
| 官方 RSS | 有些軟體的公告放在自己網站,用 RSS 訂閱 | Node.js、Tailscale |
| CISA 已遭利用漏洞清單 | 美國資安主管機關維護的清單,只收「已經有人在實際攻擊」的漏洞 | 用關鍵字比對,例如 Linux 核心、Samba、OpenSSH |
第三種的訊號最強。它收錄的數量不多,但只要出現跟我有關的,就代表漏洞已經被拿來攻擊了,通知一律標成最高等級。
Ubuntu 系統本身的套件,我原本就開了自動安全更新,所以不另外追公告;CISA 清單裡出現 Linux 核心這類東西時,還是會通知我。
要追哪些服務,寫在一張表裡
這份清單沒有寫死在 n8n 流程裡,而是放在 n8n 的一張資料表,一列一個來源:服務名稱、來源種類、要抓的網址或關鍵字、要不要追。
這是我特別要求的。伺服器之後一定還會裝新服務,我希望新服務裝好,就自動照同一個規格被追蹤。現在只要在表裡加幾列,流程完全不用改。
我也把這條規則寫進 Claude 的專案指示:「新增服務時,要在這張表加上它的安全公告來源。」之後請 Claude 幫我裝新服務,它會在同一次把公告來源一起加進去,不用我記得。
流程每 3 小時跑一次,把各來源近 30 天、還沒通知過的公告合併成一則 Telegram。某個來源剛好讀不到時(網站掛了、專案改名),一天最多提醒一次,而且是靜音的,不會每 3 小時吵我。
為什麼放在 n8n,不用 Claude 排程
我也有用 Claude 的排程任務追資安事件。Node.js 那次,我建了一個每天檢查的排程,等到 n8n 換上修好的版本才刪掉。
PHP 那次也建了一個,結果它永遠等不到。它是看 PHP 的版本號有沒有升上去來判斷,但 Hostinger 是直接修補程式、版本號不變,狀態頁上也有說明。照它的判斷方式,永遠等不到新版號,最後我把它刪了。
這兩次之後我的分法是:
- 追某一件事直到修好,用 Claude 排程。它會讀新聞、看狀態頁,比較有彈性
- 長期、固定來源、規則明確的檢查,放在 n8n。結果每次都一樣,不花 AI 額度,也已經有現成的 Telegram 通知
它不會幫我判斷「我的版本有沒有中」
n8n 本身的公告通知會自動比對版本,這支新的不會,只會告訴我「有新公告」,要不要處理由我自己對照。
原因是 n8n 跑在自己的容器裡,看不到其他服務的版本。要讓它看得到,最直接的方法是把管理所有容器的權限交給 n8n,但這個權限幾乎等於整台主機的最高權限。n8n 又是從外面連得進來的服務,為了省一點對照的時間,冒這種風險不划算。
通知分成幾種燈號,我的處理原則是:
- 🔴 已遭利用:當天確認版本,受影響就馬上更新
- 🔴 嚴重、高風險:這週內處理
- 🟡 中、低風險:下次每月維護時處理,但要先確認不是「不用登入就能利用」的
看不懂公告在講什麼時,我會把通知轉給 Claude,請它逐則對照我的版本和用到的功能。
第一次執行:27 個項目,我在公司連回家處理
第一次執行時,「已通知」的紀錄是空的,近 30 天的公告全部算新的,一次就發現 27 個要確認、可能需要更新的項目。之後只有新公告才會通知。

收到通知時我人在公司。我用公司電腦 SSH 連回家裡的伺服器,請 Claude 給我對照版本的指令,一項一項確認:
- Caddy 是 2.11.7,公告的修正版是 2.11.8,當場更新,大約 1 分鐘就好
- rclone 已經是修好的版本,不用動
- Tailscale 有新版,順手更新
- 已遭利用的 Linux 核心漏洞,Ubuntu 的檢查工具顯示「已修補」
最後一項差點讓我放心。再查一次才發現,修好的核心已經裝好,但伺服器跑的還是舊核心,要重開機才會換過去。
「已修補」指的是套件裝好了,不是漏洞已經堵住。跟 PHP 那次一樣,工具顯示的狀態,不一定是實際的狀態。
人在公司重開機有風險:萬一開不起來,要等回家接螢幕才能處理。我決定接受,現在就做。
還有一個麻煩是 cloudflared,它也有新版要裝。我從公司連回家的 SSH 就是走它的通道,更新時它會重啟,連線會在更新途中斷掉,套件可能裝到一半。Claude 改成把更新交給系統在背景跑,就算我的連線斷了也會跑完,跑完自動重開機。
大約 15 分鐘後我再連回去,核心已經換成新版,所有服務都正常。從收到通知到全部處理完,大約 1 個小時。
如果照以前的做法,這些要等到 11 月 7 日每月維護時才會更新。
每月提醒還在
每月提醒我沒有拿掉。系統套件靠自動更新,其他服務還是固定每個月更新一輪;差別在於,有資安公告時不再等到月初,看到通知就處理。
老實說,現在 Telegram 收到的通知有點太多、太雜。之後我打算把所有通知的內容重新整理一次。
延伸閱讀:〈我不是資安本科,請 AI 幫家用伺服器做資安健檢,真的抓到漏洞〉、〈n8n 是什麼?AI 都會排程了還需要它嗎?〉。






