Việc thống kê và quản lí số liệu web luôn được xem là một vấn đề quan trọng. Tuy nhiên, đa phần các ứng dụng phân tích cũ đều khó hiểu, tốn thời gian và tệ nhất có khả năng làm lộ thông tin của người dùng website. Hiểu được điều ấy, Fathom Analytics đã ra đời để cung cấp một giải pháp cho tình trạng này. Để tìm hiểu cách cài đặt Fathom Analytics trên Ubuntu 20.04, mời các bạn cùng Vietnix đến với bài hướng dẫn sau đây.
Fathom Analytics là gì?
Fathom Analytics là một phần mềm hỗ trợ phân tích số liệu web mã nguồn mở self-host (tự host) đơn giản và bảo mật. Vì lập trình bằng ngôn ngữ Golang, Fathom được triển khai dưới dạng một file nhị phân (binary file) giúp cho việc cài đặt ứng dụng trở nên dễ dàng hơn.
Trong bài viết này, Vietnix sẽ hướng dẫn các bạn cách cài đặt và cấu hình Fathom Analytics với Nginx làm một reverse proxy (proxy trung gian), đồng thời sử dụng Certbot để bảo mật HTTPS cho server với các chứng chỉ SSL từ Let’s Encrypt.
Chuẩn bị để cài đặt Fathom Analytics trên Ubuntu 20.04
Trước khi bắt đầu, các bạn cần đáp ứng các yêu cầu sau:
- Đăng nhập server Ubuntu 20.04 bằng một tài khoản non-root với quyền
sudo
và bật tường lửa với UFW (Hướng dẫn chi tiết về cách thiết lập tường lửa bằng UFW trên Ubuntu 20.04 tại đây). - Đăng ký tên miền cho địa chỉ IP của server, ví dụ:
vietnixtest.com
hoặcfathom.vietnixtest.com
.
Sau khi hoàn tất, các bạn tiến hành cài đặt ứng dụng.
Bước 1: Cài đặt Fathom
Để cài đặt ứng dụng, bạn cần tải về phiên bản mới nhất của Fathom và giải nén các file thực thi vào đường dẫn /usr/local/bin
.
Các bạn đến một thư mục được phép ghi, ở đây /tmp
là một lựa chọn tốt.
$ cd /tmp
Mở trình duyệt web và truy cập trang GitHub: https://github.com/usefathom/fathom/releases/tag/v1.3.1 để tìm và tải về phiên bản mới nhất của Fathom. Trong bài hướng dẫn này, Vietnix sẽ sử dụng file fathom_1.2.1_linux_amd64.tar.gz
. Các bạn có thể tìm và tải file tương tự với phiên bản mới hơn.
Chuột phải vào file và sao chép đường dẫn bằng cách chọn Copy Link hoặc tùy chọn tương ứng của trình duyệt bạn sử dụng.
Các bạn gọi lệnh curl
dưới đây để tải file.
$ curl -L -O https://github.com/usefathom/fathom/releases/download/v1.2.1/fathom_1.2.1_linux_amd64.tar.gz
Sau khi tải về, fathom_1.2.1_linux_amd64.tar.gz
được lưu trong thư mục /tmp
. Các bạn gọi lệnh tar
để giải nén các file thực thi của fathom
vào đường dẫn /usr/local/bin
.
$ sudo tar -C /usr/local/bin/ -xzf fathom*.tar.gz fathom
Vì /usr/local/bin
là một thư mục được bảo vệ, các bạn gọi lệnh sudo
để ghi file với đặc quyền của superuser (còn gọi là root user).
Sử dụng sudo
và chmod
để cấp quyền thực thi cho binary fathom
.
$ sudo chmod +x /usr/local/bin/fathom
Để kiểm tra, bạn hãy gọi lệnh fathom --version
.
$ fathom --version
Output
Fathom version 1.2.1, commit 8f7c6d2e45ebb28651208e2a7320e29948ecdb2c, built at 2018-11-30T09:21:37Z
Lệnh trên sẽ hiển thị phiên bản hiện tại và một số thông tin khác của Fathom. Đến đây, server đã tải và cài đặt thành công ứng dụng. Tiếp theo, Vietnix sẽ hướng dẫn các bạn cách cấu hình và chạy thủ công Fathom lần đầu tiên.
Bước 2: Cấu hình và chạy Fathom
Trước khi cấu hình, nhằm tách biệt và bảo mật server, các bạn cần tạo một user fathom mới trên hệ thống để chạy Fathom.
Để thêm một người dùng có tên fathom, các bạn gọi lệnh adduser
dưới đây.
$ sudo adduser --system --group --home /opt/fathom fathom
Cờ --system
sẽ khiến hệ thống sẽ tạo mới một người dùng đặc biệt. Người dùng này không có mật khẩu và không thể đăng nhập như một người dùng thông thường. Cờ --group
và --home
trong lời gọi lệnh sẽ tạo group fathom và thư mục home /opt/fathom
.
Các bạn đến thư mục /opt/fathom
vừa tạo.
$ cd /opt/fathom
Các bạn gọi lệnh sau với quyền sudo
để kết nối bash shell ứng dụng.
$ sudo -u fathom bash
Prompt shell sẽ được chuyển thành fathom@host:~$
. Từ lúc này trở đi, shell sẽ thực thi tất cả các lệnh với tư cách một người dùng fathom tới khi bạn gõ lệnh exit
.
Đến đây, Fathom đã sẵn sàng để thiết lập cấu hình. Các bạn tạo một một chuỗi ký tự ngẫu nhiên để đăng ký và bảo mật Fathom bằng lệnh openssl
bên dưới.
fathom@host:~$ openssl rand --base64 32
Output
iKo/rYHFa2hDINjgCcIeeCe9pNglQreQrzrs+qK5tYg=
Sau khi lưu lại chuỗi vừa tạo, các bạn thêm mới một file .env
.
fathom@host:~$ nano /opt/fathom/.env
Lệnh trên sẽ mở một file trắng trên nano
(có thể sử dụng trình biên dịch tùy thích).
Các bạn thêm những thiết lập dưới đây vào file, đừng quên thay your_random_string_here
bằng chuỗi ký tự ngẫu nhiên vừa tạo.
FATHOM_SERVER_ADDR="127.0.0.1:8080"
FATHOM_DATABASE_DRIVER="sqlite3"
FATHOM_DATABASE_NAME="fathom.db"
FATHOM_SECRET="your_random_string_here"
Với những thiết lập này, bạn cho phép server ứng dụng lắng nghe cổng 8080
của localhost (127.0.0.1
), đồng thời chỉ định file fathom.db
làm cơ sở dữ liệu SQLite.
Đóng và lưu file sau khi chỉnh sửa. Nếu sử dụng nano
, bạn có thể nhấn tổ hợp phím CTRL+O
và ENTER
để lưu, sau đó thoát trình biên dịch bằng tổ hợp phím CTRL+X
.
Sau khi cấu hình xong cơ sở dữ liệu, các bạn thêm một người dùng mới cho Fathom bằng lệnh:
fathom@host:~$ fathom user add --email="your_email" --password="your_password"
Vì là lần đầu tiên, các bạn nên chú ý đến quá trình chuyển đổi dữ liệu (database migration) hiển thị trong output.
Output
INFO[0000] Fathom version 1.2.1, commit 8f7c6d2e45ebb28651208e2a7320e29948ecdb2c, built at 2018-11-30T09:21:37Z
INFO[0000] Configuration file: /opt/fathom/.env
INFO[0000] Connected to sqlite3 database: /opt/fathom/fathom.db
INFO[0000] Applied 26 database migrations!
INFO[0000] Created user sammy@vietnixtest.com
Đến đây, file cơ sở dữ liệu fathom.db
đã được tạo thành công và thêm một người dùng vào server ứng dụng.
Để kiểm tra, các bạn khởi động server.
fathom@host:~$ fathom server
Output
INFO[0000] Fathom version 1.2.1, commit 8f7c6d2e45ebb28651208e2a7320e29948ecdb2c, built at 2018-11-30T09:21:37Z
INFO[0000] Configuration file: /opt/fathom/.env
INFO[0000] Connected to sqlite3 database: /opt/fathom/fathom.db
Trong cửa số terminal kết nối với server, các bạn gọi lệnh curl
sau để lấy mã nguồn trang chủ của Fathom.
$ curl localhost:8080
Output
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Fathom - simple website analytics</title>
<link href="assets/css/styles.css?t=1543569696966" rel="stylesheet">
. . .
Nếu output trả về một đoạn mã html như trên thì server đã hoạt động và có thể phản hồi các request ở localhost.
Hãy quay lại cửa sổ terminal ban đầu và thoát tiến trình fathom server
bằng tổ hợp phím CTRL+C
.
Các bạn gọi lệnh exit
để thoát bash shell ứng dụng.
fathom@host:~$ exit
Shell prompt sẽ quay lại trạng thái bình thường.
Đến đây, Fathom đã được cấu hình và chạy thành công bằng các lệnh thủ công. Ở bước tiếp theo, Vietnix sẽ hướng dẫn các bạn thiết lập cho Fathom chạy tự động dưới dạng một Systemd service.
Bước 3: Cấu hình service Systemd cho Fathom
Để có thể gọi lệnh fathom serve
mọi lúc, kể cả khi không đăng nhập vào server, các bạn cần cấu hình cho Fathom làm một service của Systemd. Systemd là một công cụ quản lí service, có nhiệm vụ xử lí các thao tác như khởi động, dừng hoặc tái khởi động service trên Ubuntu cũng như các bản phân phối khác của Linux.
Tạo file fathom.service
và bổ sung các thiết lập cần thiết để service hoạt động ổn định.
$ sudo nano /etc/systemd/system/fathom.service
Các bạn thêm những dòng thiết lập sau vào file.
[Unit]
Description=Fathom Analytics server
Requires=network.target
After=network.target
[Service]
Type=simple
User=fathom
Group=fathom
Restart=always
RestartSec=3
WorkingDirectory=/opt/fathom
ExecStart=/usr/local/bin/fathom server
[Install]
WantedBy=multi-user.target
Ở đây, After=network.target
được dùng để directive Systemd chạy service sau khi thành công kết nối mạng. Service sẽ được chạy với quyền của người dùng và group fathom. Restart=always
directive Systemd luôn tái khởi động service trong trường hợp tiến trình bị ngắt. Ngoài ra, một số cấu hình khác cũng được thiết lập trong file như thư mục nguồn /opt/fathom
và lệnh khởi động server ExecStart=/usr/local/bin/fathom server
Các bạn đóng và lưu file, đồng thời cập nhật lại cấu hình.
$ sudo systemctl daemon-reload
Kế đến là kích hoạt service.
$ sudo systemctl enable fathom.service
Các bạn cần kích hoạt thủ công service trong lần đầu tiên. Ở những lần tiếp theo, Systemd sẽ tự động chạy service khi hệ thống được khởi động.
$ sudo systemctl start fathom
Lưu ý trong lệnh trên, đuôi .service
của tên service có thể được bỏ qua. Cuối cùng các bạn kiểm tra để chắc chắn service đã hoạt động.
$ sudo systemctl status fathom
Output
● fathom.service - Fathom Analytics server
Loaded: loaded (/etc/systemd/system/fathom.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-11-03 15:32:45 UTC; 13s ago
Main PID: 3748 (fathom)
Tasks: 5 (limit: 1136)
Memory: 10.3M
CGroup: /system.slice/fathom.service
└─3748 /usr/local/bin/fathom server
Nov 03 15:32:45 ubuntu-fathom systemd[1]: Started Fathom Analytics server.
Nov 03 15:32:46 ubuntu-fathom fathom[3748]: time="2021-11-03T15:32:46Z" level=info msg="Fathom version 1.2.1, commit 8f>
Nov 03 15:32:46 ubuntu-fathom fathom[3748]: time="2021-11-03T15:32:46Z" level=info msg="Configuration file: /opt/fathom>
Nov 03 15:32:46 ubuntu-fathom fathom[3748]: time="2021-11-03T15:32:46Z" level=info msg="Connected to sqlite3 database: >
Như vậy, service đã được tái khởi động thành công trên cổng 8080
của localhost. Bước tiếp theo, các bạn sẽ cấu hình và sử dụng Nginx làm một reverse proxy để kết nối Fathom với ngoại mạng.
Bước 4: Cài đặt và cấu hình Nginx
Khi đặt một web server như Nginx trước server ứng dụng Fathom, việc lưu bộ nhớ đệm, nén cũng như phục vụ tài nguyên tĩnh sẽ được đảm nhiệm bởi một tiến trình khác hiệu quả hơn, qua đó tăng hiệu suất cho server ứng dụng. Trong bài viết này, Vietnix sẽ sử dụng Nginx làm một reverse proxy để xử lí trung gian các request từ client trước khi điều hướng đến server ứng dụng Fathom.
Trước tiên, các bạn cập nhật các package có sẵn lên phiên bản mới nhất và gọi lệnh apt
để cài đặt Nginx.
$ sudo apt update
$ sudo apt install nginx
Sử dụng profile UFW “Nginx Full” để mở cổng 80
và 443
(HTTP và HTTPS).
$ sudo ufw allow "Nginx Full"
Output
Rule added
Rule added (v6)
Tiếp theo, các bạn tạo một file cấu hình cho Nginx, đừng quên đổi your_domain
thành tên miền đã thiết lập cho Fathom server.
$ sudo nano /etc/nginx/sites-available/fathom.conf
Tạm thời, các thiết lập này chỉ áp dụng cho HTTP. Việc cấu hình SSL sẽ được Certbot đảm nhiệm ở bước kế tiếp. Phần còn lại của file cấu hình là các logging location và bổ sung một số header chuyển tiếp quan trọng (proxy forwarding header) trước khi điều hướng toàn bộ request đến đường dẫn http://localhost:8080
của server Fathom.
Sau khi đóng và lưu file, các bạn cho phép cấu hình hoạt động bằng cách tạo một liên kết trong thư mục /etc/nginx/sites-enabled
.
$ sudo ln -s /etc/nginx/sites-available/fathom.conf /etc/nginx/sites-enabled/
Để kiểm tra lỗi cú pháp trong file, các bạn gọi lệnh nginx -t
.
$ 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
Tái khởi động service để áp dụng cấu hình.
$ sudo systemctl reload nginx
Giờ đây, các bạn đã có thể truy cập vào trang Fathom bên dưới với đường dẫn http://your_domain_here
.
Như vậy, trang Fathom của bạn đã chạy thành công trên HTTP. Tiếp theo Vietnix sẽ sử dụng Certbot để yêu cầu các chứng chỉ SSL của Let’s Encrypt nhằm bảo mật HTTPS cho server.
Bước 5: Cài đặt Certbot và cấu hình các chứng chỉ SSL
Nhờ Certbot và Let’s Encrypt, việc mã hóa SSL cho server ứng dụng Fathom có thể thực hiện bằng 2 lệnh dưới đây.
Đầu tiên, các bạn cài đặt Certbot và plugin Nginx.
$ sudo apt install certbot python3-certbot-nginx
Tiếp theo, các bạn chạy service certbot
trong mode --nginx
, đồng thời chỉ định tên miền đã được cấu hình trong Nginx server_name
.
$ sudo certbot --nginx -d your_domain_here
Một yêu cầu nhập địa chỉ email cũng như chấp thuận các điều khoản dịch vụ của Let’s Encrypt sẽ được hiện thị.
Kế đến là yêu cầu đồng ý điều hướng toàn bộ lưu lượng HTTP sang HTTPS. Tuy không bắt buộc, tùy chọn này được đa phần cộng đồng khuyên dùng vì có độ an toàn cao hơn.
Sau khi hoàn tất các thiết lập, Let’s Encrypt sẽ xác nhận request và Certbot sẽ tải xuống chứng chỉ được yêu cầu.
Output
Congratulations! You have successfully enabled https://Fathom.vietnixtest.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=Fathom.vietnixtest.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/Fathom.vietnixtest.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/Fathom.vietnixtest.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ái khởi động Nginx để áp dụng các chứng chỉ cũng như cấu hình mới. Tải lại trang và bạn sẽ được điều hướng sang HTTPS nếu đã đồng ý tùy chọn bên trên.
Đến đây, website đã được bảo mật và có thể đăng nhập an toàn với các thông tin người dùng được thiết lập ở Bước 2.
Khi đăng nhập thành công, một biểu mẫu sẽ xuất hiện để các bạn thêm website đầu tiên cho Fathom theo dõi.
Sau khi thiết lập xong, bạn sẽ được chuyển đến trang dashboard (hiện tại không có nội dung) quản lý các website của bạn.
Đến đây, server đã thành công cài đặt và bảo mật ứng dụng Fathom Analytics.
Ngoài ra, nếu bạn đang có nhu cầu tìm kiếm một nhà cung cấp hositng, VPS uy tín và chất lượng để phát triển website thì có thể tham khảo Vietnix. Hiện tại Vietnix đang là nhà cung cấp hosting, VPS hàng đầu Vietnix với đa dạng các tính năng, cấu hình hiện đại giúp đảm bảo hiệu suất cao và độ ổn định tốt cho website.
Khi sử dụng dịch vụ tại đây bạn còn được bảo vệ bởi hệ thống chống tấn công DDoS chuyên nghiệp do chính Vietnix độc quyền phát triển, giúp nâng cao tính ổn định và bảo mật cho website.
Hiện tại, Vietnix đang có chương trình tặng bộ theme và plugin có giá trị lên đến 50.000.000VND giúp xây dựng website chuyên nghiệp, tối ưu cho SEO như: Rank Math SEO Pro, WP Rocket, Elementor Pro,… cho khách hàng đăng ký sử dụng dịch vụ.
Vietnix với hơn 11 năm hoạt động đã đồng hành với hơn 50.000 khách hàng cá nhân và doanh nghiệp. Đến năm 2022 Vietnix vinh dự được nhận giải Thương hiệu Việt Nam xuất sắc. Đồng thời, với tỷ lệ 97% khách hàng sau khi sử dụng dịch vụ tại Vietnix đã giới thiệu đến bạn bè, đồng nghiệp cũng là một minh chứng cho chất lượng dịch vụ luôn đáp ứng được mọi nhu cầu của khách hàng.
Liên hệ để được tư vấn chi tiết:
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
Lời kết
Cảm ơn các bạn đã theo dõi bài viết. Vietnix hy vọng các bạn đã nắm được cách cài đặt Fathom Analytics với Nginx là reverse proxy và bảo mật ứng dụng bằng mã hóa SSL. Nếu có bất cứ thắc mắc hay phản hồi nào, các bạn có thể bình luận ngay bên dưới để Vietnix có thể trả lời sớm nhất có thể. Hẹn gặp lại các bạn trong những bài viết tiếp theo.