下載與安裝

單一執行檔、零外部依賴。一行指令,五分鐘完成。

Linux 一行安裝

這是最短的一條路,而且不需要先知道自己該裝哪一個包——腳本會自己判斷:有 apt 就裝 deb、有 dnf/yum/zypper 就裝 rpm,兩者都沒有才用 tar.gz。

# 以 root 執行;裝好服務並啟動它
curl -fsSL https://svrguard.ofuyuan.com/install.sh | sudo sh

過程不會問任何問題——log 路徑自動偵測,服務裝好就啟動。

在 Apple Silicon 的 Mac 上,同一行指令會改裝 macOS 版,見下面的「macOS」。

或者,自己挑安裝包

選你的平台,下面只會顯示這個平台的東西。

Debian / Ubuntu(x86_64)

sudo apt-get install -y ./svrguard_latest_amd64.deb

裝出來的東西和上面那行指令完全一樣,執行檔在 /usr/bin/svrguard。用 apt-get 而不是 dpkg -i:前者會一併解決 ca-certificates 相依,後者會把套件留在未設定狀態。

Ubuntu 20.04/22.04/24.04 與 Debian 用的是同一個檔——我們不按發行版版本分包,支援條件寫在下面的「系統需求」裡。

RHEL / CentOS / Rocky / openSUSE(x86_64)

sudo dnf install -y ./svrguard_latest_x86_64.rpm
# 沒有 dnf 的系統:yum install -y ./…rpm 或 zypper install --allow-unsigned-rpm ./…rpm

執行檔在 /usr/bin/svrguard,與一行安裝的結果相同。

其他 Linux(x86_64,沒有套件管理器)

tar -xzf svrguard_latest_linux_amd64.tar.gz
sudo sh svrguard/install.sh

⚠️ 這一條與其他兩條不一樣:它裝在 /opt/svrguard,不經過套件管理器,因此不會自動處理相依套件。

它也是唯一會逐題詢問的路徑——想自己指定 log 路徑與設定,就走這一條。

Synology DSM 7

⛔ 不要用上面那行 curl … | sudo sh:它在 NAS 上會拒絕執行。DSM 把已安裝的版本記在套件自己的 INFO 裡,繞過套件中心放進去的執行檔會跟它對不上,而中間每一步都會成功。

在 DSM 的「控制台 → 資訊中心」看 CPU 是哪一種,下載對應的套件:

  • x86_64(Intel/AMD 機種)
  • arm64(RTD1296/RTD1619b/Armada37xx)
  • armv7(Armada38x 等較舊機種)
  1. 套件中心 → 手動安裝,選剛下載的 .spk。DSM 會提醒這是未經 Synology 認證的發行者——「設定 → 信任等級」需允許「任何發行者」才能繼續。
  2. 啟動並開啟 SvrGuard:安裝完成後從套件中心啟動,再按「開啟」進入主控台(連接埠 8092)。

⚠️ DSM 6 的套件在這裡裝不起來,DSM 會直接拒絕——兩個世代是不同的套件,不是同一個包的變體。

Synology DSM 6

⛔ 不要用上面那行 curl … | sudo sh:它在 NAS 上會拒絕執行,理由與 DSM 7 相同——版本真相在套件的 INFO 裡。

在 DSM 的「控制台 → 資訊中心」看 CPU 是哪一種,下載對應的套件:

  1. 套件中心 → 手動安裝,選剛下載的 .spk;「設定 → 信任等級」需允許「任何發行者」。
  2. 啟動並開啟 SvrGuard,主控台在連接埠 8092。

⚠️ DSM 7 的套件在這裡裝不起來,反過來也一樣。

macOS(Apple Silicon)

curl -fsSL https://svrguard.ofuyuan.com/install.sh | sudo sh

和 Linux 是同一行:在 Mac 上它會下載 macOS 版並安裝。也可以自己下載再裝:

tar -xzf svrguard_latest_darwin_arm64.tar.gz
cd svrguard && sudo sh install_macos.sh ./svrguard ./com.ofuyuan.svrguard.plist

裝好之後:執行檔在 /usr/local/sbin/svrguard,設定在 /etc/svrguard/svrguard.ini,開機自動啟動的系統服務叫 com.ofuyuan.svrguard,主控台在 http://127.0.0.1:8092/。

⚠️ 它會改動 pf(macOS 內建的防火牆):在 /etc/pf.conf 最後加一行 anchor "svrguard" 並重新載入規則;封鎖清單裡有位址時才啟用 pf,清單清空就交還。

這個版本沒有經過 Apple 公證。用 curl 下載的檔案不會被 Gatekeeper 攔下,所以上面兩種裝法都不需要另外放行。

確認下載的檔案完整(SHA-256)

每個安裝包的 SHA-256 列在 /dl/SHA256SUMS,每次發行時與安裝包一起更新。把它下載到安裝包所在的目錄,再比對你下載的那一個(把 <檔名> 換成實際檔名):

grep <檔名> SHA256SUMS | sha256sum -c          # Linux,印出「<檔名>: OK」
grep <檔名> SHA256SUMS | shasum -a 256 -c      # macOS
(Get-FileHash .\<檔名>).Hash                  # Windows:與 SHA256SUMS 同名那一行比對

在 Windows 上下載 .spk 再上傳到 NAS 的,用第三行。

比對不一致時,先把安裝包與 SHA256SUMS 都重新下載一次再比:兩個檔若是在新版發行前後分別下載的,本來就對不上。

它確認的是檔案在下載途中沒有損壞或缺漏。雜湊與安裝包放在同一台伺服器上,所以它不能證明檔案的來源。

這台主機符合需求嗎?(Linux)
項目需求
架構x86_64。⛔ ARM 的一般 Linux 主機目前不發行(樹莓派、ARM 雲主機);ARM 只有 Synology NAS 有套件
核心kernel 3.13+。nftables 原生封鎖實測最老支援到 kernel 4.4,更舊的系統自動退用 ipset/iptables
日誌Apache access/error log(nginx 需指定 log 目錄);SSH 暴力破解偵測需能讀 /var/log/auth.log
資源用量一台實際運行中的正式主機上實測(2 核心,2026-10-16):常駐記憶體約 27 MB,平均 CPU 不到一個核心的 1%,資料目錄約 50 MB。數字隨流量與紀錄保留天數而變
要先裝什麼不需要。nftables 由 SvrGuard 直接走核心的 netlink 介面
這台 NAS 符合需求嗎?
項目需求
DSMDSM 6 與 DSM 7 皆可(實測 DSM 6.2.4、7.2.2、7.3)。兩個世代是不同的套件
機型x86_64/armv7/arm64,每個世代各一份
要先裝什麼不需要 SSH,也不需要 iptables 或 ipset——封鎖規則寫進 DSM 內建的防火牆
這台 Mac 符合需求嗎?它看得到什麼?
項目說明
機型Apple Silicon(M 系列晶片)。⛔ Intel 的 Mac 目前不支援
macOSmacOS 13 Ventura 以上;實測 macOS 26(一台)
偵測什麼從系統日誌讀 SSH 與螢幕共享的登入失敗並自動封鎖;有人以 root 登入、或從區網外登入時通知你;檢查可疑的開機自動啟動項目、sudoers 與 SSH 金鑰
看不到什麼螢幕共享只看得到真的走到登入那一步的嘗試;只連上來就斷線的掃描不會留下紀錄。Mac 版不分析網站日誌
要先裝什麼不需要。pf 是 macOS 內建的

裝好的那一刻,它已經在保護這台主機

偵測與封鎖不需要訂閱、也不需要綁定帳號,安裝完成就開始執行。依主機曝險程度,通常幾小時內就會出現第一筆自動封鎖。

怎麼確認封鎖真的生效了?

svrguard blockcheck 會逐筆比對資料庫與核心,把沒有真的生效的那幾筆指出來——這是最可靠的一項。

⭐ 它的第一行就寫著這台用的是哪一個後端(Backend : …),而且會把該後端自己的檢視指令印給你。所以底下這張表是參考,你不需要先猜自己屬於哪一種。

想自己直接問核心的話,三種後端的問法不一樣:

後端怎麼看
nftables nft list table ip svrguard(規則在 input 這條 chain)
ipset ipset list -n | grep svrguard 先問集合叫什麼,再 ipset list <那個名字>。
還要看有沒有規則在用它:iptables -S INPUT | grep match-set
iptables iptables -S SVRGUARD_BLOCK(chain 名是大寫)
Synology DSM 7 ⚠️ 上面三種在這裡都讀不到——那台沒有 ipset 指令,封鎖是透過一支特權小程式寫進核心的。請用 svrguard blockcheck。
macOS(pf) sudo pfctl -a svrguard -t svrguard_block -T show 看封鎖了誰。
還要兩件都成立才算在擋:sudo pfctl -s info 是 Enabled,而且 sudo pfctl -s rules 裡有 anchor "svrguard"

⚠️ ipset 的集合名不只一個,會隨型別與 IPv4/IPv6 變(svrguard_block、svrguard_block_ip…)——所以先 grep 問名字,不要直接猜一個。

⚠️ ipset 那一列兩件事都要成立才算在擋:集合裡有位址,而且有一條規則引用那個集合。只有其中一件,等於沒擋。

接下來:接上你的帳號

申請帳號、把這台主機綁定上去、從 Hub 看它——整條流程與你裝的是哪一個平台無關,所以另外一頁講完。

開始使用 →

之後怎麼更新

Pro:OTA 自動更新——新版本發布後 agent 自己完成升級,不需要你做任何事。兩者的差別見價格頁。

Free:一行更新

curl -fsSL https://svrguard.ofuyuan.com/upgrade.sh | sudo sh

它會自己判斷這台是用哪一種方式裝的(deb/rpm/tar.gz),照那一種的正確做法升級。已經是最新版就什麼都不做,所以放進 cron 每天跑也不會重裝。

設定與資料都會保留,而且它最後會確認新版真的起來了——沒起來就說出來,tar.gz 的情況還會把舊的那顆放回去。

⚠️ 不要重跑 install.sh 來更新。那是安裝用的,它偵測到已經裝過就會拒絕並指回這裡。

這條路的驗證只有 HTTPS——/dl 的安裝包沒有公布雜湊。OTA(Pro)走的是簽章通道,那是兩者的一個實際差別。

不想跑腳本?手動更新(deb/rpm)

下載新的安裝包,用和第一次安裝完全相同的指令裝上去:

sudo apt-get install -y ./svrguard_latest_amd64.deb
# RHEL 系:sudo dnf install -y ./svrguard_latest_x86_64.rpm

套件的安裝程序會停掉舊的、保留你的設定與資料庫、換掉執行檔、再啟動並確認它真的在跑。

不想跑腳本?手動更新(tar.gz)

⚠️ 不要重跑 install.sh。它會再做一次服務註冊,而服務已經註冊過了——那一步會失敗,並且是在執行檔已經被換掉之後。手動請照這四步:

INI=/etc/svrguard/svrguard.ini   # 若這個檔不存在,改用 /opt/svrguard/svrguard.ini

sudo /opt/svrguard/svrguard service -config "$INI" stop
tar -xzf svrguard_latest_linux_amd64.tar.gz
sudo cp svrguard/svrguard /opt/svrguard/svrguard
sudo /opt/svrguard/svrguard service -config "$INI" start

/opt/svrguard/svrguard version                            # 應該是新版
sudo /opt/svrguard/svrguard service -config "$INI" status # 必須看到它在跑

最後兩行不能省。換檔案本身幾乎不會失敗,會失敗的是啟動——而一個停著的 agent 看起來與正常的沒有差別:防火牆規則留在核心裡繼續擋,只是再也沒有東西在偵測新的攻擊。

設定與資料不會被動到:這四步只換 /opt/svrguard/svrguard 這一個檔。

Pro:OTA 自動更新,套件自己處理——更新走簽章通道並保留上一版,抓不到回退目標時寧可不更新,也不會把你留在壞版本上。

Free:手動更新 NAS

沒有訂閱的主機不會收到供應,所以它會停在目前的版本,直到你自己更新。請用 SSH 從指令列做,不要用套件中心:套件中心的「手動安裝」會把已安裝的套件當成新安裝,要求你先解除安裝,而解除安裝會連同套件一起解除這台主機與 Hub 的綁定。

ARCH=armv7          # 或 arm64/x86_64,看你裝的是哪一個
GEN=-dsm7           # DSM 7 用 -dsm7;DSM 6 這一格留空
BASE=https://svrguard.ofuyuan.com/update/agent/synology

curl -fsSL "$BASE/latest-$ARCH$GEN.json"      # 從這裡讀出 url 與 sha256
curl -fsSL -o /tmp/svrguard.spk "$BASE/<manifest 裡的 url>"
sha256sum /tmp/svrguard.spk                   # 必須等於 manifest 的 sha256

/usr/syno/bin/synopkg install /tmp/svrguard.spk
/usr/syno/bin/synopkg start SvrGuard
/usr/syno/bin/synopkg status SvrGuard         # 必須看到 is started

版本與雜湊請從 manifest 讀,不要相信檔名:上面 /dl 的連結永遠是同一個名字,不管後面放的是哪一版。

最後兩行不能省。synopkg install 會回 0 而服務是停的。其他每一項看起來都正常——版本是新的、主機仍然綁定著、防火牆規則留在核心裡繼續擋——唯一改變的是再也沒有東西在偵測新的攻擊,而且沒有任何地方會說。離開前請用 status 確認。

macOS:重跑同一行就是更新

macOS 版沒有自動更新(Free 與 Pro 都一樣)。要更新時,重跑安裝那一行:

curl -fsSL https://svrguard.ofuyuan.com/install.sh | sudo sh

它會停掉舊的、換掉執行檔、再啟動,設定與資料庫都保留。主控台「系統更新」頁的更新按鈕在 Mac 上不會成功,請用這一行。

移除

sudo /usr/local/sbin/svrguard unpair -config /etc/svrguard/svrguard.ini -uninstall   # 交還訂閱;失敗也繼續下一步
sudo launchctl bootout system/com.ofuyuan.svrguard
sudo /usr/local/sbin/svrguard clear-firewall -config /etc/svrguard/svrguard.ini      # 清空封鎖表、交還 pf
sudo rm /Library/LaunchDaemons/com.ofuyuan.svrguard.plist /usr/local/sbin/svrguard

設定與資料(/etc/svrguard、/var/lib/svrguard)會留著,不要的話自己刪。/etc/pf.conf 最後那兩行(註解與 anchor "svrguard")也會留著:它指向一個空的錨點,不會擋任何東西;要拿掉的話刪掉那兩行再執行 sudo pfctl -f /etc/pf.conf。