如何在 Oracle Cloud 上安裝 Umami ?

Umami 是一個簡單易用、自托管的開源網站訪問流量統計分析工具。Umami 不使用 Cookie,不跟蹤用戶,且所有收集的數據都會匿名化處理,符合 GDPR 政策,資源占用很低,雖然功能簡單,但分析的數據內容很豐富,基本的來源國家,來源域名,使用的瀏覽器、系統、設備,訪問的網頁這些都有。

它還支持多國語言,完全可以用來替代 Google Analytics、Cloudflare Web Analytics、CNZZ、51LA 等統計工具,而且自己搭建也可以避免被 block 掉從而使統計數據更精確(後來發現也會被部分去廣告外掛攔截…)。查看在線演示

Umami 這個詞語其實源於 “Umai”,在日語裡是「美味、鮮味」的意思,從使用體驗來看確實 umami,於是在這裡分享一下搭建與使用的教學。

如果你擁有一個 Oracle Cloud 賬戶,它可以啟用兩個免費的基礎實例(1h1g配置),很適合部署 Umami 這個流量統計分析工具。(同理,本文的教程同样适用于 AWS,Google Cloud 以及其他VPS)

而在本文中,我們將使用Debian系統進行演示。

Debian 的安裝與升級

Oracle cloud 的後臺並沒有直接提供 Debian 映像,我們將先安裝 Ubuntu 18,再安裝 Debian。

在免費額度內,新建一個實例(選擇安裝Ubuntu 18)。

將私鑰轉換成.ppk,通過 SSH 登錄你的伺服器。註意:Oracle Ubuntu 映像的默認用戶名為ubuntu

第一行命令:下載腳本

wget https://moeclub.org/attachment/LinuxShell/InstallNET.sh

執行腳本安裝Debian 9系統

bash InstallNET.sh -d 9 -v 64 -a -firmware

安裝實際很快,但是客戶端會自動掉線,等待10分鐘左右(不要後臺重啓伺服器),差不多時間嘗試重新SSH鏈接(這時是不需要ppk祕鑰的)。
默認用戶名:root
默認密碼:MoeClub.org(自行修改root密碼)

但是Debian 9相對舊了一點(腳本其實可以直接安裝更新的版本),我實際操作後續代碼,也提示腳本不支持該版本。

更新Debian系統

apt-get update && apt-get upgrade

備份(可選)

cp /etc/apt/sources.list /etc/apt/sources.list.orig

替換字段

sed -i 's/stretch/buster/g' /etc/apt/sources.list

更新組件與升級程序

sapt-get update && apt-get upgrade

執行升級命令

apt-get dist-upgrade

完成後會顯示版本號。

完成後重啓

reboot

通過 Docker 部署應用

Umami對於硬件要求比較小,512M記憶體的機器也可以跑起來。

安裝docker、curl、git、nginx等必備組件

apt -y update

安裝Nginx

apt -y install curl git nginx python-certbot-nginx

安裝Docker

curl -sSL https://get.docker.com/ | sh

然後,

systemctl enable docker nginx

接著,

curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

不要忘了添加權限,

chmod +x /usr/local/bin/docker-compose

完成後,到github上接取項目,

git clone https://github.com/mikecao/umami.git

跟著進入目錄,

cd umami/

編輯配置文件,

nano docker-compose.yml

參考以下代碼進行修改,

version: '3'
services:
  umami:
    image: ghcr.io/mikecao/umami:postgresql-latest
    ports:
      - "3000:3000" #僅監聽在本地
    environment:
      DATABASE_URL: postgresql://username:password@db-umami:5432/umami #這裡的數據庫和用戶名密碼要和下方你修改的相同
      DATABASE_TYPE: postgresql
      HASH_SALT: replace-me-with-a-random-string
    depends_on:
      - db-umami
  db-umami:
    image: postgres:12-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: username #數據庫用戶
      POSTGRES_PASSWORD: password #數據庫密碼
    volumes:
      - ./sql/schema.postgresql.sql:/docker-entrypoint-initdb.d/schema.postgresql.sql:ro
      - umami-db-data:/var/lib/postgresql/data
volumes:
  umami-db-data:

nano命令的操作方法,方向鍵移動光標,在需要輸入的地方鍵入內容,最後Ctrl+O保存(按Y確認保存),按Ctrl+X退出nano糢式。
註意username,password以及db-umami這幾個字段要上下對應。
然後我們就可以啓動docker了,

docker-compose up -d

但還沒結束,需要編輯一下反代配置,

nano /etc/nginx/conf.d/umami.conf

另外你需要到你的域名供應商那配置一下你的域名指向(可以是二級域名),記得把你的域名解析到這個VPS的IP上。

umami.conf 這個新建文件為空,直接複製黏貼以下內容進去,保存後退出。

server {
   listen 80;
   server_name 域名; #換成你的域名
   client_max_body_size 0;

location / {
   proxy_pass       http://127.0.0.1:3000;
   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;
   }
}

添加HTTPS(可選)

想用HTTPS可以自動簽發一個證書,使用以下命令,過程中需要輸入信箱和Y進行確認。

certbot --nginx

檢查nginx配置

nginx -t

沒問題的話可以訪問你的域名了,打開的是英文界面,用戶名為admin,密碼為umami

但是我首次使用碰到了 Internal Server Error 錯誤提示。

如何解決Umami Internal Server Error 錯誤?

一般多是跟數據庫相關的錯誤配置。

我重新仔細檢查了 docker-compose.yml 和 umami.conf 兩個文件,對比網上搜尋的資料,用 nano 命令修改了一些錯誤。

建議大家仔細核對以上兩個配置文件。

最後,關鍵是,

docker-compose up

就是說,如果你修正了一些配置文件錯誤,要再次啓動一次docker,

當時等待啓動完成後,重新整理下頁面我就進去 Umami 了。

更多詳細的使用方式,例如點擊跟蹤、多用戶、環境變量以及 API 操作,可以查看官網文檔

Related Posts
Leave a Reply

Your email address will not be published.Required fields are marked *