Mục lục

Không có mục lục
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

Cách cài đặt Matomo Web Analytics trên Ubuntu 20.04

Ngày đăng: 17 tháng 10 năm 2022

Ubuntu

Giới thiệu

Matomo là một ứng dụng phân tích web mã nguồn mở, tự lưu trữ được viết bằng PHP.

Trong hướng dẫn này, bạn sẽ cài đặt Matomo và cơ sở dữ liệu MariaDB bằng Docker Compose, sau đó cài đặt Nginx để hoạt động như một proxy ngược cho ứng dụng Matomo. 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ừ Cơ quan cấp chứng chỉ mã hóa Let’s Encrypt.

Điều kiện

Để hoàn thành hướng dẫn này, trước tiên bạn cần những điều 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 để 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ước 1 của 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 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. Làm 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 ý: Bạn có thể bỏ qua các bước điều kiện này nếu bạn đang sử dụng One-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 hình ảnh Docker 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. Bởi vì bạn sẽ sử dụng root user, bạn có thể bỏ qua các phần sudo của tất cả các lệnh tiếp theo, nhưng không cần thiết.

Cuối cùng, để bậ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. Ví dụ, đây phải là một cái gì đó giống như example.com hoặc matomo.example.com. Nếu bạn đang sử dụng CloudFly, vui lòng xem DNS Quickstart của chúng tôi để biết thông tin về cách tạo tài nguyên miền trong control panel của chúng tôi.

Khi bạn đã đáp ứng tất cả các điều kiện, 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 Matomo.

Bước 1: Chạy Matomo và MariaDB với Docker Compose

Bước đầu tiên của bạn sẽ là tạo cấu hình Docker Compose sẽ khởi chạy các vùng chứa cho cả ứng dụng Matomo và cơ sở dữ liệu MariaDB.

Hướng dẫn này sẽ đặt cấu hình của bạn bên trong một thư mục matomo trong thư mục chính của bạn. Bạn cũng có thể chọn làm việc trong thư mục /opt/matomo hoặc một số thư mục khác mà bạn chọn.

Trước tiên, hãy đảm bảo rằng bạn đang ở trong thư mục chính của mình:

  1. cd ~

Sau đó, tạo thư mục matomocd vào đó:

  1. mkdir matomo
  2. cd matomo

Bây giờ, hãy mở một tệp YAML trống mới có tên là docker-compose.yml:

  1. nano docker-compose.yml

Đây là tệp cấu hình mà phần mềm docker-compose sẽ đọc khi đưa các vùng chứa của bạn lên. Dán phần sau vào tệp:

docker-compose.yml
version: "3"

services:
  db:
    image: mariadb
    command: --max-allowed-packet=64MB
    restart: always
    environment:
      - MARIADB_DATABASE=matomo
      - MARIADB_USER
      - MARIADB_PASSWORD
      - MARIADB_ROOT_PASSWORD
    volumes:
      - ./db:/var/lib/mysql

  app:
    image: matomo
    restart: always
    volumes:
      - ./matomo:/var/www/html
    ports:
      - 127.0.0.1:8080:80

Tệp xác định hai services, một dịch vụ db là vùng chứa MariaDB và một dịch vụ app chạy phần mềm Matomo. Cả hai dịch vụ cũng tham chiếu đến một ổ đĩa được đặt tên nơi chúng lưu trữ một số dữ liệu, và dịch vụ app cũng mở ra cổng 8080 trên giao diện loopback (127.0.0.1) mà chúng ta sẽ kết nối qua localhost.

Lưu tệp và thoát khỏi trình soạn thảo văn bản của bạn để tiếp tục. Trong nano, nhấn CTRL + O rồi ENTER để lưu, sau đó CTRL + X để thoát.

Vùng chứa MariaDB cần một số cấu hình được chuyển tới nó thông qua các biến môi trường để hoạt động. Tệp docker-compose.yml liệt kê các biến môi trường này, nhưng không phải tất cả chúng đều có giá trị liên quan. Đó là bởi vì cách tốt nhất là giữ mật khẩu khỏi tệp docker-compose.yml của bạn, đặc biệt nếu bạn sẽ gửi mật khẩu đó vào hệ thống lưu trữ Git hoặc hệ thống kiểm soát nguồn khác.

Thay vào đó, chúng ta sẽ đưa thông tin cần thiết vào tệp .env trong cùng một thư mục, lệnh này sẽ tự động tải lệnh docker-compose khi chúng tôi khởi động vùng chứa của mình.

Mở tệp .env mới bằng nano:

  1. nano .env

Bạn sẽ cần điền user name và password cũng như mật khẩu mạnh cho tài khoản MariaDB root superuser:

.env
MARIADB_USER=matomo
MARIADB_PASSWORD=a_strong_password_for_user
MARIADB_ROOT_PASSWORD=a_strong_password_for_root

Một cách để tạo mật khẩu mạnh là sử dụng lệnh openssl, lệnh này sẽ có sẵn trên hầu hết mọi hệ điều hành. Lệnh sau sẽ in ra một hàm băm 30 ký tự ngẫu nhiên mà bạn có thể sử dụng làm mật khẩu:

  1. openssl rand 30 | base64 -w 0 ; echo

Khi bạn điền xong thông tin vào tệp .env của mình, hãy lưu nó và thoát khỏi trình soạn thảo văn bản của bạn.

Bây giờ, bạn đã sẵn sàng đưa hai vùng chứa lên với docker-compose:

  1. sudo docker-compose up -d

Lệnh con up yêu cầu docker-compose khởi động các vùng chứa (và các volume và mạng) được xác định trong tệp docker-compose.yml, và cờ -d yêu cầu nó làm như vậy trong nền (“daemonize”), vì vậy lệnh đó không tiếp quản thiết bị đầu cuối của bạn. docker-compose sẽ in một số đầu ra ngắn gọn khi nó khởi động các vùng chứa:

Output
Creating matomo_db_1 ... done Creating matomo_app_1 ... done

Khi điều đó xong, Matomo sẽ chạy. Bạn có thể kiểm tra xem một máy chủ web đang chạy tại localhost:8080 bằng cách tìm nạp trang chủ bằng lệnh curl:

  1. curl --head http://localhost:8080

Điều này sẽ chỉ in ra các tiêu đề HTTP từ phản hồi:

Output
HTTP/1.1 200 OK Date: Tue, 25 Jan 2022 19:56:16 GMT Server: Apache/2.4.51 (Debian) X-Powered-By: PHP/8.0.14 X-Matomo-Request-Id: 1e953 Cache-Control: no-store, must-revalidate Referrer-Policy: same-origin Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' 'unsafe-inline' 'unsafe-eval' data:; Set-Cookie: MATOMO_SESSID=dde7d477b0822e166ed90448964ec1e7; path=/; HttpOnly; SameSite=Lax Content-Type: text/html; charset=utf-8

Phản hồi 200 OK có nghĩa là máy chủ Matomo đang hoạt động, nhưng nó chỉ khả dụng trên localhost. Tiêu đề X-Matomo-Request-Id được đánh dấu chỉ ra rằng máy chủ là Matomo chứ không phải thứ gì khác có thể được thiết lập cấu hình để nghe trên cổng 8080. Tiếp theo, chúng ta sẽ thiết lập Nginx để ủy quyền lưu lượng truy cập công khai đến vùng chứa Matomo.

Bước 2: Cài đặt và thiết lập cấu hình Nginx

Đặt một máy chủ web như Nginx trước máy chủ Matomo 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 tĩnh thành 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ó để đảo ngược các yêu cầu proxy tới Matomo, có nghĩa là nó sẽ xử lý việc chuyển các yêu cầu từ user của bạn tới Matomo và ngược lại. Sử dụng Nginx không chứa trong bộ chứa cũng sẽ giúp bạn dễ dàng thêm chứng chỉ SSL của Let’s Encrypt trong bước tiếp theo.

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 là matomo.conf nhưng bạn có thể sử dụng một tên khác:

  1. sudo nano /etc/nginx/sites-available/matomo.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 miền mà bạn đã thiết lập cấu hình để trỏ đến máy chủ Matomo của mình. Ví dụ: đây phải là một cái gì đó giống như matomo.example.com:

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

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

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

Cấu hình này hiện chỉ dành cho HTTP, chúng ta sẽ để Certbot đảm nhận 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, cũng như một số tiêu đề proxy quan trọng, cùng với http://localhost:8080, vùng chứa Matomo mà chúng ta đã khởi động ở bước trước.

Lưu và đóng tệp, sau đó bậ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/matomo.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 Matomo của bạn bây giờ sẽ có sẵn trên HTTP thuần túy. Tải http://your_domain_here (bạn có thể phải nhấp qua một cảnh báo bảo mật) và nó sẽ giống như sau:

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 đảm bảo kết nối bằng các chứng chỉ Certbot và Let’s Encrypt. Bạn nên thực hiện việc này trước khi thực hiện quy trình thiết lập dựa trên web của Matomo.

Bước 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 Matomo 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, chạy certbot ở chế độ --nginx và chỉ định cùng một miền 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 đ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 thường được khuyến khích 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://matomo.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=matomo.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/matomo.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/matomo.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ể an toàn khi tiếp tục với các bước thiết lập dựa trên web.

Bước 4: Thiết lập Matomo

Quay lại trình duyệt web của bạn, bây giờ bạn sẽ có trang Matomo’s Welcome! mở qua kết nối https:// an toàn. Bây giờ bạn có thể nhập usernames và passwords một cách an toàn để hoàn tất quá trình cài đặt.

Nhấp vào nút Next. Bạn sẽ được đưa đến bước System Check:

description image

Đây là bản tóm tắt về hệ thống mà Matomo đang chạy và mọi thứ phải có dấu kiểm màu xanh lục cho biết không có vấn đề gì. Cuộn xuống dưới cùng và nhấp vào nút Next.

Bây giờ bạn sẽ ở trang Database Setup:

description image

Thông tin bạn điền vào trang này sẽ cho ứng dụng Matomo biết cách kết nối với cơ sở dữ liệu MariaDB. Bạn sẽ cần MARIADB_USERMARIADB_PASSWORD mà bạn đã chọn ở Bước 1. Bạn có thể sao chép chúng ra khỏi tệp .env của mình nếu cần.

Điền vào bốn trường đầu tiên:

  • Database Server: db
  • Login: username bạn đặt trong biến môi trường MARIADB_USER
  • Password: mật khẩu bạn đặt trong biến môi trường MARIADB_PASSWORD
  • Database Name: matomo

Các giá trị mặc định là tốt cho hai trường còn lại.

Nhấp vào Next một lần nữa. Bạn sẽ nhận được xác nhận rằng cơ sở dữ liệu đã được thiết lập chính xác. Nhấp vào Next một lần nữa. Sau đó, bạn sẽ cần thiết lập người dùng quản trị (admin user) và cuối cùng bạn sẽ thiết lập thông tin về trang web đầu tiên mà bạn muốn thu thập số liệu phân tích.

Sau tất cả những điều đó, bạn sẽ kết thúc ở bước 8, trang Congratulations. Bạn gần như đã hoàn thành. Cuộn xuống dưới cùng và nhấp vào nút Continue to Matomo và bạn sẽ được đưa đến trang chủ:

description image

Sẽ có một cảnh báo lớn ở đầu trang. Có một bản cập nhật nhỏ mà bạn cần thực hiện đối với tệp cấu hình của Matomo để hoàn tất quá trình này.

Quay lại dòng lệnh, mở tệp cấu hình bằng trình soạn thảo văn bản:

  1. sudo nano matomo/config/config.ini.php

Gần trên cùng, bạn sẽ có phần [General]. Hãy thêm ba dòng cuối cùng, được đánh dấu bên dưới, vào cuối phần đó:

config.ini.php
[General]
proxy_client_headers[] = "HTTP_X_FORWARDED_FOR"
proxy_host_headers[] = "HTTP_X_FORWARDED_HOST"
salt = "e0a81d6e54d6d2200efd0f0ef6ef8563"
trusted_hosts[] = "localhost"
trusted_hosts[] = "example.com"
trusted_hosts[] = "localhost:8080"
assume_secure_protocol = 1
force_ssl = 1

Các tùy chọn này cho Matomo biết rằng sử dụng cổng 8080 là an toàn và giả định rằng nó luôn được truy cập qua kết nối an toàn.

Lưu và đóng tệp cấu hình, sau đó chuyển về trình duyệt của bạn và tải lại trang. Lỗi sẽ biến mất và bạn sẽ được hiển thị với lời nhắc đăng nhập:

description image

Đăng nhập bằng tài khoản quản trị bạn đã tạo trong khi thiết lập và bạn sẽ được đưa đến trang tổng quan:

description image

Bởi vì bạn có thể chưa thiết lập mã theo dõi của mình, trang tổng quan sẽ cho biết rằng không có dữ liệu nào được ghi lại. Làm theo hướng dẫn để hoàn tất thiết lập mã JavaScript trên trang web của bạn để bắt đầu nhận dữ liệu phân tích.

Kết luận

Trong hướng dẫn này, bạn đã khởi chạy ứng dụng phân tích Matamo và cơ sở dữ liệu MariaDB 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 của Let’s Encrypt.

Bây giờ, bạn đã sẵn sàng thiết lập trang web của mình và thêm tập lệnh theo dõi phân tích Matomo. Để biết thêm thông tin về cách vận hành phần mềm Matomo, vui lòng xem tài liệu chính thức của Matomo.

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