Herve07h22 / fairlytics-community

Mesure d'audience sans cookie

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fairlytics : mesure d'audience sans cookie.

Pré-requis :

  • Docker (> 20.10) avec le plugin compose. Voir l'installation pour Debian
  • GNU Make
  • un nom de domaine
  • un serveur Linux

Installation

git clone git@github.com:Herve07h22/fairlytics-community.git fairlytics
cd fairlytics

Configurer le fichier .env.

Il doit ressembler à ça :

ELK_VERSION=8.0.0
ELASTIC_HOST=https://localhost:9200
ELASTIC_USERNAME=elastic
ELASTIC_PASSWORD=changemeasap
SESSION_DURATION=900
FAIRLYTICS_SALT=asecretsalttoencrypipadresses
FAIRLYTICS_URL=https://votresupernomde.domaine
FAIRLYTICS_SQLITE_DB=/app/db/fairlytics.db

Un template .env.example est fourni.

cp .env.example .env
nano .env

Les variables à personnaliser sont :

  • ELASTIC_PASSWORD
  • FAIRLYTICS_SALT
  • FAIRLYTICS_URL

FAIRLYTICS_URL doit référencer le nom de domaine. Il doit être de la forme https://votresupernomde.domaine. Le DNS doit être configuré pour que votre serveur soit accessible par ce nom de domaine. Pour vérifier cela :

ping votresupernomde.domaine

doit indiquer l'adresse IP de votre serveur.

Pour Debian il faut positionner max_map_count. C'est fait automatiquement dans le script d'installation, mais ré-initialisé à chaque redémarrage. Pour rendre cela pérenne, éditer le fichier /etc/sysctl.conf et mettre vm.max_map_count à 262144.

./install.sh

Configuration du certificat SSL

Il faut que votre serveur soit sécurisé par une connexion HTTPS pour crypter les données envoyées par le script JS. Donc il vous faut un nom de domaine, et un certificat SSL.

Le nom de domaine doit avoir été renseignée dans le fichier .env :

FAIRLYTICS_URL=https://votresupernomde.domaine

L'obtention des certificats s'effectue par :

make install-ssl

Cette commande invoque le certbot de Lets Encrypt. Il va vous demander :

  • une adresse mail de contact (pour vous prévenir d'un problème, comme l'expiration du certificat)
  • le nom du domaine. Attention, ne pas mettre https://, mais seulement le nom sous la forme votresupernomde.domaine

Anonymisation des données

Chaque page dotée du tag fairlytics envoie des données qui sont anonymisées avant leur stockage dans la base de données ElasticSearch.

Voici un exemple d'enregistrement stocké :

{
               "utm" => "",
    "unique_visitor" => "8f7b34e8947c5cbf72136aa6db15bafacbc9018bbf4aa05f95079964353c2d39",
          "hostname" => "le-site-visite.fr",
     "fairlyticskey" => "uaxnijazc983NSIUH8aezfazef763BIU98635oizec",
              "href" => "https://le-site-visite.fr/",
          "os_patch" => "7",
                "os" => "Mac OS X",
              "page" => "/",
            "device" => "Mac",
          "@version" => "1",
             "geoip" => {
                    "location" => {
                    "lon" => -1.2734,
                    "lat" => 48.1236
                },
                "timezone" => "Europe/Paris",
                "region_name" => "Manche",
                "country_name" => "France"
            },
            "name" => "Safari",
            "referrer" => "",
            "session" => "ea00fce002360560960d274a8c64818a0f09dddf4d10ceb7c9dd9a2970abb4b6",
            "@timestamp" => 2023-01-12T14:59:14.512923Z
}

L'identifiant de visiteur unique est le chiffrement de :

  • l'adresse IP
  • le nom du site visité ("hostname")
  • une clé de chiffrement fixée aléatoirement lors de l'installation de Fairlytics
  • la date du jour

Puis on jette l'adresse IP.

L'id de session est élaboré en observant l'écart temporel entre 2 hits d'un même identifiant de visiteur unique. Lorsque cet écart est supérieur à la durée max configurée, on génère un nouvel id de session aléatoire.

Ainsi on ne peut pas savoir :

  • si un visiteur a consulté 2 sites différents monitorés par Fairlytics
  • si un visiteur est revenu sur le même site un autre jour

About

Mesure d'audience sans cookie

License:Apache License 2.0


Languages

Language:TypeScript 58.9%Language:SCSS 24.2%Language:MDX 7.0%Language:HTML 3.3%Language:Makefile 1.9%Language:JavaScript 1.3%Language:CSS 1.2%Language:Shell 1.1%Language:Dockerfile 1.0%