Cómo instalar la analítica web centrada en la privacidad de Fathom en Debian 11

Fathom es un programa de análisis web centrado en la privacidad que proporciona datos limpios y concisos sobre tus sitios web. Es un sencillo software de analítica web que proporciona informes y métricas esclarecedoras sobre tus sitios. Fathom se ha creado como alternativa a Google Analytics, pero no invade la privacidad de los usuarios ni compromete los datos de los visitantes. Cumple la normativa GDPR, sin necesidad de banners de cookies.

Fathom está disponible en dos versiones, la versión de código abierto que puedes instalar en tu servidor, y la versión pro que puedes adquirir en el sitio web oficial de Fathom. Algunos usuarios destacados de Fathom son IBM, Laravel, GitHub, Hoshicord, BOSCH, McLaren, VueJS y muchos más.

Este tutorial te muestra cómo instalar la Analítica web centrada en la privacidad de Fathom en un servidor Debian 11. Realizarás la instalación de Fathom con PostgreSQL como base de datos, el servidor web Nginx como proxy inverso, y también asegurarás Fathom con certificados SSL/TLS mediante Certbot y Letsencrypt.

Por el camino, también aprenderás a configurar la autenticación en PostgreSQL, crear una base de datos y un usuario, y añadir servicios systemd a un sistema Linux.

Requisitos previos

Para completar este tutorial, debes tener los siguientes requisitos:

  • Un servidor Debian 11 – Este ejemplo utiliza un servidor Debian con el nombre de host «fathome-server».
  • Un usuario no root con privilegios de administrador sudo/root.
  • Un nombre de dominio apuntando a una dirección IP del servidor – Este ejemplo utiliza un subdominio ‘ fathom.hwdomain.io‘.

Ya está. Vamos a iniciar la instalación de Fathom.

Instalación del servidor PostgreSQL

Fathom es una sencilla analítica web centrada en la privacidad construida con Golang Preact. En una instalación por defecto, Fathom utiliza SQLite como base de datos, pero también es posible utilizar RDBMS como MySQL/MariaDB y PostgreSQL.

Para este ejemplo, ejecutarás Fathom con PostgreSQL. Por tanto, ahora instalarás y configurarás PostgreSQL en tu servidor Debian.

Para empezar, ejecuta el siguiente comando apt para actualizar y refrescar el índice de paquetes de Debian.

sudo apt update

Ahora instala los paquetes PostgreSQL mediante el siguiente comando apt. Esto instalará el paquete de servidor PostgreSQL por defecto del repositorio de Debian 11, que es PostgreSQL 13.

sudo apt install postgresql

Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar.

instalar postgresql

Una vez instalado PostgreSQL, deberás configurar la autenticación para el servidor. Para ello, tienes que modificar los archivos de configuración de PostgreSQL que están disponibles en el directorio ‘/etc/postgresql/13/main/’ (PostgreSQL por defecto en Debian).

Abre el archivo‘/etc/postgresql/13/main/postgresql.conf ‘ con tu editor de texto/código preferido. Este ejemplo utiliza nano como editor por defecto.

sudo nano /etc/postgresql/13/main/postgresql.conf

Descomenta el parámetro‘password_encryption’ y cambia el valor por defecto a‘scram-sha-256‘.

password_encryption = scram-sha-256

Guarda y cierra el archivo «/etc/postgresql/13/main/postgresql.conf» cuando hayas terminado. Para los usuarios de nano, pulsa Ctrl+x, luego y, y pulsa ENTER.

A continuación, abre el archivo de configuración de autenticación PostgreSQL ‘/etc/postgresql/13/main/pg_hba.conf ‘ utilizando el siguiente editor nao.

sudo nano /etc/postgresql/13/main/pg_hba.conf

Cambia el método de autenticación por defecto para el host ‘127.0.0.1/32‘ y ‘::1/128 ‘ a ‘scram-sha-256‘. Esto especificará el método de autenticación utilizando ‘ scram-sha-256 ‘ para cualquier conexión desde localhost al servidor PostgreSQL.

Cuando utilices el parámetro ‘-h 127.0.0.1‘, te conectarás a PostgreSQL como host y utilizarás la autenticación scram-sha-256. Cuando sólo utilices el comando‘psql‘ sin especificar el host de PostgreSQL, te conectarás como conexión local y utilizarás el método de autenticación‘peer‘.

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

Guarda y cierra el archivo ‘/etc/postgresql/13/main/pg_hba.conf‘ cuando hayas terminado.

configurar método de autenticación

A continuación, ejecuta la siguiente utilidad de comandos systemctl para reiniciar el servidor PostgreSQL y aplicar los cambios.

sudo systemctl restart postgresql

A continuación, verifica el servidor PostgreSQL para asegurarte de que está habilitado y en ejecución.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

Si PostgreSQL se está ejecutando y está habilitado, verás la salida en tu terminal.

verificar postgresql

Con el servidor PostgreSQL en marcha y habilitado, empezarás a crear una nueva base de datos PostgreSQL y un nuevo usuario para la analítica web de Fathom.

Configurar la base de datos PostgreSQL y el usuario

En este paso, configurarás la contraseña del usuario PostgreSQL predeterminado ‘postgres’ a través del intérprete de comandos PostgreSQL. A continuación, crearás una base de datos y un usuario nuevos que se utilizarán para la instalación de Fathom web analytics.

Accede al shell PostgreSQL mediante el siguiente comando. Con el comando ‘sudo -u postgres ‘psql’, significa que ejecutarás el comando ‘psql’ como usuario ‘postgres’.

cd /var/lib/postgresql
sudo -u postgres psql

Después de iniciar sesión, deberías estar conectado a la base de datos ‘postgres’ por defecto y tu indicador PostgreSQL debería convertirse en‘postgres=#‘.

Ahora ejecuta la siguiente consulta para crear una nueva contraseña para el usuario «postgres» predeterminado de PostgreSQL. Asegúrate de cambiar la contraseña en la siguiente consulta.

ALTER USER postgres WITH PASSWORD 'PostgresP@ssw0rd';

configurar contraseña root postgresql

A continuación, ejecuta las siguientes consultas PostgreSQL para crear un nuevo usuario PostgreSQL y una nueva base de datos. En este ejemplo, crearás un nuevo usuario PostgreSQL«fathom» con la base de datos«fathomdb«.

CREATE USER fathom WITH CREATEDB CREATEROLE PASSWORD 'p4ssw0rdFathom';
CREATE DATABASE fathomdb OWNER fathom;

crear base de datos usuario postgresql

Por último, ejecuta la siguiente consulta para verificar la lista de bases de datos y usuarios en tu servidor PostgreSQL.

\l
\du

Listado de bases de datos en el servidor PostgreSQL mediante la consulta ‘\l ‘ -Y puedes ver que se ha creado la nueva base de datos ‘fathomdb’.

listar bases de datos

Listado de usuarios en PostgreSQL mediante la consulta ‘ \du ‘ – Puedes ver el nuevo usuario PostgreSQL ‘fathom’ añadido al PostgreSQL.

lista usuarios postgresql

Llegados a este punto, ya has instalado y configurado el servidor PostgreSQL. En el siguiente paso, iniciarás la instalación de Fathom.

Descarga del binario de Fathom

Fathom es una pequeña y sencilla aplicación escrita en Go y viene como un único archivo binario que puedes ejecutar en cualquier momento en tu sistema Linux.

Ahora vas a descargar Fathom a tu servidor Debian.

Visita la página de publicación de Fathom en GitHub y selecciona la versión que prefieras para tu instalación. En este ejemplo se utilizará la última versión de Fathom v1.3.0, que es la más reciente durante la redacción de este artículo.

Descarga el archivo binario de Fathom utilizando el siguiente comando wget.

wget https://github.com/usefathom/fathom/releases/download/v1.3.0-rc.1/fathom_1.3.0-rc.1_linux_amd64.tar.gz

Una vez descargado, ejecuta el siguiente comando tar para extraer Fathom al directorio‘/usr/local/bin‘. A continuación, haz ejecutable el archivo binario ‘fathom’ mediante el comando chmod.

tar -C /usr/local/bin -xzf fathom_1.3.0-rc.1_linux_amd64.tar.gz
chmod +x /usr/local/bin/fathom

Por último, ejecuta el siguiente comando para asegurarte de que puedes ejecutar el archivo binario «fathom«. A continuación, verifica la versión de «fathom».

which fathom
fathom --version

Cuando el comando se ejecute correctamente, deberías ver la ruta completa del archivo binario ‘fathom‘/usr/local/bin/fathom‘. Además, verás la versión de Fathom en tu terminal.

descargar fathom

Con Fathom descargado, a continuación configurarás la instalación de Fathom web analytics.

Configurar Fathom Web Analytics

En este paso, configurarás la instalación de Fathom web analytics. Configurarás el directorio de datos, configurarás la base de datos PostgreSQL con Fathom y, por último, ejecutarás Fathom como un servicio systemd.

Al ejecutar Fathom como un servicio systemd, puedes gestionar fácilmente a Fathom mediante la utilidad de comandos systemctl. Puedes iniciar, activar y verificar el estado de Fathom mediante systemctl.

En primer lugar, ejecuta el siguiente comando para crear un nuevo usuario«fathom» en tu sistema Debian. Asegúrate también de establecer la contraseña para tu nuevo usuario.

sudo useradd -m -s /bin/bash fathom
sudo passwd fathom

Ahora ejecuta el siguiente comando para iniciar sesión con el nuevo usuario «fathom» y empezar a configurar la instalación de Fathom.

su - fathom

crear usuario fathom

En primer lugar, ejecuta el siguiente comando para generar una cadena aleatoria que se utilizará como«FATHOM_SECRET«. Asegúrate de copiar la salida generada.

head /dev/urandom | tr -dc A-Za-z0-9 | head -c 20 ; echo ''

Ahora crea un nuevo directorio ‘~/data‘ y traslada a él el directorio de trabajo. A continuación, crea un nuevo archivo ‘.env ‘ mediante el siguiente comando del editor nano.

mkdir -p ~/data; cd ~/data
nano .env

Añade las siguientes líneas al archivo. Asegúrate de cambiar los detalles de la base de datos PostgreSQL y del usuario, y también de sustituir el ‘FATHOM_SECRET» por tu cadena generada en la parte superior.

Además, si estás ejecutando Fathomn en producción, asegúrate de cambiar‘FATHOM_DEBUG‘ a‘false’. También puedes establecer ‘FATHOM_DATABASE_SSLMODE‘ si utilizas bases de datos con conexiones seguras SSL/TLS. Este ejemplo utiliza el mismo servidor que Fathom, por lo que ‘FATHOM_DATABASE_SSLMODE‘ está configurado como‘desactivar‘.

FATHOM_GZIP=true
FATHOM_DEBUG=true
FATHOM_DATABASE_DRIVER="postgres"
FATHOM_DATABASE_NAME="fathomdb"
FATHOM_DATABASE_USER="fathom"
FATHOM_DATABASE_PASSWORD="p4ssw0rdFathom"
FATHOM_DATABASE_HOST="127.0.0.1"
FATHOM_DATABASE_SSLMODE="disable"
FATHOM_SECRET="13tUIGpjCY9miJcSWW6S"

Guarda y cierra el archivo ‘.env ‘ cuando hayas terminado.

configurar fathom

Ahora escribe exit para cerrar la sesión del usuario ‘fathom’ y volver a la sesión raíz.

A continuación, crea un nuevo archivo de servicio systemd ‘/etc/systemd/system/fathom.service ‘ utilizando el comando editor nano que aparece a continuación.

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

Añade las siguientes líneas al archivo. Con esto, ejecutarás la analítica web de Fathom en localhost con el puerto por defecto‘8080‘, y el directorio de datos para Fathom se configura en ‘/home/fathom/data’.

[Unit]
Description=Starts the fathom server
Requires=network.target
After=network.target
[Service]
Type=simple
User=fathom
Restart=always
RestartSec=3
WorkingDirectory=/home/fathom/data
ExecStart=/usr/local/bin/fathom server

[Install]
WantedBy=multi-user.target

Guarda el archivo y sal de él cuando hayas terminado.

Ahora ejecuta el siguiente comando para recargar el gestor systemd y aplicar el nuevo archivo de servicio ‘fathom.service’.

sudo systemctl daemon-reload

Después, inicia y activa el servicio «fathom» con el siguiente comando systemctl.

sudo systemctl start fathom
sudo systemctl enable fathom

configurar fathom systemd

Verifica el servicio «fathom» para asegurarte de que se está ejecutando.

sudo systemctl status fathom

Deberías recibir una salida como ésta: El estado del servicio fathom es en ejecución y ahora está habilitado, lo que significa que el servicio se ejecutará automáticamente al arrancar.

verificar el servicio fathom

Crear el usuario Administrador de Fathom

Ahora que Fathom se ejecuta como un servicio systemd, puedes crear un nuevo usuario administrador para tu instalación de Fathom.

Para crear un usuario administrador de Fathom, debes estar en el directorio de datos de Fathom. Por tanto, ejecuta el siguiente comando para iniciar sesión como usuario«fathom«. A continuación, mueve el directorio de trabajo a‘~/data‘.

su - fathom
cd ~/data

Ejecuta el siguiente comando fathom para añadir un nuevo usuario administrador para los análisis web de Fathom. Asegúrate de cambiar la dirección de correo electrónico y la contraseña en la siguiente línea de comandos.

fathom user add --email="[email protected]" --password="AliceFathomP4ssw0rd"

Si tienes éxito, recibirás una salida similar a ésta. Puedes ver el mensaje que te muestra el estado de la conexión a la base de datos PostgreSQL‘fathomdb‘ y que se ha creado el nuevo usuario administrador[email protected]‘.

configurar usuario administrador

Llegados a este punto, ya has finalizado la instalación de Fathom con el servidor de bases de datos PostgreSQL. También has creado un usuario administrador para Fathom.

En el siguiente paso, instalarás y configurarás Nginx como proxy inverso para la analítica web de Fathom que se ejecuta en localhost con el puerto 8080 por defecto.

Instalar y configurar Nginx como proxy inverso

En este paso, instalarás el servidor web Nginx y configurarás el bloque de servidor Nginx que se utilizará como proxy inverso para las analíticas web de Fathom.

Ejecuta el siguiente comando apt para instalar el paquete Nginx en tu servidor Debian. Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar.

sudo apt install nginx

instalar nginx

Una vez instalado Nginx, crea un nuevo archivo de configuración del bloque de servidores‘/etc/nginx/sites-available/fathom‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/nginx/sites-available/fathom

Añade las siguientes líneas y asegúrate de cambiar el nombre de dominio por tu dominio.

server {
    listen 80;
    server_name fathom.hwdomain.io;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
}

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, ejecuta el siguiente comando para activar el bloque del servidor Nginx‘/etc/nginx/sites-available/fathom‘. A continuación, verifica la configuración de Nginx para asegurarte de que la configuración de Nginx es correcta.

sudo ln -s /etc/nginx/sites-available/fathom /etc/nginx/sites-enabled/
sudo nginx -t

Si tiene éxito, verás una salida como‘test is successful – syntax ok‘ en tu terminal.

configurar proxy inverso nginx

Ahora ejecuta el siguiente comando systemctl para reiniciar el servicio Nginx y aplicar los cambios.

sudo systemctl restart nginx

A continuación, verifica el servicio Nginx para asegurarte de que se está ejecutando mediante la utilidad de comandos systemctl que se indica a continuación.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Deberías recibir una salida como el servicio Nginx se está ejecutando y está habilitado, lo que significa que el servicio se iniciará automáticamente al arrancar.

verificar nginx

Ahora que el servidor web Nginx se está ejecutando como proxy inverso para la analítica web de Fathom, a continuación configurarás el cortafuegos UFW y abrirás los puertos HTTP y HTTPS.

Proteger Fathom con el cortafuegos

En este paso, instalarás UFW en tu servidor Debian. A continuación, abre los servicios SSH, HTTP y HTTPS para permitir el acceso al servidor.

Instala el paquete ufw mediante el siguiente comando apt. Introduce y cuando te lo pida y pulsa ENTER para continuar.

sudo apt install ufw

instalar ufw

Una vez instalado UFW, ejecuta el siguiente comando para añadir las aplicaciones OpenSSH y‘WWW Full‘. La aplicación OpenSSH abrirá el puerto SSH 22 por defecto y la aplicación ‘WWW Full’ abrirá los servicios HTTP y HTTPS.

sudo ufw allow OpenSSH
sudo ufw allow 'WWW Full'

Una vez añadidas, deberías obtener una salida como«Reglas actualizadas«.

Ahora ejecuta el siguiente comando ufw para iniciar y habilitar el cortafuegos UFW. Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar.

sudo ufw enable

Deberías recibir un mensaje como «El cortafuegos está activo y habilitado al iniciar el sistema«, lo que significa que el cortafuegos UFW está iniciado y habilitado. Esto también permite que UFW se ejecute automáticamente al arrancar el sistema.

configuración ufw

Por último, ejecuta el siguiente comando ufw para verificar la lista de puertos y servicios abiertos en UFW.

sudo ufw status

Verás que se han añadido las aplicaciones OpenSSH y«WWW Full » al cortafuegos de UFW.

verificar ufw

Proteger Fathom Web Analytics con SSL/TLS Letsencrypt

En este paso, asegurarás los análisis web de Fathom con certificados SSL/TLS de Letsencrypt. Para ello, debes instalar Certbot y un plugin adicional de Certbot para Nginx en tu servidor Debian.

Antes de generar los certificados SSL/TLS, asegúrate de que tu dominio apunta a la dirección IP del servidor. Asegúrate también de que tienes una dirección de correo electrónico que utilizarás para registrarte en Letsencrypt.

Ahora ejecuta el siguiente comando apt para instalar Certbot y el plugin Certbot Nginx. Introduce y cuando te lo pida y pulsa ENTER para continuar.

sudo apt install certbot python3-certbot-nginx

instalar certbot

Una vez instalado Certbot, ejecuta el siguiente comando para generar certificados SSL/TLS para tu nombre de dominio. Además, asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico en el siguiente comando.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d fathom.hwdomain.io

Con este comando, se generarán los nuevos certificados SSL/TLS para tu nombre de dominio. Además, esto configurará automáticamente HTTPS en tu bloque de servidores Nginx y configurará la redirección automática de HTTP a HTTPS para tu bloque de servidores Fathom. Los certificados SSL/TLS de Certbot se generan en el directorio‘/etc/elstencrypt/live/fathom.hwdomain.io/’.

Iniciar sesión en Fathom Website Analytics

Abre tu navegador web y visita el nombre de dominio de tu instalación de análisis web de Fathom (es decir: https://fathom.hwdomain.io). Aparecerá la página de inicio de sesión de Fathom.

Introduce tu dirección de correo electrónico y tu contraseña, y haz clic en Iniciar sesión.

iniciar sesión en fathom

Cuando la dirección de correo electrónico y la contraseña sean correctas, aparecerá el panel de administración de Fathom.

salpicadero fathom

Con esto, habrás instalado correctamente Fathom web analytics con PostgreSQL y Nginx.

Conclusión

En este tutorial, has instalado la analítica web de código abierto y centrada en la privacidad Fathom en un servidor Debian 11. También has instalado y configurado PostgreSQL como servidor de base de datos backend para la analítica web Fathom. Y en el front-end para el acceso de los clientes, has configurado Nginx como proxy inverso. También has asegurado la analítica web de Fathom con certificados SSL/TLS a través de Certbot y Letsencrypt.

Con esto en mente, ya puedes añadir nuevas pistas y supervisar tu sitio web y a tus visitantes. También puedes integrar Fathom con varios CMS (Sistemas de Gestión de Contenidos) como WordPress y Drupal. También puedes integrarlo con foros como Discourse.

También te podría gustar...