--- title: Ackee created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, web-analytics, privacy, self-hosted, analytics, nodejs, graphql, mongodb, minimal] confidence: high contested: false sources: [https://selfh.st/apps/?tag=web-analytics] --- # 🐢 Ackee > Analytics web **minimaliste** et **privacy-first** écrit en Node.js, basé sur GraphQL et MongoDB — pour qui veut l'essentiel sans le superflu. > Source : [selfh.st](https://selfh.st/apps/?tag=web-analytics) ## 📋 Métadonnées | Métadonnée | Valeur | | :--- | :--- | | **Site web** | [ackee.electerious.com](https://ackee.electerious.com/) | | **GitHub** | [github.com/electerious/Ackee](https://github.com/electerious/Ackee) | | **License** | MIT | | **Langage** | Node.js / GraphQL / MongoDB | | **Étoiles** | 385 | | **Dernière MAJ** | 2026-04 | | **Catégorie** | [[cat-web-analytics]] | ## 📝 Description **Ackee** est une solution d'**analyse web auto-hébergeable** particulièrement **légère et minimaliste**. Le projet, maintenu par Tobias Reich (@electerious), se veut une **alternative simple** à Google Analytics, sans cookies, sans tracking tiers, et avec une **interface épurée** qui va droit au but. Ackee est particulièrement apprécié des développeurs qui n'ont besoin que de **métrique simples** : visiteurs uniques, pages vues, durée moyenne, top pages, top référrers. L'architecture est composée de **trois briques** : une **API GraphQL** (Node.js), une **interface web** minimaliste (React), et une **base MongoDB** pour la persistance. Le **tracker JavaScript** côté client ne pèse que **~2 Ko** et n'envoie que le strict minimum : URL, titre, site de référence, résolution d'écran et timestamp. **Aucune donnée personnelle** n'est collectée, ce qui rend Ackee **conforme RGPD nativement**. Fonctionnalités principales : **multi-domaines**, **partage de dashboards en lecture seule** (via token unique), **API GraphQL** complète pour intégrations tierces, **mode sombre**, **tri et filtrage** par période, **visualisation de tendances** sur 7/30/365 jours, **throttling** configurable pour limiter la charge, **détection d'événements** simples. Ackee est idéal pour les **petits à moyens sites** (blogs, portfolios, sites vitrines) et pour les développeurs qui veulent **garder le contrôle** de leurs données sans la complexité d'un [[app-matomo]] ou la lourdeur d'un Google Analytics. Son mode **single-domain** simplifié (sans le mode multi-sites) est aussi un avantage pour les installations minimalistes. ## 🚀 Installation ### Option 1 : Docker Compose (recommandé) ```yaml # docker-compose.yml version: '3.8' services: ackee: image: electerious/ackee:latest container_name: ackee restart: unless-stopped ports: - "3000:3000" environment: ACKEE_MONGODB: mongodb://ackee:***@mongo:27017/ackee ACKEE_USERNAME: admin ACKEE_PASSWORD: changez-moi-maintenant ACKEE_ALLOW_ORIGIN: https://ackee.example.com depends_on: mongo: condition: service_healthy networks: - ackee-net healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/"] interval: 30s timeout: 5s retries: 3 mongo: image: mongo:6 container_name: ackee-mongo restart: unless-stopped environment: MONGO_INITDB_ROOT_USERNAME: ackee MONGO_INITDB_ROOT_PASSWORD: ackee MONGO_INITDB_DATABASE: ackee volumes: - ./mongo-data:/data/db networks: - ackee-net healthcheck: test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"] interval: 10s timeout: 5s retries: 5 networks: ackee-net: driver: bridge ``` Lancement : ```bash docker compose up -d # Accéder à http://localhost:3000 # Se logger avec ACKEE_USERNAME / ACKEE_PASSWORD # Ajouter un domaine et copier l'ID fourni ``` ### Option 2 : Installation manuelle (Node.js) ```bash git clone https://github.com/electerious/Ackee.git cd Ackee npm install npm run build # Configurer les variables d'env ACKEE_MONGODB=mongodb://localhost:27017/ackee npm start ``` Ackee requiert **Node.js 18+**, **MongoDB 5+**, et environ **256 Mo de RAM** minimum. ## ⚙️ Configuration Variables d'environnement principales : - **ACKEE_MONGODB** : URI MongoDB. Format `mongodb://user:pass@host:port/db`. - **ACKEE_USERNAME** / **ACKEE_PASSWORD** : identifiants de l'admin. **À changer impérativement**. - **ACKEE_ALLOW_ORIGIN** : URL du front (CORS). Strict, sans wildcard. - **ACKEE_ALLOW_DOMAIN** : optionnel, restreint l'API à un domaine précis. - **ACKEE_TRACKER** : nom de domaine où le script tracker sera servi (CDN custom possible). - **ACKEE_RESOLVE_IP** : `true` pour activer la géolocalisation IP, `false` (défaut) pour désactiver. - **ACKEE_DETAILED** : active des données plus détaillées par visite. - **ACKEE_THROTTLE** : limite le nombre d'événements par session (défaut : `-1` = illimité). - **ACKEE_IGNORED_BOTS** : active la détection et l'ignore des bots (recommandé). **Snippet de tracking** : ```html ``` Le tracker se charge de manière asynchrone et n'impacte pas les **Core Web Vitals**. ## 🔄 Alternatives **Open source** : - [[app-umami]] — plus complet, base PostgreSQL - [[app-plausible]] — privacy-first, script 1 Ko - [[app-matomo]] — analytics PHP complet - [[app-goatcounter]] — Go ultra-léger - [[app-open-web-analytics]] — PHP traditionnel - [[app-rybbit]] — TypeScript moderne - [[app-litlyx]] — TypeScript simple - [[app-swetrix]] — TypeScript Plausible-like - [[app-vince]] — Go minimaliste **Propriétaire (SaaS)** : - **Google Analytics 4** — leader, RGPD complexe - **Plausible Cloud** — payant - **Fathom Analytics** — simple - **Simple Analytics** — design - **Pirsch** — allemand RGPD - **Umami Cloud** — service officiel Umami - **Counter.dev** — minimaliste freemium (basé sur la philosophie Ackee) ## 🔒 Sécurité - **Changer immédiatement** `ACKEE_USERNAME` et `ACKEE_PASSWORD` (valeurs par défaut = vecteur d'intrusion). - Configurer `ACKEE_ALLOW_ORIGIN` **strictement** (pas de `*`) pour éviter l'exfiltration CSRF via l'API GraphQL. - Mettre Ackee derrière un **reverse proxy HTTPS** (Caddy, Traefik, Nginx). - **MongoDB** : bind sur réseau interne uniquement, **ne jamais exposer le port 27017** sur Internet. - Activer l'**authentification MongoDB** (root user + DB user dédié, c'est le cas dans le compose ci-dessus). - **Sauvegardes MongoDB** : `mongodump` quotidien, snapshots volumes. - Surveiller les **logs d'accès Ackee** : certains scans peuvent envoyer massivement des hits. - Mettre à jour régulièrement (le projet est bien maintenu, mises à jour fréquentes). - Considérer un **rate limiter** en amont pour `/tracker.js` et `/api/...`. ## 📚 Ressources - [Documentation officielle](https://docs.ackee.electerious.com/) - [GitHub electerious/Ackee](https://github.com/electerious/Ackee) - [Demo live](https://ackee.electerious.com/demo) - [API GraphQL reference](https://docs.ackee.electerious.com/#/api) - [Tutoriel auto-hébergement](https://github.com/electerious/Ackee/wiki/Setup) ## 🔗 Pages Liées - [[cat-web-analytics]] - [[recettes-docker-compose]] - [[app-umami]] - [[app-plausible]] - [[app-goatcounter]]