À propos du projet

Counterscale est un traqueur et un tableau de bord d'analyse web open-source que les utilisateurs auto-hébergent sur Cloudflare. Il est publié sous licence MIT et conçu pour être facile à déployer et à maintenir, le README précisant que son coût de fonctionnement doit être proche de zéro, même avec des niveaux de trafic élevés. Il est principalement propulsé par Cloudflare Workers et Workers Analytics Engine. En date de février 2025, Workers Analytics Engine a une rétention maximale de 90 jours, le tableau de bord ne peut donc afficher que les 90 derniers jours de données enregistrées. Counterscale propose également un stockage à long terme des données dans un bucket R2 utilisant des fichiers Apache Arrow. Ce stockage à long terme est activé par défaut et peut être désactivé via le CLI. L'installation nécessite macOS ou Linux, Node v20 ou supérieur, et un compte Cloudflare actif. Avant le déploiement, les utilisateurs ont besoin d'un sous-domaine Cloudflare Workers, de l'activation de la bêta Analytics Engine sur le compte, et d'un jeton API Cloudflare avec au moins les permissions Account.Account Analytics. Le déploiement commence par npx wrangler login, suivi de npx @counterscale/cli@latest install. L'installateur demande le jeton API et demande si le tableau de bord doit être protégé par un mot de passe. Choisir oui est recommandé pour les déploiements publics ; choisir non laisse le tableau de bord accessible publiquement. Après l'installation, l'application serveur est déployée sur un sous-domaine workers.dev. Pour enregistrer le trafic du site web, Counterscale propose plusieurs méthodes d'intégration. Le chargeur de script rend tracker.js disponible à l'URL déployée. Les utilisateurs peuvent ajouter une balise script avec un id counterscale-script, un attribut data-site-id et la source tracker.js. Le traqueur est également publié en tant que package npm, @counterscale/tracker. Il peut être initialisé avec un site ID et une URL de reporter. Le module client expose des méthodes telles que init, isInitialized, getInitializedClient, trackPageview et cleanup. Un module serveur distinct, @counterscale/tracker/server, prend en charge le suivi analytique backend. Il utilise l'API fetch au lieu de XMLHttpRequest, ne possède aucune fonctionnalité dépendante du DOM, nécessite des paramètres explicites d'URL et de nom d'hôte, et fonctionne en mode "fire-and-forget" afin que les erreurs de suivi ne lancent pas d'exceptions. Counterscale inclut des options avancées. Le suivi automatique des pages peut être désactivé en réglant autoTrackPageviews sur false, après quoi trackPageview peut être appelé manuellement. L'URL de déploiement peut également être placée derrière un domaine personnalisé. Le CLI fournit des commandes pour l'installation, l'authentification et la gestion du stockage. La commande install prend en charge un mode avancé pour personnaliser le nom du worker et le jeu de données analytiques, ainsi que la journalisation détaillée. Les sous-commandes d'authentification incluent enable, disable et roll. Les sous-commandes de stockage incluent enable et disable. La mise à jour consiste généralement à relancer l'installateur CLI ; les versions majeures peuvent comporter des étapes supplémentaires décrites dans les notes de version. Pour le développement local, Counterscale ne possède qu'une seule base de données : le jeu de données Cloudflare Analytics Engine, communiqué via HTTP en utilisant l'API de Cloudflare. Il n'y a pas de base de données de test locale, donc les écritures locales sont sans effet (no-op) et les lectures proviennent du jeu de données Analytics Engine de production. Cloudflare Analytics Engine utilise l'échantillonnage pour rendre l'ingestion et l'interrogation de volumes élevés abordables à grande échelle, à l'instar d'autres outils d'analyse.