Cách cài đặt phần mềm phân tích trang web Umami trên Ubuntu 20.04

Ngày đăng: November 28, 2022

Ubuntu

Giới thiệu

Umami là một ứng dụng phân tích trang web mã nguồn mở, tự lưu trữ, được viết bằng Node.js. Nó tập trung vào sự đơn giản, được thiết kế tốt, nhanh chóng và tập trung vào quyền riêng tư. Nó có thể lưu trữ dữ liệu về khách truy cập trang web của bạn trong cơ sở dữ liệu MySQL hoặc PostgreSQL.

Trong hướng dẫn này, bạn sẽ cài đặt Umami và cơ sở dữ liệu PostgreSQL bằng Docker Compose, sau đó cài đặt Nginx để hoạt động như một proxy ngược cho Umami. Cuối cùng, bạn sẽ kích hoạt các kết nối HTTPS an toàn bằng cách sử dụng Certbot để tải xuống và thiết lập cấu hình chứng chỉ SSL từ Tổ chức phát hành chứng chỉ Let's Encrypt.

Điều kiện tiên quyết

Để hoàn thành hướng dẫn này, trước tiên bạn cần những thứ sau:

  • Máy chủ Ubuntu 20.04, có bật tường lửa UFW. Vui lòng đọc Thiết lập máy chủ ban đầu với Ubuntu 20.04 của chúng tôi để tìm hiểu thêm về cách thiết lập các yêu cầu này
  • Đã cài đặt Docker. Bạn có thể sử dụng Bước 1 của Cách cài đặt và sử dụng Docker trên Ubuntu 20.04 để hoàn thành việc này. Theo tùy chọn, bạn có thể làm theo Bước 2 của hướng dẫn đó nếu bạn muốn non-root user của mình có thể chạy các lệnh docker mà không cần sử dụng sudo
  • Docker Compose đã được cài đặt. Thực hiện theo Bước 1 của Cách cài đặt và sử dụng Docker Compose trên Ubuntu 20.04 để cài đặt phần mềm này

Lưu ý: Có thể bỏ qua các bước tiên quyết này nếu bạn đang sử dụng 1-Click Docker Image của CloudFly. Hình ảnh này sẽ có Docker, Docker Compose và UFW đã được cài đặt và thiết lập cấu hình.

Khởi chạy một Docker image mới trong khu vực bạn chọn, sau đó đăng nhập với tư cách root user và tiếp tục với hướng dẫn. Theo tùy chọn, bạn có thể bỏ qua phần sudo của tất cả các lệnh, nhưng điều đó là không cần thiết.

Cuối cùng, để kích hoạt SSL, bạn sẽ cần một tên miền trỏ tới địa chỉ IP công khai của máy chủ. Giống như example.com hoặc umami.example.com chẳng hạn.

Khi bạn đã đáp ứng tất cả các điều kiện tiên quyết, hãy chuyển sang Bước 1, nơi bạn sẽ tải xuống và khởi chạy phần mềm Umami.

Bước 1: Cài đặt Umami và PostgreSQL với Docker Compose

Bước đầu tiên của bạn là sao chép kho lưu trữ Umami Git, cập nhật tệp cấu hình docker-compose.yml, sau đó khởi động các bộ chứa Umami và PostgreSQL.

Bạn sẽ tải repo vào thư mục /opt. Sử dụng lệnh cd để đến đó ngay bây giờ:

  1. cd /opt

Sau đó, sử dụng lệnh git để sao chép repo từ GitHub:

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

Thao tác này sẽ kéo tất cả phần mềm và tệp cấu hình vào /opt/umami. Di chuyển vào thư mục umami mới được tạo ngay bây giờ:

  1. cd umami

Bây giờ bạn cần cập nhật tệp docker-compose.yml của dự án. Tệp này là thứ mà lệnh docker-compose sử dụng để thiết lập cấu hình và khởi chạy nhiều vùng chứa Docker cùng một lúc. Chúng ta cần thay đổi hai tùy chọn trong tệp này: IP mà Umami liên kết và một hash ngẫu nhiên được sử dụng làm salt khi mã hóa mọi thứ trong cơ sở dữ liệu.

Trước khi bạn mở docker-compose.yml để chỉnh sửa nó, hãy tạo một hash ngẫu nhiên mới để dán vào tệp:

  1. openssl rand -base64 32
Output
tCgKyCWc/3C9VH+Ex0TysXsGEKQklQXm0H3nSnlR48g=

Điều này sử dụng lệnh openssl để tạo 32 ký tự ngẫu nhiên. Sao chép đầu ra vào khay nhớ tạm của bạn, sau đó mở tệp cấu hình:

  1. sudo nano docker-compose.yml

Tìm tùy chọn HASH_SALT, xóa placeholder text và dán vào hash ngẫu nhiên bạn vừa tạo:

docker-compose.yml
. . .
      HASH_SALT: replace-me-with-a-random-string
. . .

Tiếp theo, tìm phần ports: của cấu hình:

docker-compose.yml
. . .
    ports:
      - "127.0.0.1:3000:3000"
. . .

Cập nhật giá trị "3000:3000" bằng cách thêm 127.0.0.1: vào giá trị đó. Điều này đảm bảo rằng Umami chỉ lắng nghe trên giao diện máy chủ cục bộ và không có sẵn công khai. Mặc dù bạn đã thiết lập tường lửa UFW, nhưng do một số điểm kỳ quặc trong cách thức hoạt động của mạng Docker, nếu bạn không thực hiện bước này, bộ chứa Umami của bạn sẽ có thể được truy cập công khai trên cổng 3000.

Khi các thay đổi cấu hình đó hoàn tất, hãy lưu tệp (CTRL+O rồi ENTER bằng nano) và đóng trình chỉnh sửa của bạn (CTRL+X).

Bây giờ, hãy sử dụng docker-compose để khởi động hai vùng chứa của bạn:

  1. sudo docker-compose up --detach

Cờ --detach yêu cầu docker-compose tạo các vùng chứa trong background, tách ra khỏi terminal session của chúng ta:

Output
. . . Creating umami_db_1 ... done Creating umami_umami_1 ... done

Umami và PostgreSQL hiện đang chạy. Bạn có thể xác minh điều này bằng cách sử dụng lệnh curl để tìm nạp trang chủ của bộ chứa Umami mới chạy trên localhost:

  1. curl localhost:3000
Output
<!DOCTYPE html><html><head><meta charSet="utf-8"/> . . .

Nếu một lượng lớn HTML được xuất ra thiết bị đầu cuối của bạn, thì bạn biết rằng máy chủ Umami đã hoạt động.

Tiếp theo, chúng ta sẽ thiết lập Nginx để đảo ngược proxy Umami từ localhost:3000 thành công khai.

Bước 2: Cài đặt và cấu hình Nginx

Đặt một máy chủ web chẳng hạn như Nginx trước máy chủ Node.js của bạn có thể cải thiện hiệu suất bằng cách giảm tải bộ nhớ đệm, nén và phân phối tệp tĩnh cho một quy trình hiệu quả hơn. Chúng ta sẽ cài đặt Nginx và thiết lập cấu hình nó thành các yêu cầu proxy tới Umami, nghĩa là nó sẽ xử lý các yêu cầu từ user của bạn tới Umami và ngược lại.

Trước tiên, hãy làm mới danh sách gói của bạn, sau đó cài đặt Nginx bằng apt:

  1. sudo apt update
  2. sudo apt install nginx

Cho phép lưu lượng truy cập công khai đến các cổng 80443 (HTTP và HTTPS) bằng cách sử dụng cấu hình ứng dụng UFW “Nginx Full”:

  1. sudo ufw allow "Nginx Full"
Output
Rule added Rule added (v6)

Tiếp theo, mở tệp cấu hình Nginx mới trong thư mục /etc/nginx/sites-available. Chúng tôi sẽ gọi tên của chúng tôi là umami.conf nhưng bạn có thể sử dụng một tên khác:

  1. sudo nano /etc/nginx/sites-available/umami.conf

Dán phần sau vào tệp cấu hình mới, đảm bảo thay thế your_domain_here bằng tên miền mà bạn đã thiết lập cấu hình để trỏ đến máy chủ Umami của mình. Ví dụ như umami.example.com:

/etc/nginx/sites-available/umami.conf
server {
    listen       80;
    listen       [::]:80;
    server_name  your_domain_here;

    access_log  /var/log/nginx/umami.access.log;
    error_log   /var/log/nginx/umami.error.log;

    location / {
      proxy_pass http://localhost:3000;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

Cấu hình này hiện chỉ dành cho HTTP, vì chúng ta sẽ để Certbot đảm nhiệm việc thiết lập cấu hình SSL trong bước tiếp theo. Phần còn lại của cấu hình thiết lập các vị trí ghi nhật ký và sau đó chuyển tất cả lưu lượng truy cập đến http://localhost:3000, phiên bản Umami mà chúng ta đã bắt đầu ở bước trước.

Lưu và đóng tệp, sau đó kích hoạt cấu hình bằng cách liên kết nó vào /etc/nginx/sites-enabled/:

  1. sudo ln -s /etc/nginx/sites-available/umami.conf /etc/nginx/sites-enabled/

Sử dụng nginx -t để xác minh rằng cú pháp tệp cấu hình là chính xác:

  1. sudo nginx -t
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Và cuối cùng, tải lại dịch vụ nginx để nhận cấu hình mới:

  1. sudo systemctl reload nginx

Trang web Umami của bạn bây giờ sẽ khả dụng trên HTTP đơn giản. Tải http://your_domain_here và nó sẽ trông như thế này:

description image

Bây giờ bạn đã thiết lập và chạy trang web của mình qua HTTP, đã đến lúc bảo mật kết nối với chứng chỉ Certbot và Let's Encrypt.

Bước 3: Cài đặt Certbot và Thiết lập Chứng chỉ SSL

Nhờ có Certbot và cơ quan cấp chứng chỉ miễn phí Let's Encrypt, việc thêm mã hóa SSL vào ứng dụng Umami của chúng ta sẽ chỉ mất hai lệnh.

Đầu tiên, cài đặt Certbot và plugin Nginx của nó:

  1. sudo apt install certbot python3-certbot-nginx

Tiếp theo, hãy chạy certbot ở chế độ --nginx và chỉ định cùng một miền mà bạn đã sử dụng trong cấu hình Nginx server_name:

  1. sudo certbot --nginx -d your_domain_here

Bạn sẽ được nhắc đồng ý với các điều khoản dịch vụ của Let's Encrypt và nhập địa chỉ email.

Sau đó, bạn sẽ được hỏi có muốn chuyển hướng tất cả lưu lượng HTTP sang HTTPS hay không. Điều đó tùy thuộc vào bạn, nhưng điều này thường được khuyến nghị và an toàn để thực hiện.

Sau đó, Let's Encrypt sẽ xác nhận yêu cầu của bạn và Certbot sẽ tải xuống chứng chỉ của bạn:

Output
Congratulations! You have successfully enabled https://umami.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=umami.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/umami.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/umami.example.com/privkey.pem Your cert will expire on 2021-12-06. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

Certbot sẽ tự động tải lại Nginx để nhận cấu hình và chứng chỉ mới. Tải lại trang web của bạn và nó sẽ tự động chuyển bạn sang HTTPS nếu bạn chọn tùy chọn chuyển hướng.

Trang web của bạn hiện đã được bảo mật và bạn có thể đăng nhập an toàn bằng user admin mặc định và mật khẩu umami. Vui lòng thực hiện việc này ngay lập tức và làm theo tài liệu đăng nhập chính thức đầu tiên để đăng nhập và thay đổi mật khẩu admin của bạn thành mật khẩu an toàn hơn.

Khi đăng nhập lần đầu, bạn sẽ thấy một bảng điều khiển hơi trống:

description image

Bạn đã cài đặt và bảo mật thành công phần mềm phân tích Umami của mình. Trong phần kết của hướng dẫn này, bạn sẽ tìm thấy các liên kết đến tài liệu giúp bạn bắt đầu với việc thêm trang web của mình vào Umami và thêm đoạn mã theo dõi Umami vào trang web của bạn.

Kết luận

Trong hướng dẫn này, bạn đã khởi chạy ứng dụng Umami và cơ sở dữ liệu PostgreSQL bằng Docker Compose, sau đó thiết lập proxy ngược Nginx và bảo mật nó bằng chứng chỉ SSL Let's Encrypt.

Ngoài ra, bạn nên đăng nhập và cập nhật mật khẩu mặc định. Hãy làm điều đó ngay bây giờ.

Sau đó, tiếp tục với tài liệu chính thức để tìm hiểu cách thêm trang web vào Umami, sau đó bắt đầu thu thập dữ liệu bằng cách cài đặt mã theo dõi trên trang web của bạn.

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly
Chia sẻ

0 câu trả lời