i

Web Analytics

Web Analytics

Fathom est une alternative light à Matomo pour connaitre l’audience d’un site web. En plus, il a le bon goût de tourner sous docker avec une base SQLite…

Installation

Cette installation repose sur l’infra déployée précédemment avec un exemple d’intégration dans Hugo

Comme d’habitude, on part du docker-compose.yml fourni par la projet et on supprime la partie MySQL pas forcément nécéssaire pour des petits sites. Au passage, j’ajoute un volume nommé pour persister la base SQLlite.

 1version: '3'
 2services:
 3  fathom:
 4    image: usefathom/fathom:latest
 5    container_name: fathom
 6    expose:
 7      - "8080"
 8    environment:
 9      - 'FATHOM_SERVER_ADDR=:8080'
10      - 'FATHOM_GZIP=true'
11      - 'FATHOM_DEBUG=false'
12      - 'FATHOM_DATABASE_DRIVER=sqlite3'
13      - 'FATHOM_DATABASE_NAME=fathom.db'
14      - 'FATHOM_SECRET=secret-password'
15    volumes:
16      - app:/app
17    networks:
18      - traefik_lan
19    labels:
20      - "traefik.enable=true"
21      - "traefik.docker.network=traefik_lan"
22      - "traefik.http.routers.fathomnotls.rule=Host(`webstat.domain.tld`)"
23      - "traefik.http.routers.fathomnotls.entrypoints=webinsecure"
24      - "traefik.http.routers.fathomnotls.middlewares=tlsredir@file"
25      - "traefik.http.routers.fathom.rule=Host(`webstat.domain.tld`)"
26      - "traefik.http.routers.fathom.entrypoints=websecure"
27      - "traefik.http.routers.fathom.tls=true"
28      - "traefik.http.routers.fathom.tls.certresolver=letsencrypt"
29
30networks:
31  traefik_lan:
32    external: true
33
34volumes:
35  app:

utilisation

Après le traditionnel "docker-compose up -d", l’application est directement accessible sans authentification et vous propose de générer le javascript à intégrer à votre site. Pour activer l’authentification et permettre d’intégrer plusieurs sites, il faut générer un identifiant:

1docker exec <container_id> ./fathom user add --email="identifiant@domain.tld" --password="my-secret"

Intégration dans Hugo

Rien de plus simple, il suffit de se rendre sur l’interface de votre Fathom et d’ajouter un nouveau site. L’application propose alors directement le javascript :

screenshot fathom

Reste à l’intégrer dans Hugo :

 1cat themes/<your-theme>/layouts/partials/fathom.html
 2
 3<!-- Fathom - simple website analytics - https://github.com/usefathom/fathom -->
 4<script>
 5(function(f, a, t, h, o, m){
 6	a[h]=a[h]||function(){
 7		(a[h].q=a[h].q||[]).push(arguments)
 8	};
 9	o=f.createElement('script'),
10	m=f.getElementsByTagName('script')[0];
11	o.async=1; o.src=t; o.id='fathom-script';
12	m.parentNode.insertBefore(o,m)
13})(document, window, '//webstat.domain.tld/tracker.js', 'fathom');
14fathom('set', 'siteId', 'OBUQO');
15fathom('trackPageview');
16</script>
17<!-- / Fathom -->

et de l’ajouter dans l’entête:

1cat themes/<your-theme>/layouts/partials/head.html
2...
3  {{- partial "fathom.html" . }}
4</head>

Resultat final:

screenshot fathom final

Sources / docs…