Thibault Mocellin

Thibault Mocellin

Développeur Full-Stack freelance basé à Annecy 🇫🇷

Analysez les données de votre site simplement avec Fathom et Docker

Posted on March 11, 2019

Tout comme la majorité des gens (moi y compris 😎) lorsque vous décidez de mesurer le trafic de votre site vous vous orientez naturellement vers notre ami Google avec Google Analytics.

Cependant si vous souhaitez garder la main sur ces données vous pouvez vous orienter vers une solution open-source que vous hébgergez vous-même comme Matomo par exemple. Matomo est un outil très complet par contre si vous voulez juste suivre quelques métriques (pages vues, nombre de visiteurs,…) et que vous souhaitez quelque chose de plus simple alors vous devriez essayer Fathom.

Qu’est ce que Fathom

Fathom Analytics est un outil qui fournit des statistiques simples et utiles sur vos sites web sans suivre ou stocker les données personnelles de vos utilisateurs. Vous pouvez installer Fathom sur votre propre serveur gratuitement ou bien payer pour utiliser la version hébergée.

Ci-dessous le dashboard de Fathom :

fathom analytics

Installation et configuration

Pour commencer nous allons voir comment fonctionne Fathom en le lançant en local sur notre machine avec Docker. Puis nous verrons ensuite comment l’utiliser sur notre propre serveur.

Installation local

Pour lancer Fathom en local c’est vraiment très simple il suffit de saisir la commande suivante :

docker run -d -p 8080:8080 usefathom/fathom:latest

Ensuite si vous vous rendez à l’adresse localhost:8080 vous devriez voir la page suivante vous permettant de définir le nom de votre site puis ensuite récupérer le code de tracking à ajouter sur votre site.

fathom analytics installation

Création d’un utilisateur admin

Une fois que vous avez configuré votre site, c’est à dire définir le nom et récupérer le code de tracking. Vous remarquez que vous ne pouvez plus modifier les informations de votre site ou bien en ajouter un nouveau. Cela est dû au fait que par défaut le dashboard Fathom une fois que vous l’avez configuré est accessible publiquement et ne permet donc pas d’éditer ou d’ajouter un autre site web.

Si l’on souhaite restreindre l’accès au dashboard ou bien ajouter plusieurs sites il faut créer un utilisateur admin.

Pour ajouter un utilisateur il faut utiliser la commande suivante :

fathom user add --email="john@email.com" --password="strong-password"

Cependant puisque nous utilisons Docker nous allons devoir exécuter cette commande depuis notre container.

Premièrement il faut récupérer l’id de notre container Fathom :

docker ps

récupération de l'id du container

Une fois que vous avez récupéré l’id du container lancez la commande suivante en remplaçant [CONTAINERID]_ par votre id :

docker exec -it [CONTAINER_ID] ./fathom user add --email="john@email.com" --password="strong-password"

Enfin si vous rafraîchissez la page vous devriez voir une page vous demandant de vous connecter.

fathom analytics login

Configuration

Maintenant que nous avons vu comment lancer Fathom et comment ajouter un utilisateur, nous allons voir comment modifier la configuration par défaut.

Voici la liste des différentes valeurs de configuration :


Name Default Description
FATHOM_DEBUG false If true will write more log messages.
FATHOMSERVERADDR :8080 The server address to listen on
FATHOM_GZIP false if true will HTTP content gzipped
FATHOMDATABASEDRIVER sqlite3 The database driver to use: mysql, postgres or sqlite3
FATHOMDATABASENAME The name of the database to connect to (or path to database file if using sqlite3)
FATHOMDATABASEUSER Database connection user
FATHOMDATABASEPASSWORD Database connection password
FATHOMDATABASEHOST Database connection host
FATHOMDATABASESSLMODE For a list of valid values, look here for Postgres and here for MySQL
FATHOMDATABASEURL Can be used to specify the connection string for your database, as an alternative to the previous 5 settings.
FATHOM_SECRET Random string, used for signing session cookies

Pour modifier la configuration nous avons deux méthodes possibles :

  • En spécifiant les valeurs en tant que variables d’environnement de notre container.
  • En créant un fichier fathom.env avec les différentes valeurs puis indiquer à Fathom d’utiliser notre fichier.

Pour l’exemple nous allons juste modifier le port de Fathom à l’aide de FATHOMSERVERADDR

Commençons en spécifiant la valeur en tant que variable d’environnement :

Dans ce cas nous allons passer la variable d’environnement à l’aide de l’option -e de la commande docker run :

docker run -d -e FATHOM_SERVER_ADDR=3000 -p 8080:3000 usefathom/fathom:latest

Ici puisqu’on change le port de Fathom il faut bien penser à changer le mappage du port de notre container avec -p 8080:3000.

Et maintenant nous allons voir la méthode avec le fichier fathom.env. Créez un dossier fathom puis dedans ajoutez un fichier fathom.env :

mkdir fathom & cd fathom
touch fathom.env

Dans le fichier fathom.env ajoutez la valeur suivante :

FATHOM_SERVER_ADDR=3000

Pour terminer lancez la commande :

docker run -v $(pwd)/fathom.env:/app/fathom.env -p 8080:3000 usefathom/fathom:latest /bin/bash -c "./fathom --config=./fathom.env server"

Installation sur un serveur avec un domaine et https

Maintenant que nous avons vu la base du fonctionnement et de la configuration de Fathom nous allons voir comment l’installer sur notre serveur et le rendre accessible via un domaine avec https.

Pour ce faire nous allons utiliser Caddy Server (si vous ne connaissez pas Caddy passez par ici d’abord) et docker-compose.

Nous allons aussi utiliser MySQL comme base de données pour Fathom (à noter que si vous n’avez pas déjà une base de données MySQL vous pouvez très bien rester sur SQlite même si votre site possède un gros trafic plus d’infos).

Le domaine utilisé pour l’exemple sera data.exemple.com.

Commencez par créer un dossier nommé analytics-srv :

mkdir analytics-srv && cd analytics-srv

Ensuite dans ce dossier créez un dossier Caddy et un fichier docker-compose.yml :

mkdir Caddy && touch docker-compose.yml

Dans le fichier docker-compose.yml ajoutez la configuration suivante :

version: '3'
services:
  server:
    image: abiosoft/caddy
    container_name: caddy
    ports:
      - '80:80'
      - '443:443'
    volumes:
      - './Caddy/Caddyfile:/etc/Caddyfile'
      - './Caddy:/root/.caddy'
  fathom:
    image: usefathom/fathom:latest
    ports:
      - '8080:8080'
    environment:
      - 'FATHOM_SERVER_ADDR=:8080'
      - 'FATHOM_GZIP=true'
      - 'FATHOM_DEBUG=false'
      - 'FATHOM_DATABASE_DRIVER=mysql'
      - 'FATHOM_DATABASE_NAME=fathom'
      - 'FATHOM_DATABASE_USER=user'
      - 'FATHOM_DATABASE_PASSWORD=password'
      - 'FATHOM_DATABASE_HOST=mysql:3306'
      - 'FATHOM_SECRET=fathomsecret'
    links:
      - 'mysql:mysql'
    depends_on:
      - mysql
    restart: always
  mysql:
    image: 'mysql:5'
    volumes:
      - ./mysql-data:/var/lib/mysql
    ports:
      - '3306:3306'
    environment:
      - 'MYSQL_ALLOW_EMPTY_PASSWORD=false'
      - 'MYSQL_DATABASE=fathom'
      - 'MYSQL_PASSWORD=password'
      - 'MYSQL_ROOT_PASSWORD=rootpassword'
      - 'MYSQL_USER=user'

Remplacez les valeurs des variables FATHOMDATABASEUSER, FATHOMDATABASEPASSWORD, FATHOMSECRET, MYSQLPASSWORD, MYSQLROOTPASSWORD, MYSQL_USER avec vos valeurs.

Pour terminer ajoutez le fichier Caddyfile dans le dossier Caddy :

data.exemple.com {
  proxy /  fathom:8080
}

Puis lancez la commande :

docker-compose up

Maintenant il ne vous reste plus qu’à définir si vous souhaitez laisser l’accès au dashboard publique ou bien ajouter un utilisateur comme on l’a vu précédemment. Puis enfin ajouter le code de tracking sur votre site.

Partagez cet article si vous le souhaitez et si vous avez des questions vous pouvez me contacter par le chat.