---
title: "Cách cài đặt Fathom Analytics trên Ubuntu 20.04"
description: "Cách cài đặt Fathom Analytics trên Ubuntu 20.04"
url: https://cloudfly.vn/techblog/cach-cai-dat-fathom-analytics-tren-ubuntu-2004
image: https://media.cloudfly.vn/posts/techblog_093I9Rt.png
---

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

## 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:
```command
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:
```command
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`:
```command
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 `sudo` và `chmod` để cập nhật các quyền của tệp nhị phân `fathom`:
```command
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`:
```command
fathom --version
```

```
[secondary_label 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`:
```command
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ờ:
```command
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`:
```command
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ờ:
```custom_prefix(fathom@host:~$)
openssl rand --base64 32
```

```
[secondary_label 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:
```custom_prefix(fathom@host:~$)
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 đó:
```nginx
[label /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:
```custom_prefix(fathom@host:~$)
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:
```
[secondary_label 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@example.com
```

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:
```custom_prefix(fathom@host:~$)
fathom server
```

```
[secondary_label 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`:
```command
curl localhost:8080
```

```
[secondary_label 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 đó:
```custom_prefix(fathom@host:~$)
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ờ:
```command
sudo nano /etc/systemd/system/fathom.service
```

Thêm phần sau vào tệp:
```nginx
[label /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:
```command
sudo systemctl daemon-reload
```

Kích hoạt dịch vụ:
```command
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:
```command
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:
```command
sudo systemctl status fathom
```

```
[secondary_label 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`:
```command
sudo apt update
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”:
```command
sudo ufw allow "Nginx Full"
```

```
[secondary_label 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:
```command
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`:
```nginx
[label /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/`:
```command
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:
```command
sudo nginx -t
```

```
[secondary_label 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:
```command
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](https://media.cloudfly.vn/posts/cach-cai-dat-Fathom-Analytics-tren-Ubuntu-20.04.png)

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ó:
```command
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`:
```command
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:
```
[secondary_label 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](https://media.cloudfly.vn/posts/cach-cai-dat-Fathom-Analytics-tren-Ubuntu-20.04_2.png)

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](https://media.cloudfly.vn/posts/cach-cai-dat-Fathom-Analytics-tren-Ubuntu-20.04_3.png)

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.
