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

Tác giả NetworkEngineer, T.Mười 23, 2021, 01:50:15 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

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


Umami là một ứng dụng phân tích web mã nguồn mở, tự lưu trữ được viết bằng Node.js. Nó tập trung vào việc đơn giản, 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 an toàn  HTTPS bằng cách sử dụng Certbot để tải xuống và cấu hình chứng chỉ SSL từ Cơ quan cấp chứng chỉ Let's Encrypt.

Để 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 bài viết thiết lập máy chủ ban đầu với Ubuntu 20.04 của mình để tìm hiểu thêm về cách thiết lập các yêu cầu này.
  • Docker đã được cài đặt. Bạn có thể sử dụng bài viết cách cài đặt và sử dụng Docker trên Ubuntu 20.04 để thực hiện việc này. Theo tùy chọn, bạn có thể làm theo hướng dẫn đó nếu bạn muốn người dùng không phải root 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. Làm theo hướng dẫn 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.

Khởi chạy hình ảnh Docker mới trong khu vực bạn chọn, sau đó đăng nhập với tư cách người dùng root và tiếp tục với hướng dẫn. Theo tùy chọn, bạn có thể bỏ đi các phần sudo của tất cả các lệnh, nhưng 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 được trỏ đến địa chỉ IP công cộng của máy chủ của bạn. Đây phải là một cái gì đó giống như example.com hoặc umami.example.com.

1. Cài đặt Umami và PostgreSQL bằng Docker Compose.

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

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

Mã nguồn [Chọn]
$ cd /opt
Sau đó, sử dụng lệnh git để sao chép repo từ GitHub:

Mã nguồn [Chọn]
$ 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 tin cấu hình vào /opt/umami. Di chuyển vào thư mục mới được tạo umami ngay bây giờ:

Mã nguồn [Chọn]
$ cd umami
Bây giờ bạn cần cập nhật tập tin của dự án docker-compose.yml. Tập tin này là những gì lệnh docker-compose sử dụng để cấu hình và khởi chạy nhiều container Docker cùng một lúc. Mình cần thay đổi hai tùy chọn trong tập tin này: IP mà Umami liên kết với và một băm ngẫu nhiên được sử dụng làm muối 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 băm ngẫu nhiên mới để dán vào tập tin:

Mã nguồn [Chọn]
$ openssl rand -base64 32
     
tCgKyCWc/3C9VH+Ex0TysXsGEKQklQXm0H3nSnlR48g=

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

Mã nguồn [Chọn]
$ sudo nano docker-compose.yml
Tìm tùy chọn HASH_SALT, xóa văn bản giữ chỗ và dán vào hàm băm ngẫu nhiên mà bạn vừa tạo: docker-compos.yml

Mã nguồn [Chọn]
. . .
      HASH_SALT: replace-me-with-a-random-string
. . .

Tiếp theo, tìm phần cấu hình ports: docker-compos.yml

Mã nguồn [Chọn]
. . .
    ports:
      - "127.0.0.1:3000:3000"
. . .

Cập nhật giá trị "3000:3000" bằng cách thêm trước vào giá trị 127.0.0.1:. Điều này đảm bảo rằng Umami chỉ lắng nghe trên giao diện localhost và không được công bố rộng rãi. Mặc dù bạn đã thiết lập tường lửa UFW, do một số vấn đề trong cách hoạt động của mạng Docker, nếu bạn không thực hiện bước này, containers Umami của bạn sẽ có thể 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 tin (CTRL+O sau đó ENTER vào nano) và đóng khỏi 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 containers của bạn:

Mã nguồn [Chọn]
$ sudo docker-compose up --detach
Tùy chọn --detach nói docker-compose để tạo ra các container trong nền, tách ra từ phiên cuối của mình:

Mã nguồn [Chọn]
. . .
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 containers Umami mới của bạn đang chạy trên localhost:

Mã nguồn [Chọn]
$ curl localhost:3000
Mã nguồn [Chọn]
<!DOCTYPE html><html><head><meta charSet="utf-8"/> . . .
Nếu một lượng lớn HTML được xuất ra cửa sổ dòng lệnh của bạn, bạn biết rằng máy chủ Umami đang hoạt động.
Tiếp theo, mình sẽ thiết lập Nginx để làm ngược proxy Umami từ localhost:3000.

2. Cài đặt và định cấu hình Nginx.

Đặt một máy chủ web 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át tập tin tĩnh thành một quy trình hiệu quả hơn. Mình sẽ cài đặt Nginx và cấu hình nó theo các yêu cầu proxy tới Umami, có nghĩa là nó sẽ xử lý việc chuyển các yêu cầu từ người dùng của bạn tới Umami và ngược lại.

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

Mã nguồn [Chọn]
$ sudo apt update
Mã nguồn [Chọn]
$ sudo apt install nginx
Cho phép lưu lượng truy cập công khai đến các cổng 80 và 443 (HTTP và HTTPS) bằng cách sử dụng cấu hình ứng dụng UFW "Nginx Full":

Mã nguồn [Chọn]
$ sudo ufw allow "Nginx Full"

Rule added
Rule added (v6)

Tiếp theo, mở tập tin cấu hình Nginx mới trong thư mục /etc/nginx/sites-available. Mình sẽ sử dụng umami.conf nhưng bạn có thể sử dụng một tên khác:

Mã nguồn [Chọn]
$ sudo nano /etc/nginx/sites-available/umami.conf
Dán phần sau vào tập tin cấu hình mới, đảm bảo thay thế your_domain_here bằng miền mà bạn đã cấu hình để trỏ đến máy chủ Umami của mình. Đây sẽ là một cái gì đó giống như umami.example.com, ví dụ: /etc/nginx/sites-available/umami.conf

Mã nguồn [Chọn]
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ì mình sẽ để Certbot đảm nhiệm việc 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, ví dụ Umami mà chúng ta đã bắt đầu ở bước trước.

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

Mã nguồn [Chọn]
$ 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 tin cấu hình là chính xác:

Mã nguồn [Chọn]
$ sudo nginx -t     
Mã nguồn [Chọn]
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 để chọn cấu hình mới:

Mã nguồn [Chọn]
$ sudo systemctl reload nginx
Trang Umami của bạn bây giờ sẽ có sẵn trên HTTP thuần túy. Tải và nó sẽ trông như thế này trên trình duyệt: http://your_domain_here


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

3. Cài đặt Certbot và Thiết lập Chứng chỉ SSL.

Nhờ Certbot và tổ chức phát hành 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 mình sẽ chỉ mất hai lệnh.

Trước tiên, hãy cài đặt Certbot và plugin Nginx của nó:

Mã nguồn [Chọn]
$ sudo apt install certbot python3-certbot-nginx
Tiếp theo, chạy certbot với tùy chọn --nginx và chỉ định cùng một miền bạn đã sử dụng trong server_name của cấu hình Nginx :

Mã nguồn [Chọn]
$ 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. Đó là tùy thuộc vào bạn, nhưng điều này nói chung được khuyến khích và an toàn để làm.

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:

Mã nguồn [Chọn]
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à có thể đăng nhập bằng mật khẩu và quản trị mặc định của người dùng 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 quản trị của bạn thành một thứ gì đó an toàn hơn.

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


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.

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 rồi. Nếu không, hãy làm điều đó ngay bây giờ.
Sau đó, hãy 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.