Umami giúp bạn dễ dàng thu thập, phân tích các dữ liệu về traffic, nguồn traffic, các dữ liệu nhân khẩu học, hành vi của khách, trong khi vẫn duy trì quyền riêng tư và quyền sở hữu dữ liệu của khách truy cập (tuân thủ GDPR)
Trước đây mình hay dùng Google Analytics, sau này thì đổi sang Cloudflare Analytics …. vẫn cảm giác không quá thoải mái, Cloudflare thì quá thiếu tính năng, Google thì lại nhiều 1 cách không cần thiết, các dịch vụ Analytics tuân thủ GDPR thì đắt khủng khiếp
Tình cờ biết tới Umami, coi sơ thì thấy khá đơn giản, trực quan, đủ dùng, lại là mã nguồn mở, nên dễ dàng tự lưu trữ (self host), nhờ thế mang sự riêng tư hoàn toàn cho người dùng
Bản thân Umami cũng có phiên bản Umami Cloud miễn phí 10.000 events mỗi tháng, khá thừa cho thèng bibica.net, dùng thử 15 phút cảm giác khá là hợp, đang còn slot VPS Oracle miễn phí để không, nên tiện thể tự cài 1 bản, tự lưu trữ (self host) luôn cho đẹp đội hình 😀
Để mọi thứ đơn giản, thông dụng, thì mình tạo mới 1 con VPS dùng OS Ubuntu 22.04 😀
Cấu hình VPS
Nếu bạn dùng VPS hãng khác, đã cài docker, docker-compose thì không cần làm bước bên dưới
# update OS sudo apt update && sudo apt upgrade -y # set locale locale-gen en_US.UTF-8 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 # Tắt Firewall sudo apt remove iptables-persistent -y sudo ufw disable sudo iptables -F # Chỉnh về múi giờ Việt Nam timedatectl set-timezone Asia/Ho_Chi_Minh # Tạo swap 4GB RAM sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile && echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab cat <<EOF > /etc/sysctl.d/99-xs-swappiness.conf vm.swappiness=10 EOF # Enable TCP BBR congestion control cat <<EOF > /etc/sysctl.conf net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr EOF # Cài đặt docker curl -sSL https://get.docker.com | sh sudo usermod -aG docker $(whoami) sudo systemctl start docker sudo systemctl enable docker apt install docker-compose -y # bypass Oralce sudo wget --no-check-certificate https://raw.githubusercontent.com/bibicadotnet/NeverIdle-Oracle/master/VM.Standard.E2.1.Micro.sh -O /usr/local/bin/bypass_oracle.sh chmod +x /usr/local/bin/bypass_oracle.sh nohup /usr/local/bin/bypass_oracle.sh >> ./out 2>&1 <&- & crontab -l > bypass_oracle echo "@reboot nohup /usr/local/bin/bypass_oracle.sh >> ./out 2>&1 <&- &" >> bypass_oracle crontab bypass_oracle
Các bước râu ria ở trên VPS nào mình cũng làm, bao gồm cập nhập Ubuntu, tắt firewall, tạo 4G RAM ảo, bật BBR, cài đặt docker, docker-compose và bypass oracle …
Cài đặt Umami
Trước đây mình dùng cấu hình docker-compose.yml như tác giả đề xuất, sau này mình dùng theo cấu hình được trang programonaut chia sẻ, cấu hình này đã tự đưa các data vào trong thư mục /umami/data
, mỗi ngày tạo thêm backup 1 lần … ban đầu thì mình thấy khá hay, vì data được backup thành nhiều bản cho nhiều ngày
Mà sau khi sử dụng vài hôm, thấy cách vận hành nó khá lằng nhằng, kiểu bạn phải tạo thêm 1 database, để backup cái database đang chạy, tốn thêm dung lượng, RAM …. mà dữ liệu của Umami nó chỉ là các log khách truy cập, bạn nhìn lướt qua là hết tác dụng rồi, không phải dữ liệu quan trọng để mà phải cấu hình phức tạp tới mức thế
Nên cuối cùng mình dùng lại cấu hình mặc định từ tác giả, bổ xung tùy chọn lưu data database vào thư mục bên trong Umami là cũng luôn có data mới nhất rồi, sau này muốn chuyển VPS sang nơi khác thì chỉ cần download hết thư mục này về rồi chạy docker-compose up -d
là được
Có thể cài đặt thêm Dockge để quản lý các docker cho tiện cũng được
nano docker-compose.yml
Nội dung bên trong điền vào
version: '3' services: umami: image: ghcr.io/umami-software/umami:postgresql-latest ports: - "3000:3000" environment: DATABASE_URL: postgresql://umami:umami_p3JhoTAq29f9m8Cg58Fk@db:5432/umami DATABASE_TYPE: postgresql APP_SECRET: nJprJ75pLeIQT9AXP+yPx0/gzejtX depends_on: db: condition: service_healthy restart: always db: image: postgres:15-alpine environment: POSTGRES_DB: umami POSTGRES_USER: umami POSTGRES_PASSWORD: umami_p3JhoTAq29f9m8Cg58Fk volumes: - ./data:/var/lib/postgresql/data restart: always healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 5s timeout: 5s retries: 5 volumes: umami-db-data:
- Đổi
APP_SECRET
sang 1 giá trị khác, có thể chạy lệnh bên dưới để tạo ngẫu nhiên 1 dãy kí tự
openssl rand -base64 64 | tr -d '\n' ; echo
Ra dãy số dạng C5zElMKk9JS2AwxUD9Sg0W8epYA/BB5+CcRpgoiwIdIcyZjSwKSTNkvoNYfVTDaYgtigr+Ck2CY+NKYKkbBYQg==
- Các giá trị liên quan tới database như password nên đổi lại để hệ thống an toàn một chút (dòng 8, 20)
Tiếp theo chạy lệnh bên dưới để hoàn thành cài đặt
docker-compose up -d --build --remove-orphans --force-recreate
Cài đặt xong bạn có thể truy cập vào web UI bằng IP:3000, tài khoản quản trị
User: admin Password: umami
Umami hoạt động qua cổng 3000, gần như không đụng chạm với bất cứ cái gì, bạn có thể cài đặt trên cùng host chính chạy website mà vẫn rất an toàn
Cấu Hình Cloudflare Tunnels
Để việc login dễ nhớ, và link analytics đẹp mắt hơn thì có thể dùng Cloudflare Tunnels làm Reverse Proxy thay thế cho dãy IP:3000
Tạo tài khoản Cloudflare Zero Trust ->Access -> Tunnel -> Create a tunnel -> đặt 1 tên cho dễ nhớ (analytics.bibica.net) -> Install and run a connector
Sau đó tạo Public hostnames analytics.bibica.net tới IP:3000
Xong xuôi thì có thể truy cập vào Umami qua subdomain analytics.bibica.net
Trên Nginx có thể dùng cấu hình như sau
location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:3000; }
Cấu hình Websites
- Settings -> Add website
Đặt Name tùy ý, Domain điền dạng domain.com (không cần điền https:// đằng trước)
- Xong xuôi thì vào tracking code lấy code tương tự các dịch vụ analytics khác
Việc cấu hình cơ bản như thế, bạn có thể vào đổi lại tài khoản admin, mật khẩu, ngôn ngữ (Umami có hỗ trợ tiếng Việt luôn) …
Bạn cũng có thể tạo 1 trang public (tính năng Share URL) để xem các thông tin cho nhanh, đỡ phải login vào quản trị phiền hà
1 điểm theo mình khá củ chuối, Umami không có tính năng chặn track của admin 😀 nên quản trị vào cũng bị tính luôn 😀 có thể xử lý thủ công bằng cách chặn file analytics (script.js) bằng các app như AdGuard
Cách thức hoạt động của Umami cũng tương tự các dịch vụ khác, nên cũng không có gì bàn nhiều, trang quản trị của họ cũng rất đơn giản, xem tầm 5-10 phút, ấn ấn vài cái là hiểu cả thôi 😀
Hiệu quả sử dụng:
Tác giả viết rất tốt, và cách Umami cấu hình cũng siêu đơn giản, mọi thứ hoạt động đúng như mình mong đợi, không có gì phàn nàn về hiệu năng
Tuy thế, sau 1 thời gian sử dụng, khá bất ngờ vì mình thấy Umami ăn tài nguyên rất nhiều, Artalk là cả hệ thống comment chỉ dùng < 20 MB RAM, Umami dùng ~ 400 MB RAM, chưa kể nó ghi dữ liệu vào database rất nhiều, dùng thì mình không gặp bất cứ vấn đề gì, nhưng nhìn nó ăn RAM quá cũng khá thốn :]]
Theo mình thì bạn nên cài riêng nó ra 1 VPS để tránh ảnh hưởng tới server gốc, traffic ít thì có thể dùng Umami Cloud miễn phí cũng ổn
Cấu hình Umami Cloud
Nếu trang của bạn traffic < 10.000 lượt view 1 tháng, có thể dùng thẳng dịch vụ Umami Cloud miễn phí của họ, đỡ phải mất công cài đặt self host này nọ, rối rắm, phiền phức 😀
Nếu dùng qua dịch vụ của Umami, link tracking sẽ bắt đầu bằng analytics.eu.umami.is
Link Share URL public sẽ random thư mục bên trong
Có thể dùng các hình thức Reverse Proxy làm ngắn và đẹp các link này, giúp việc quản lý đơn giản hơn
Do mình đang dùng webserver Caddy, nên sẽ demo theo Caddy, bạn nào dùng Nginx hoặc các webserver khác thì đại khái ý tưởng cũng là như thế
analytics.bibica.net { tls /etc/ssl/bibica.net.pem /etc/ssl/bibica.net.key reverse_proxy https://analytics.eu.umami.is { header_up Host {http.reverse_proxy.upstream.hostport} } handle_path /monitor* { rewrite * /share/uGAnI6Tm9RDP56EH/BIBICA.NET{uri} reverse_proxy https://analytics.eu.umami.is { header_up Host {http.reverse_proxy.upstream.hostport} } } }
Lúc này link https://analytics.eu.umami.is/script.js
sẽ thành https://analytics.bibica.net/script.js
Link https://analytics.eu.umami.is/share/uGAnI6Tm9RDP56EH/BIBICA.NET
sẽ thành https://analytics.bibica.net/monitor
Về cơ bản mọi thứ vận hành khá bình thường, check location chính xác, trừ vụ khi hoạt động, cảm giác cụm server EU của Umami khá là phò 😀
Các file track ~500 byte cho tới vài kb mà TTFB toàn > 500ms 😀 Firefox cũng phải gào là các request này chậm quá 😀 trên self host tại Singapore thì TTFB ~200ms là cùng
Có thể xử lý đơn giản nhất là delay file script.js này, nó sẽ chỉ load khi khách đã vào trang, di chuyển chuột hoặc bàn phím mới bắt đầu load, lý thuyết thì gần như bạn sẽ không thấy sự hiện diện của nó
Tổng thể lúc này dù ta đang dùng Umami Cloud nhưng hiệu quả khá tương tự self host, do hiện tại mình đang dùng Umami Cloud nên bổ xung thêm 1 chút phần này
Update 29/11/2023
Do mới chuyển về VPS tại Việt Nam, đổi sang dùng lại Nginx, mình đổi từ Umami Cloud sang chạy self host tại VPS Singapore nên cập nhập lại bài
- Cập nhập lại 1 chút các cấu hình liên quan tới database trên docker-compose.yml, giúp tăng 1 chút bảo mật
- Cập nhập proxy_pass cho Nginx, Caddy
Update 05/12/2023
- Cập nhập cấu hình docker-compose.yml có sẵn data và backup
Update 11/12/2023
- Cập nhập cấu hình docker-compose.yml, chỉ lưu data mới nhất vào thư mục
/data
Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.
• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.
• ✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!