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

Ngày đăng: November 18, 2022

Ubuntu

Giới thiệu

Fathom Analytics là một ứng dụng phân tích trang web mã nguồn mở, tự lưu trữ, tập trung vào tính đơn giản và quyền riêng tư. Nó được viết bằng Go và vận chuyển dưới dạng một tệp nhị phân duy nhất, giúp việc cài đặt tương đối đơn giản.

Trong hướng dẫn này, bạn sẽ cài đặt và thiết lập cấu hình Fathom, sau đó cài đặt Nginx để hoạt động như một proxy ngược cho ứng dụng Fathom. 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, đã bật tường lửa UFW và non-root user có đặc quyền sudo được thiết lập cấu hình. 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
  • Một tên miền trỏ đến địa chỉ IP công cộng của máy chủ của bạn. Ví dụ example.com hoặc fathom.example.com.

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à cài đặt Fathom.

Bước 1: Tải xuống Fathom

Để cài đặt phần mềm Fathom, trước tiên bạn sẽ tải xuống bản phát hành mới nhất, sau đó giải nén tệp thực thi vào thư mục /usr/local/bin.

Đầu tiên, di chuyển đến một thư mục bạn có thể ghi vào. Thư mục /tmp là một lựa chọn tốt:

  1. cd /tmp

Trong trình duyệt web của bạn, hãy truy cập trang GitHub để biết bản phát hành phần mềm mới nhất của Fathom, sau đó tìm tệp có tên như fathom_1.2.1_linux_amd64.tar.gz. Số phiên bản có thể khác nhau.

Nhấp chuột phải vào liên kết đến tệp, sau đó chọn Copy Link (hoặc tương tự, tùy thuộc vào trình duyệt của bạn).

Sử dụng lệnh curl để tải xuống tệp từ liên kết bạn vừa sao chép:

  1. curl -L -O https://github.com/usefathom/fathom/releases/download/v1.2.1/fathom_1.2.1_linux_amd64.tar.gz

Bây giờ bạn sẽ có tệp fathom_1.2.1_linux_amd64.tar.gz trong thư mục /tmp của mình. Sử dụng lệnh tar để giải nén tệp thực thi fathom và di chuyển nó tới /usr/local/bin:

  1. sudo tar -C /usr/local/bin/ -xzf fathom*.tar.gz fathom

Lệnh sudo là cần thiết vì /usr/local/bin là một thư mục được bảo vệ, vì vậy bạn cần có đặc quyền của superuser để ghi vào thư mục đó.

Bây giờ, hãy sử dụng sudochmod để cập nhật các quyền của tệp nhị phân fathom:

  1. sudo chmod +x /usr/local/bin/fathom

Điều này làm cho fathom có thể thực thi được. Để kiểm tra, hãy chạy fathom --version:

  1. fathom --version
Output
Fathom version 1.2.1, commit 8f7c6d2e45ebb28651208e2a7320e29948ecdb2c, built at 2018-11-30T09:21:37Z

Lệnh sẽ in ra số phiên bản của Fathom và một số chi tiết bổ sung. Bạn đã tải xuống và cài đặt thành công tệp nhị phân Fathom. Tiếp theo, bạn sẽ thiết lập cấu hình và chạy Fathom lần đầu tiên.

Bước 2: Thiết lập cấu hình và chạy Fathom

Trước khi thiết lập cấu hình Fathom, bạn sẽ tạo một fathom user mới trên hệ thống của mình. Tài khoản user mới này sẽ được sử dụng để chạy máy chủ Fathom, giúp cô lập và bảo mật dịch vụ.

Tạo một user mới có tên là fathom bằng lệnh adduser:

  1. sudo adduser --system --group --home /opt/fathom fathom

Điều này tạo ra một --system user đặc biệt, nghĩa là nó không có mật khẩu và không thể đăng nhập như một user bình thường. Chúng ta cũng tạo một nhóm fathom bằng cách sử dụng cờ --group và một thư mục chính trong /opt/fathom.

Chuyển đến thư mục chính của fathom user ngay bây giờ:

  1. cd /opt/fathom

Bây giờ chúng ta phải thực hiện một số lệnh cần được chạy với tư cách là fathom user. Để làm điều này, hãy mở bash shell với tư cách là fathom user bằng cách sử dụng sudo:

  1. sudo -u fathom bash

Lời nhắc của bạn sẽ thay đổi thành một cái gì đó như fathom@host:~$. Cho đến khi chúng ta exxit khỏi shell này, mọi lệnh chúng ta chạy sẽ được chạy với tư cách là fathom user.

Bây giờ bạn đã sẵn sàng thiết lập tệp cấu hình cho Fathom. Một mục chúng ta sẽ cần trong tệp cấu hình này là một chuỗi ngẫu nhiên mà Fathom sẽ sử dụng cho mục đích ký và mã hóa. Sử dụng lệnh openssl để tạo một chuỗi ngẫu nhiên ngay bây giờ:

  1. openssl rand --base64 32
Output
iKo/rYHFa2hDINjgCcIeeCe9pNglQreQrzrs+qK5tYg=

Sao chép chuỗi vào khay nhớ tạm của bạn hoặc ghi lại chuỗi trên một tài liệu tạm thời thuộc loại nào đó, sau đó mở tệp .env mới cho cấu hình:

  1. nano /opt/fathom/.env

Thao tác này sẽ mở một tệp trống mới trong trình soạn thảo văn bản nano. Thay vào đó, hãy sử dụng trình chỉnh sửa yêu thích của bạn.

Dán đoạn mã sau vào tệp, đảm bảo cập nhật chuỗi ngẫu nhiên thành chuỗi bạn đã tạo trước đó:

/opt/fathom/.env
FATHOM_SERVER_ADDR="127.0.0.1:8080"
FATHOM_DATABASE_DRIVER="sqlite3"
FATHOM_DATABASE_NAME="fathom.db"
FATHOM_SECRET="your_random_string_here"

Trước tiên, cấu hình này chỉ định rằng máy chủ chỉ nên lắng nghe trên cổng 8080 của localhost (127.0.0.1) và máy chủ nên sử dụng tệp cơ sở dữ liệu SQLite có tên là fathom.db.

Lưu và đóng tập tin. Trong nano, bạn có thể nhấn CTRL+O rồi ENTER để lưu, sau đó nhấn CTRL+X để thoát.

Bây giờ cơ sở dữ liệu đã được thiết lập cấu hình, chúng ta có thể thêm người dùng đầu tiên vào phiên bản Fathom của mình:

  1. fathom user add --email="your_email" --password="your_password"

Vì đây là lần đầu tiên bạn chạy fathom với cơ sở dữ liệu được thiết lập cấu hình, nên bạn sẽ nhận thấy một số lần di chuyển cơ sở dữ liệu ban đầu đang diễn ra:

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 [email protected]

Tệp cơ sở dữ liệu fathom.db của bạn hiện đã được tạo và người dùng đã được thêm vào.

Khởi động máy chủ Fathom ngay bây giờ để kiểm tra:

  1. 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 thiết bị đầu cuối thứ hai được kết nối với máy chủ của bạn, hãy tìm trang chủ của phiên bản Fathom của bạn bằng cách sử dụng curl:

  1. 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"> . . .

Bạn sẽ thấy một vài dòng mã HTML được in trên màn hình của mình. Điều này cho thấy rằng máy chủ đang hoạt động và đáp ứng các yêu cầu trên localhost.

Quay lại thiết bị đầu cuối đầu tiên của bạn, thoát khỏi quy trình fathom server bằng cách nhấn CTRL + C.

Bạn đã hoàn tất việc chạy các lệnh với tư cách là fathom user, vì vậy hãy exxit khỏi phiên đó:

  1. exit

Shell prompt của bạn sẽ trở lại bình thường.

Fathom hiện đã được thiết lập cấu hình đầy đủ và bạn đã chạy thành công thủ công từ dòng lệnh. Tiếp theo, chúng ta sẽ thiết lập Fathom để chạy dưới dạng dịch vụ Systemd.

Bước 3: Thiết lập Fathom làm Dịch vụ Systemd

Để chạy fathom serve mọi lúc, ngay cả khi bạn không đăng nhập vào máy chủ, bạn sẽ thiết lập nó như một dịch vụ với Systemd. Systemd là trình quản lý dịch vụ xử lý việc bắt đầu, dừng và khởi động lại các dịch vụ trên Ubuntu và nhiều bản phân phối Linux khác.

Tệp fathom.service bạn tạo sẽ chứa tất cả các chi tiết cấu hình mà Systemd cần để chạy máy chủ đúng cách. Mở tệp mới ngay bây giờ:

  1. sudo nano /etc/systemd/system/fathom.service

Thêm phần sau vào tệp:

/etc/systemd/system/fathom.service
[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

Tệp này chỉ định thời điểm khởi chạy dịch vụ (After=network.target, nghĩa là sau khi mạng hoạt động), dịch vụ sẽ được chạy với tư cách là fathom user và group, rằng Systemd phải luôn cố gắng khởi động lại quy trình nếu nó thoát (Restart=always), rằng nó sẽ được chạy từ thư mục /opt/fathom, và sử dụng lệnh nào để chạy máy chủ (ExecStart=/usr/local/bin/fathom server).

Lưu và đóng tập tin. Tải lại cấu hình Systemd:

  1. sudo systemctl daemon-reload

Kích hoạt dịch vụ:

  1. sudo systemctl enable fathom.service

Kích hoạt dịch vụ có nghĩa là Systemd sẽ tự động khởi động nó trong quá trình khởi động hệ thống. Chúng ta cũng sẽ cần bắt đầu dịch vụ theo cách thủ công ngay bây giờ, chỉ một lần này:

  1. sudo systemctl start fathom

Lưu ý trong lệnh trước rằng bạn có thể bỏ phần .service của tên dịch vụ. Cuối cùng, hãy kiểm tra trạng thái của dịch vụ để đảm bảo dịch vụ đang chạy:

  1. 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: >

Dịch vụ đã hoạt động trở lại trên cổng 8080 của localhost. Tiếp theo, chúng ta sẽ thiết lập Nginx làm proxy ngược để hiển thị dịch vụ Fathom ra thế giới bên ngoài.

Bước 4: 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ủ ứng dụng 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 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ó để đảo ngược các yêu cầu proxy tới Fathom, nghĩa là nó sẽ xử lý các yêu cầu từ người dùng của bạn tới Fathom 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 ta sẽ gọi tên của chúng ta là fathom.conf nhưng bạn có thể sử dụng một tên khác:

  1. sudo nano /etc/nginx/sites-available/fathom.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ủ Fathom của mình. Ví dụ như fathom.example.com:

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

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

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

Cấu hình này hiện chỉ dành cho HTTP. 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 máy chủ Fathom của chúng ta tại http://localhost:8080, thêm một số tiêu đề chuyển tiếp proxy quan trọng trong quá trình thực hiện.

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/fathom.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 Fathom 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 5: 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 Fathom của chúng ta sẽ chỉ mất hai lệnh.

Đầu tiên, cài đặt Certbot và Nginx plugin 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://Fathom.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=Fathom.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/Fathom.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/Fathom.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 thông tin chi tiết người dùng mà bạn đã thiết lập ở Bước 2.

Khi bạn đăng nhập thành công, bạn sẽ thấy lời nhắc thiết lập trang web đầu tiên của mình với Fathom:

description image

Khi đã xong, bạn sẽ thấy bảng điều khiển (hiện đang trống) cho trang web bạn vừa thiết lập:

description image

Bạn đã cài đặt và bảo mật thành công phần mềm phân tích Fathom của mình.

Kết luận

Trong hướng dẫn này, bạn đã tải xuống, cài đặt và thiết lập cấu hình ứng dụng Fathom Analytics, sau đó thiết lập proxy ngược Nginx và bảo mật nó bằng chứng chỉ SSL Let's Encrypt.

Bây giờ, bạn đã sẵn sàng hoàn tất việc thiết lập trang web của mình bằng cách thêm tập lệnh theo dõi Fathom Analytics vào đó. Vui lòng xem tài liệu chính thức của Fathom Analytics để biết thêm thông tin về cách sử dụng phần mềm và thiết lập 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