前言
如果你曾經受夠了 Google Analytics 那像迷宮一樣的設定介面,或者受夠了每次打開網站都要彈出一個「我們使用 Cookie」的橫幅,那麼 Medama Analytics 可能會是你一直在找的解藥。
Medama 是一個開源、自架、隱私優先的網站分析工具。它的核心理念很簡單:不靠 Cookie、不記錄 IP、不採集指紋,只用不到 1KB 的輕量追蹤腳本,就能幫你掌握網站的流量狀況。而且,它只是一個單一執行檔,沒有外部資料庫需要設定,512MB 記憶體的虛擬機器就能跑。
今天這篇文章,我會帶你從零開始,用 Docker 在 3 分鐘內把 Medama 架起來,並且把追蹤器嵌入你的網站。不需要資料庫、不需要 Node.js、不需要 npm install——真的只要三行 Docker 指令。
為什麼選擇 Medama?
在開始架站之前,先來看看 Medama 到底有什麼特別。
隱私至上,不用怕 GDPR
Medama 追蹤頁面瀏覽、來源頁面、訪客數等基礎指標,但不設定 Cookie、不記錄 IP 位址、不做瀏覽器指紋識別。這意味著對於歐盟使用者來說,你幾乎可以不用放 Cookie 橫幅,自然符合 GDPR 和 PECR 規範。
輕量到不可思議
- 追蹤腳本不到 1KB(相比之下,Google Analytics 的腳本超過 40KB)
- 後端用 Go 語言寫成單一執行檔,沒有外部依賴
- 最低 256MB 記憶體就能跑(官方建議 512MB)
- 資料庫使用 DuckDB,內嵌在執行檔裡,完全不需要額外安裝 PostgreSQL 或 MySQL
開源且授權友善
核心程式碼採用 Apache 2.0 授權,追蹤器腳本採用 MIT 授權。你可以自由修改、分發、甚至商用。
跟 Umami、Plausible 比起來?
如果你聽過 Umami 或 Plausible 這兩款隱私分析工具,Medama 的差異在於:
| 特性 | Medama | Umami | Plausible |
|---|---|---|---|
| 資料庫需求 | 無(DuckDB 內嵌) | PostgreSQL / MySQL | 需要外部資料庫 |
| 單一執行檔 | ✅ | ❌ | ❌ |
| 最低記憶體 | 256MB | 512MB+ | 512MB+ |
| 開源 | ✅ | ✅ | ✅(部分) |
| 自架免費 | ✅ | ✅ | ✅(Cloud 版付費) |
簡單來說,Medama 走的是「極簡自架」路線。如果你想要最少的資源佔用和最簡單的部署流程,Medama 是目前市面上最輕量的選擇。
架站準備
在開始之前,你需要準備:
- 一台伺服器:任何能跑 Docker 的 Linux 機器都行,256MB 記憶體以上
- 一個域名(選填):如果你想要用 HTTPS 訪問的話
- 基本 Docker 知識:會跑
docker run就夠了
沒有域名也沒關係,先用 localhost 跑起來再說。
步驟一:用 Docker 快速部署
最推薦的方式是用 Docker,因為它幫你處理了所有環境依賴。
建立資料卷
首先,建立一個 Docker volume 來存放 Medama 的資料庫檔案:
docker volume create medama-data
啟動容器
接著,用這一行指令啟動 Medama:
docker run -d -p 8080:8080 -v medama-data:/app/data ghcr.io/medama-io/medama:latest
這行指令做了三件事:
-d:在背景執行-p 8080:8080:把容器的 8080 端口映射到主機-v medama-data:/app/data:把資料庫資料持久化到 volume
就這一行。不需要設定資料庫、不需要跑 migration、不需要安裝依賴。
用 Docker Compose(推薦)
如果你有專案管理習慣,用 Docker Compose 會更方便維護:
version: '3'
services:
medama:
image: ghcr.io/medama-io/medama:latest
ports:
- "8080:8080"
volumes:
- medama-data:/app/data
restart: unless-stopped
volumes:
medama-data:
存成 docker-compose.yml 後,執行:
docker-compose up -d
搞定。
步驟二:首次登入與設定
現在打開瀏覽器,訪問 http://你的伺服器IP:8080。
⚠️ 注意:首次登入必須使用
localhost或HTTPS連線,用 HTTP 連線會登入失敗。如果你用外部 IP 訪問,建議先設定反向代理加上 SSL。
預設的登入帳號是:
- 帳號:
admin - 密碼:
CHANGE_ME_ON_FIRST_LOGIN
登入後,系統會強制你修改密碼。建議立刻改掉預設值。
步驟三:新增你的網站
登入後,在儀表板中找到「新增網站」的選項,填入:
- 網站名稱:隨便取,方便自己分辨就好
- 域名:你的網站網址,例如
example.com
新增完成後,Medama 會給你一段追蹤腳本的代碼。
步驟四:嵌入追蹤腳本
Medama 會給你一段類似這樣的 HTML 代碼:
<script defer src="https://你的-medama-domain.com/script.js"></script>
把這段代碼貼到你網站的 <head> 標籤內,就完成了。
💡 提示:
script.js這個腳本只有不到 1KB,對頁面載入速度的影響幾乎可以忽略不計。
如果你的網站是用 WordPress 架的,可以安裝像 “Insert Headers and Footers” 這類外掛,把腳本貼到 Header 區域。如果是靜態網站,直接編輯 HTML 檔案即可。
步驟五:開始看數據
刷新你的網站頁面,回到 Medama 儀表板,你應該就能即時看到訪客數據了。
Medama 的儀表板提供以下資訊:
- 即時訪客數:目前有多少人在你的網站上
- 頁面瀏覽統計:哪些頁面最熱門
- 來源分析:訪客從哪裡來(搜尋引擎、直接輸入、社群媒體等)
- 裝置統計:桌面、平板、手機的流量分佈
- 地理位置:訪客來自哪些國家和城市
所有數據都是實時更新的,不需要等待 24 小時的處理延遲。
進階設定:反向代理 + SSL
如果你有自己的域名,建議用 Nginx 或 Caddy 設定反向代理,這樣就能用上 HTTPS,也能用自訂網域訪問。
Nginx 設定範例
server {
listen 443 ssl http2;
server_name analytics.example.com;
ssl_certificate /etc/letsencrypt/live/analytics.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/analytics.example.com/privkey.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
使用 Caddy(更簡單)
如果你嫌 Nginx 設定麻煩,Caddy 可以自動申請 Let’s Encrypt 憑證:
存檔後重啟 Caddy 就自動搞定 SSL。
進階設定:環境變數
Medama 支援透過環境變數進行設定,最常用的是修改預設帳號密碼:
services:
medama:
image: ghcr.io/medama-io/medama:latest
ports:
- "8080:8080"
volumes:
- medama-data:/app/data
environment:
- MEDAMA_DEFAULT_USERNAME=myadmin
- MEDAMA_DEFAULT_PASSWORD=mypassword
restart: unless-stopped
更多可用的環境變數,可以參考官方文件中的 Environment Variables 頁面。
總結
Medama Analytics 是目前最輕量、最容易自架的隱私分析工具之一。它的優點很明確:
- 部署極簡:一行 Docker 指令搞定,沒有資料庫、沒有依賴
- 資源佔用低:256MB 記憶體就能跑,追蹤腳本不到 1KB
- 隱私友好:不設 Cookie、不記 IP、不採指紋,GDPR 免煩惱
- 開源免費:Apache 2.0 + MIT 授權,自由修改分發
如果你正在尋找 Google Analytics 的替代方案,又不想被複雜的設定搞到頭昏,Medama 值得你花 3 分鐘試試看。
官方文件:oss.medama.io GitHub:medama-io/medama