Bài viết về Umami thì mình cũng đã có 1 bài viết khá lâu tại đây, thực tế thèng bibica.net vẫn dùng phiên bản Umami Cloud miễn phí của họ, chủ yếu vì thấy tự cài ăn tài nguyên khá nhiều (~ 200MB – 300MB RAM), nhu cầu hiện tại dùng bản miễn phí của họ cũng thừa, dùng ổn định 1 năm nay, thi thoảng server của họ downtime 1-2 phút gì đó không ảnh hưởng lắm, vì mục đích chính các tool analytics dạng này thường là theo dõi số liệu theo nhiều tháng, nhiều năm, coi bài viết nào khách coi nhiều, truy cập tới từ đâu, hay là dùng thiết bị, độ phân giải gì ….
Không rõ nay bị làm sao, mà không truy cập được vào domain cloud.umami.is
😀 nên thôi, chuyển sang dùng self host luôn cho đỡ lằng nhằng lệ thuộc, phần vì giờ thèng bibica.net đang chạy Oracle 24GB RAM, cấu hình phần cứng quá là khỏe
Do mình đang dùng Docker LCMP Multisite, đã chạy qua docker và dùng Caddy làm proxy, nên viết nhanh gọn là đủ, bạn nào thích có thể xem lại bài cấu hình gốc, về cơ bản cũng không khác nhau là mấy
Cài đặt Umami
Do đang cài đặt mọi thứ bên trong thư mục home
, nên mình tạo thêm 1 thư mục umami
bên trong, có backup thư mục home
là tự copy đầy đủ umami
mkdir /home/umami cd /home/umami nano compose.yml
Nội dung bên trong điền vào
services: umami: image: ghcr.io/umami-software/umami:postgresql-latest container_name: umami env_file: ./.env environment: DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@umami-database:5432/${POSTGRES_DB} depends_on: - umami-database restart: always networks: - reverse_proxy umami-database: image: postgres:15-alpine container_name: umami-database env_file: ./.env volumes: - ./data:/var/lib/postgresql/data restart: always networks: - reverse_proxy networks: reverse_proxy: external: true
- Xóa phần
port
đi, do chạy quareverse_proxy
- Đặt lại
container_name
tên gọi cho chính xác để dễ quan sát, theo dõi DATABASE_URL
: mặc định đúng ra khi dùngreverse_proxy
là không cần phải điền vào, mà không rõ Umami cấu hình sao đó, vẫn phải thêm vào, không thì 1 số file check không được database???
Tiếp theo tạo file cấu hình các biến .env
nano .env
Nội dung bên trong điền vào
APP_SECRET=9+ASoGrrkmxhX0TQe5DKJZS4veal4/wqK0PEcbqSz1ePQEgP+otWV48/ubpSnFrcQ== TRACKER_SCRIPT_NAME=aloha COLLECT_API_ENDPOINT=/api/aloha POSTGRES_DB=umami POSTGRES_USER=umami POSTGRES_PASSWORD=umami_p3JhoTs282228Cg58Fk
Tinh gọn lại các biến môi trường, để chỉ phải thêm, sửa 1 lần duy nhất từ đây, đỡ phải sửa ở nhiều chỗ (do cấu hình cũ tác giả viết cần sửa nhiều chỗ quá)
- Cấu hình thêm 2 biến mới là
TRACKER_SCRIPT_NAME
vàCOLLECT_API_ENDPOINT
Mặc định Umami dùng tên script là script.js
và API là api/collect
hoặc /api/send
, một số plugin chặn quảng cáo như uBlock Origin thậm chí chặn cả các tên gọi này 😀 để giải quyết vấn đề này, Umami bổ xung 2 biến mới, giúp người dùng có thể tự thêm các tên tủy chỉnh vào theo ý thích
Cá nhân mình không quan tâm chuyện này lắm, có điều tùy biến lại nhìn cái tên file nó đẹp hơn, thêm vào cho đẹp là chính :]]
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ấu hình reverse_proxy trên Docker LCMP Multisite
Mở file cấu hình Caddy của domain muốn dùng ra
nano /home/bibica.net/config/bibica.net.conf
Thêm vào 1 sub domain mới analytics.bibica.net
analytics.bibica.net { tls /data/bibica.net/ssl/bibica.net.pem /data/bibica.net/ssl/bibica.net.key.pem reverse_proxy umami:3000 { header_up X-Forwarded-For {header.X-Forwarded-For} } }
Quản lý proxy qua container_name
rất tiện, dù hơi lú khoản cấu hình ban đầu, nhưng sau khi làm xong là gần như không phải quan tâm tới cái này nữa
Xong xuôi thì khởi động lại Caddy
docker restart caddy
Việc login, cấu hình mọi thứ thì tương tự bài viết gốc, không có gì đặc biệt
Lượng RAM khi idle Umami dùng không hẳn là ít, ~ 200MB theo mình là con số rất cao, VPS nào ít RAM nên hạn chế cài các tool dạng Analytics như này vào, vì tốn tài nguyên lắm
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ị!