NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
22/04/2023
Lượt xem

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

22/04/2023
17 phút đọc
Lượt xem

Đánh giá

5/5 - (86 bình chọn)

Matomo là một mã nguồn mở được viết bằng PHP, dùng để phân tích hoạt động của người dùng trên website, cho phép bạn theo dõi lượng truy cập trên website của mình và thu thập dữ liệu quan trọng để phân tích giúp bạn tăng hiệu quả trong công việc. Bài viết hôm nay sẽ hướng dẫn bạn cách cài đặt Matomo Web Analytics trên Ubuntu 20.04 một cách nhanh chóng, cùng theo dõi nhé.

Điều kiện để cài đặt Matomo Web Analytics trên Ubuntu 20.04

Để hoàn thành được hướng dẫn này, trước tiên bạn sẽ cần có:

  • Máy chủ Ubuntu 20.04, được cấu hình tường lửa UFW.
  • Dịch vụ Docker được cài đặt sẵn, cùng với tài khoản user non-root có quyền sudo (khuyến nghị).
  • Dịch vụ Docker Compose được cài đặt sẵn.

Để kích hoạt Secure Sockets Layer (viết tắt là SSL là một quy trình mã hóa dữ liệu khi truyền qua lại với máy chủ web) bạn sẽ cần một tên miền được trỏ vào địa chỉ IP công khai máy chủ. Đối với tên miền bạn có thể linh hoạt sử dụng theo ý muốn nhưng phải chú ý thay đổi các cấu hình theo tên miền của bạn phù hợp với hướng dẫn bên dưới.

Cài đặt Docker trên VPS là một gợi ý hoàn hảo cho những ai muốn triển khai các ứng dụng trên môi trường ảo hóa. Ngoài ra, nó còn có thể giúp bạn quản lý và triển khai các ứng dụng một cách hiệu quả hơn. Vietnix hiện đang cung cấp dịch vụ VPS tốc độ cao với mức giá phải chăng, giúp bạn chủ động cài đặt và quản lý ứng dụng. Liên hệ ngay với Vietnix để được tư vấn gói VPS phù hợp.

Sau khi thỏa các điều kiện trên, hãy bắt đầu các bước cấu hình theo hướng dẫn bên dưới.

Bước 1: Tải xuống Matomo và MariaDB với Docker Compose

Đầu tiên, bạn cần tạo tệp cấu hình Docker Compose, tệp cấu hình này sẽ khởi chạy các container cho ứng dụng Matomo và cơ sở dữ liệu MariaDB.

Tệp cấu hình của bạn sẽ được đặt trong thư mục matomo ,được chứa trong home directory của người dùng Ubuntu bạn đăng nhập. 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 theo ý muốn.

Đầu tiên, đảm bảo rằng bạn đang ở home directory bằng lệnh:

cd ~

Sau đó, tạo thư mục matomo và dùng lệnh cd để truy cập vào thư mục đó:

mkdir matomo cd matomo

Tạo một tệp YAML trống mới có tên docker-compose.yml:

nano docker-compose.yml

Khi chạy lệnh build docker-compose sẽ đọc qua tệp này, sau đó cài đặt thông qua các cấu hình trong tệp này vào một containners. Bạn cần viết tệp YAML của mình như sau:

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à container MariaDB và dịch vụ app chạy chính là ứng dụng Matomo. Cả hai dịch vụ đều tham chiếu đến một tập được đặt tên trong đó họ lưu trữ một số dữ liệu và dịch vụ ứng dụng cho phép thao tác với cổng 8080 trên giao diện loopback (127.0.0.1) hay localhost.

Lưu tệp và thoát trình soạn thảo văn bản để tiếp tục, đối với trình soạn thảo văn bản nano, nhấn tổ hợp phím Ctrl+O, sau đó nhấn phím ENTER để lưu, cuối cùng nhấn tổ hợp phím Ctrl+X để thoát.

Container MariaDB cần một số cấu hình được truyền 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ó các giá trị chính xác liên quan.

Bởi vì trên thực tế, tránh sử dụng mật khẩu hệ thống viết trực tiếp trong tệp docker-compose.yml này để đảm bảo tính bảo mật, đặc biệt nếu bạn lưu trữ trên Git hoặc các hệ thống kiểm soát mã nguồn khác thì khả năng bị lộ thông tin tài khoản và rủi ro với thông tin đó là rất lớn với hệ thống.

Thay vào đó, bạn sẽ đặt thông tin nhạy cảm như username, password, database vào tệp .env được đặt trong cùng một thư mục, tệp này sẽ không được truyền tải lên các hệ thống kiểm soát mã nguồn. Lệnh docker-compose sẽ tự động đọc tệp .env này khi chạy các container liên quan trong cùng thư mục. Tạo tệp .env mới với nano bằng câu lệnh:

nano .env

Bạn sẽ cần điền vào tên người dùng và mật khẩu, theo đó mật khẩu cho tài khoản MariaDB root superuser phải mạnh và độ khó cao:

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 công cụ OpenSSL có sẵn trên hầu hết mọi hệ điều hành. Lệnh sau đây 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:

openssl rand 30 | base64 -w 0 ; echo

Hãy nhớ lưu tệp .env trước khi thoát khỏi trình soạn thảo nhé.

Bây giờ sử dụng docker-compose để chạy lệnh sau:

sudo docker-compose up -d

Lệnh docker-compose up để khởi động các container (cùng với volumes và networks) được xác định trong tệp docker-compose.yml và tùy chọn -d cho phép containers đó được chạy ngầm (“daemonize”). Màn hình sẽ hiển thị một số thông tin ngắn gọn khi bắt đầu các containers như sau:

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

Khi hoàn tất, Matomo đã và đang hoạt động. Bạn có thể kiểm tra xem máy chủ web có đang hoạt động đúng cách không ở địa chỉ localhost:8080 hoặc bằng lệnh curl bên dưới:

curl --head http://localhost:8080

Câu lệnh này sẽ nhận được một phản hồi HTTP từ máy chủ:

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 với mã 200 OK có nghĩa là máy chủ Matomo đang hoạt động nhưng chỉ có sẵn trên localhost. Tiêu đề X-Matomo-Request-Id chỉ ra rằng máy chủ là Matomo và theo mặc định thì Matomo không phải là dịch vụ được cấu hình để nghe trên cổng 8080. Tiếp theo, mình sẽ hướng dẫn bạn sẽ thiết lập Nginx để kiểm soát truy cập cho Matomo.

Bước 2 – Cài đặt và 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à đánh dấu tệp tĩnh cho một quy trình hiệu quả hơn. Cài đặt Nginx và cấu hình như một reverse proxy cho Matomo, nghĩa là Nginx sẽ đảm nhận việc chuyền tải các yêu cầu từ người dùng của bạn tới Matomo và ngược lại. Sử dụng một dịch vụ non-containerlized là Nginx cũng sẽ giúp dễ dàng thêm chứng chỉ SSL Let’s Encrypt trong bước tiếp theo.

Đầu tiên, cập nhật hệ thống của bạn, sau đó cài đặt Nginx bằng apt:

sudo apt update sudo apt install nginx

Cho phép lưu lượng public truy cập và trao đổi với các cổng 80 443 (HTTP và HTTPS) thông qua tường lửa UFW với tên dịch vụ “Nginx Full”:

sudo ufw allow "Nginx Full"

Bạn nhận được một kết quả hiển thị như sau:

Output Rule added Rule added (v6)

Tiếp theo, tạo một tệp cấu hình Nginx mới trong thư mục/etc/nginx/site-available và đặt tên tệp là matomo.conf nhưng bạn có thể sử dụng một tên khác tùy ý:

sudo nano /etc/nginx/sites-available/matomo.conf

Sao chép các cấu hình bên dưới vào tệp cấu hình mới, thay thế your_domain_here bằng tên miền mà bạn đã cấu hình để trỏ đến máy chủ Matomo.

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 HTTP đã hoàn tất, sử dụng Certbot sẽ đảm nhiệm việc cấu hình SSL. Các 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, tiêu đề proxy quan trọng cùng với domain http://localhost:8080 là Matomo Container đã khởi động ở bước trước.

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

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 không bị sai:

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, khởi động lại dịch vụ nginx để nhận áp dụng cấu hình mới:

sudo systemctl reload nginx

Lúc này, trang web Matomo của bạn hiện có thể truy cập thông qua HTTP. Truy cập vào tên miền http://your_domain_here và bỏ qua cảnh báo bảo mật. Chắc chắn rằng bạn đã thay bằng tên miền do bạn cấu hình nhé. Khi đó bạn sẽ truy cập vào trang chủ Matomo hiển thị như sau:

Trang chủ Matomo
Trang chủ Matomo

Sau khi bạn đã thiết lập và truy cập trang web thành công qua HTTP, bước tiếp theo sẽ thực hiện bảo mật kết nối với chứng chỉ Certbot và Let’s Encrypt. Bước này nên được thực hiện trước khi thiết lập quy trình 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ờ 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 Matomo sẽ chỉ mất hai lệnh, rất nhanh đúng không nào.

Đầu tiên, cài đặt certbot và công cụ hỗ trợ Nginx bằng câu lệnh như sau:

sudo apt install certbot python3-certbot-nginx

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

sudo certbot --nginx -d your_domain_here

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

Sau đó, Let’s Encrypt sẽ hỏi bạn rằng có muốn chuyển hướng tất cả lưu lượng HTTP sang HTTPS hay không. Tùy chọn này sẽ phụ thuộc vào nhu cầu của bạn, nhưng thông thường câu trả lời có vì sẽ đảm bảo các khuyến nghị an toàn và có lợi cho trang web của bạ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ỉ:

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 và trang web sẽ tự động chuyển sang HTTPS khi bạn chọn tùy chọn chuyển hướng.

Trang web của bạn hiện đã thiết lập kết nối an toàn và an toàn khi tiếp tục với các bước thiết lập trên web.

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

Quay lại trình duyệt web, bây sẽ truy cập Matomo thông qua kết nối an toàn https:// . Bây giờ bạn nhập tên người dùng và mật khẩu để hoàn thành quá trình cài đặt một cách an toàn.

Nhấp Next, bạn sẽ được đưa đến bước kiểm tra hệ thống:

Bước kiểm tra hệ thống trên Matomo
Bước kiểm tra hệ thống trên Matomo

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

Bây giờ bạn sẽ đến trang thiết lập cơ sở dữ liệu:

Trang thiết lập cơ sở dữ liệu Matomo
Trang thiết lập cơ sở dữ liệu Matomo

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. Nhập vào mariadb_usermariadb_password mà bạn đã chọn trong bước 1. Bạn có thể sao chép chúng từ tệp .env nếu cần.

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

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

Hai trường còn lại bạn có thể để mặc định.

Nhấn Next, 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ấn vào Next một lần nữa. Bạn sẽ cần thiết lập người dùng quản trị viên và cuối cùng bạn sẽ thiết lập thông tin về trang web đầu tiên bạn muốn thu thập thông tin và phân tích.

Cuối cùng, bạn sẽ đến giao diện trang Congratulation và gần như đã hoàn thành các bước. Cuộn xuống phía dưới và nhấp vào nút Next to Matomo và bạn sẽ được đưa đến trang chủ như sau:

Trang cảnh báo của Matomo
Trang cảnh báo của Matomo

Sẽ có một cảnh báo lớn ở đầu trang. Bạn cần một cập nhật nhỏ giúp cho tệp cấu hình của Matomo để loại bỏ cảnh báo này.

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

sudo nano matomo/config/config.ini.php

Phía gần trên cùng, bạn sẽ thấy một đoạn có tiêu đề [General]. Thực hiện thêm 3 dòng cuối cùng trong đoạn dưới đây, lúc này tệp sẽ có dạng như sau:

[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 việc sử dụng cổng 8080 là an toàn và giả định rằng trang web luôn được truy cập qua một kết nối an toàn.

Lưu và đóng tệp cấu hình, sau đó quay lại trình duyệt của bạn và tải lại trang. Lỗi sẽ biến mất và chỉ còn lời nhắc đăng nhập:

Trang đăng nhập
Trang đăng nhập

Đăng nhập bằng tài khoản quản trị viên đã tạo trong quá trình thiết lập và bạn sẽ được đưa đến trang điều khiển:

Đăng nhập bằng tài khoản quản trị viên và bạn sẽ được đưa đến trang điều khiển
Đăng nhập bằng tài khoản quản trị viên và bạn sẽ được đưa đến trang điều khiển

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

Lời Kết

Với bài hướng dẫn cài đặt Matomo Web Analytics trên Ubuntu 20.04, bạn đã dễ dàng cấu hình và chạy ứng dụng phân tích Matamo với cơ sở dữ liệu MariaDB bằng Docker Compose, sau đó thiết lập Nginx làm Reverse Proxy thiết lập chứng chỉ SSL của Let’s Encrypt. Bây giờ, bạn có thể sẵn sàng để thiết lập thêm các tập lệnh theo dõi phân tích Matomo. Nếu còn gì thắc mắc bạn có thể để lại bình luận bên dưới để được Vietnix hỗ trợ.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG