Cài đặt Umami cho Docker LCMP Multisite

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 qua reverse_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ùng reverse_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_NAMECOLLECT_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

Cài đặt Umami cho Docker LCMP Multisite

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


Related Posts

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ị!