Files
wiki/Catalogue-Self-Hosted/apps/app-ackee.md
T
2026-06-09 18:40:21 +02:00

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 : 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 :

<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 :

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

🔗 Pages Liées