自架 Google Analytics 替代方案:Umami 和 Plausible 怎麼選、怎麼部署

比較兩款開源、不使用 Cookie 的網站流量分析工具 Umami 與 Plausible,再用 Zenavo 部署到自己的伺服器,保護好第一個帳號、加上追蹤碼、確認資料進來並做好備份。

本文亦提供 English、简体中文、日本語、Español 和 Bahasa Indonesia。

大多數網站只想知道幾件事:今天來了多少訪客、從哪裡來、看了哪些頁面。Google Analytics 能回答這些問題,但設定複雜,資料放在第三方,通常還得搭配 Cookie 提示橫幅。

Umami 和 Plausible 是兩款開源的網站流量分析工具,儀表板簡潔,預設不使用 Cookie,資料存在你自己的資料庫裡。Zenavo 為兩者都準備了範本,幾分鐘內就能部署到你租用或自有的伺服器上。

先選一個

Umami Plausible 社群版
組成服務 Umami + PostgreSQL Plausible + PostgreSQL + ClickHouse
記憶體 小,可以和其他應用共用一台小伺服器 範本標示約 2 GB
適合 個人網站、多個小網站、想要最少維護 流量較大,或喜歡 Plausible 的報表
首次登入 預設管理員帳號,要立刻改密碼 註冊第一個帳號
電子郵件 不需要 邀請成員、重設密碼需要設定 SMTP

拿不定主意時,先用 Umami:它更輕量,備份和搬移都只涉及一個 PostgreSQL。等流量大到 PostgreSQL 吃不消,再考慮以 ClickHouse 為基礎的 Plausible。

兩者都不使用 Cookie,但是否仍需要隱私權聲明或使用者同意,取決於你所在地區的法律和你蒐集的內容,請自行確認。部分廣告封鎖工具也會擋下這類腳本,所以數字會比實際造訪略低。

部署 Umami

先在 Zenavo 連接一台 Linux 伺服器,再打開 Umami 範本,選擇伺服器並部署。範本會建立兩個服務:

  • postgresql:PostgreSQL 17,資料在 /var/lib/postgresql/data 磁碟區,密碼自動產生;
  • umami:ghcr.io/umami-software/umami:postgresql-latest,HTTP 連接埠 3000,透過 DATABASE_URL 連線資料庫,APP_SECRET 自動產生。

在 umami 服務的 Networking 頁為 3000 連接埠綁定網域,例如 stats.example.com,設定 DNS 並等待 HTTPS 生效(見網域與 HTTPS)。

網域一生效就登入。 Umami 的預設管理員是 admin,密碼是 umami。請馬上到 Settings → Profile 修改密碼,並在 Security 中開啟雙重驗證。在你改密碼之前,任何人找到這個網址都能用預設密碼登入。

接著在 Settings → Websites 新增你的網站,複製畫面上的追蹤碼。

部署 Plausible

打開 Plausible 範本。部署前會要求填寫 Site URL,也就是你之後開啟 Plausible 的完整網址,例如 https://stats.example.com。範本會建立三個服務:

  • postgresql:存放帳號和網站設定;
  • clickhouse:存放造訪事件,範本已為小型伺服器調低了它的執行緒和日誌;
  • plausible:社群版 v3.1.0,HTTP 連接埠 8000,啟動時會自動建立並遷移資料庫。

部署後,為 plausible 服務綁定同一個網域。Site URL 和網域不一致時,登入和腳本網址都會出錯;要更改網址,就修改 BASE_URL 變數並重新部署。

ClickHouse 需要支援 SSE 4.2(x86)或 NEON(ARM)的 CPU。常見的雲端伺服器都符合,非常舊的機器可能無法啟動。

開啟網站,註冊第一個帳號。Plausible 社群版預設 DISABLE_REGISTRATION=invite_only:第一個帳號之後,新成員只能透過邀請加入。

邀請成員和重設密碼都需要寄信。在 plausible 服務的 Variables 中加入 SMTP 設定,例如 MAILER_EMAIL、SMTP_HOST_ADDR、SMTP_HOST_PORT、SMTP_USER_NAME 和 SMTP_USER_PWD,然後重新部署。各項說明見 Plausible 的設定文件。SMTP 密碼只填在變數裡,不要放進程式碼儲存庫。

登入後點 Add a website,填入要追蹤的網域,複製畫面上的追蹤碼。

安裝追蹤碼並確認有效

把複製的 <script> 放進每個頁面的 <head>。用 Next.js、Vue 等框架時,加在共用的版面配置裡;用 WordPress、Ghost 等 CMS 時,放進佈景主題或網站設定中的頁首程式碼欄位。

用手機或無痕視窗開啟你的網站,這次造訪應該在幾秒內出現在 Umami 的 Realtime 或 Plausible 的即時訪客數中。如果什麼都沒出現:

  • 在瀏覽器開發者工具的 Network 面板確認腳本請求回傳 200;
  • 關掉廣告封鎖工具再試一次;
  • 確認網站的網域和你在 Umami 或 Plausible 中新增的網站一致。

備份

所有統計資料都在資料庫裡。Umami 只需備份 postgresql 服務;Plausible 的帳號在 postgresql,造訪事件在 clickhouse 的磁碟區,兩者都要保存。

PostgreSQL 可以直接在資料庫服務的 Backup & Restore 頁備份。ClickHouse 是磁碟區,備份時要先停止專案。重要的資料,請下載一份備份自行保存,並在新專案中還原一次,確認備份真的可用。詳見備份與還原。

常見問題

能匯入 Google Analytics 的歷史資料嗎? Plausible 社群版可以匯入 Google Analytics 4 的歷史資料,前提是先在 Google Cloud 建立 OAuth 憑證,並把 GOOGLE_CLIENT_ID 和 GOOGLE_CLIENT_SECRET 加進 plausible 服務的變數,步驟見 Plausible 的匯入說明。Umami 的部分,請以它目前的文件為準。

一個 Umami 能追蹤多個網站嗎? 可以。每個網站在 Websites 中分別新增,各自有自己的追蹤碼。

流量分析服務掛了,會影響我的網站嗎? 不會。腳本載入失敗不會讓頁面無法顯示,只是這段期間的造訪不會被記錄。

Plausible 一直無法完成啟動? 查看 clickhouse 和 plausible 服務的日誌。通常是伺服器記憶體不足,或 CPU 不支援 ClickHouse 需要的指令集。

從 Umami 範本或 Plausible 範本開始:先保護好管理員帳號,再安裝追蹤碼、確認資料進來,最後做好備份。