7.3 KiB
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
📋 Métadonnées
| Métadonnée | Valeur |
|---|---|
| Site web | ackee.electerious.com |
| GitHub | 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é)
# 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 :
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)
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 :
truepour 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 :
<script async src="https://ackee.example.com/tracker.js"
data-ackee-server="https://ackee.example.com"
data-ackee-domain-id="VOTRE-DOMAIN-ID"></script>
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_USERNAMEetACKEE_PASSWORD(valeurs par défaut = vecteur d'intrusion). - Configurer
ACKEE_ALLOW_ORIGINstrictement (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 :
mongodumpquotidien, 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.jset/api/....
📚 Ressources
- Documentation officielle
- GitHub electerious/Ackee
- Demo live
- API GraphQL reference
- Tutoriel auto-hébergement