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

7.4 KiB


title: Open Web Analytics created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, web-analytics, privacy, self-hosted, analytics, php, mysql, gdpr, fork] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=web-analytics]

📉 Open Web Analytics

OWA — Suite d'analyse web PHP open source dérivée de la base de code originale de Matomo/Piwik, avec une approche centrée sur le multi-sites et la confidentialité. Source : selfh.st

📋 Métadonnées

Métadonnée Valeur
Site web openwebanalytics.com
GitHub github.com/Opendatasoft/Open-Web-Analytics
License GPL-2.0
Langage PHP 7+ / MySQL
Étoiles 485
Dernière MAJ 2024-09
Catégorie cat-web-analytics

📝 Description

Open Web Analytics (OWA) est une suite d'analyse web open source écrite en PHP, historiquement dérivée de Piwik (l'ancêtre de app-matomo). Le projet est né en 2007 et a depuis été repreneur en 2023 par Opendatasoft, qui maintient désormais activement la base de code. OWA se positionne comme une alternative légère à Google Analytics, plus simple que Matomo à mettre en place.

Fonctionnalités principales : suivi multi-sites natif, tableaux de bord personnalisables, suivi des clics et des événements DOM, rapports e-commerce, rapports de clics sur les liens sortants, tracking des téléchargements, intégration WordPress native (plugin officiel), API REST pour l'intégration avec d'autres outils, dashboard embedded (possibilité d'inclure les rapports dans des applications tierces).

OWA supporte également le geocoding des adresses IP via GeoIP, la détection de bots, le filtrage IP interne/externe, et offre une architecture extensible par modules. L'API JavaScript permet d'enregistrer des actions personnalisées et des objectifs de conversion (goals) sans cookie.

L'écosystème de plugins est cependant beaucoup plus réduit que Matomo, et la fréquence de mise à jour reste modeste. Le projet est en quelque sorte une « valeur refuge » pour qui cherche un outil PHP traditionnel, simple et sans fioritures, avec un niveau de maturité intéressant. Idéal pour un usage intranet ou self-hosted sans dépendance externe.

🚀 Installation

Option 1 : Docker Compose (recommandé)

# docker-compose.yml
version: '3.8'

services:
  owa:
    image: owa/owa:latest
    container_name: owa
    restart: unless-stopped
    ports:
      - "8080:80"
    environment:
      OWA_DB_HOST: db
      OWA_DB_USER: owa
      OWA_DB_PASSWORD: owa_secure
      OWA_DB_NAME: owa
      OWA_DOMAIN: https://owa.example.com
    volumes:
      - ./owa-data:/var/www/html
    depends_on:
      db:
        condition: service_healthy
    networks:
      - owa-net

  db:
    image: mysql:8
    container_name: owa-db
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: owa
      MYSQL_USER: owa
      MYSQL_PASSWORD: owa_secure
      MYSQL_RANDOM_ROOT_PASSWORD: "yes"
    volumes:
      - ./db-data:/var/lib/mysql
    command: --default-authentication-plugin=mysql_native_password
    networks:
      - owa-net
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root"]
      interval: 10s
      timeout: 5s
      retries: 10

networks:
  owa-net:
    driver: bridge

⚠️ Vérifier l'image owa/owa sur Docker Hub — si indisponible, utiliser l'installation manuelle LAMP ci-dessous.

Lancement :

docker compose up -d
# Accéder à http://localhost:8080 et suivre l'assistant

Option 2 : Installation manuelle (LAMP)

git clone https://github.com/Opendatasoft/Open-Web-Analytics.git /var/www/owa
cd /var/www/owa
# Configurer Apache/Nginx + PHP 7.4+ avec extensions : pdo_mysql, gd, mbstring, curl
# Créer la base MySQL : CREATE DATABASE owa CHARACTER SET utf8mb4;
# Accéder à http://votredomaine/owa et suivre l'installateur

OWA requiert PHP 7.4+ (idéalement 8.0+), MySQL 5.7+ ou MariaDB 10.3+, et un serveur web Apache (recommandé, .htaccess natif) ou Nginx (avec rewrite rules).

⚙️ Configuration

  • Permissions fichiers : chown -R www-data:www-data /var/www/owa.
  • Cron : indispensable pour le traitement des logs bruts et l'archivage :
*/15 * * * * www-data php /var/www/owa/modules/base/queue/queue_process.php > /dev/null 2>&1
  • Tracking API : snippet JS à injecter dans le <head> de chaque site :
<!-- OWA Basic -->
<script>
var owa_baseUrl = 'https://owa.example.com/';
var owa_cmds = owa_cmds || [];
owa_cmds.push(['setSiteId', 'votre-site-id']);
owa_cmds.push(['trackPageView']);
owa_cmds.push(['trackClicks']);
owa_cmds.push(['trackDomStream']);
(function() {
  var _owa = document.createElement('script');
  _owa.type = 'text/javascript'; _owa.async = true;
  _owa.src = owa_baseUrl + 'modules/base/js/owa.tracker-combined-min.js';
  var _s = document.getElementsByTagName('script')[0];
  _s.parentNode.insertBefore(_owa, _s);
})();
</script>
  • WordPress : plugin officiel OWA disponible sur le repo WP.
  • GeoIP : télécharger la base MaxMind GeoLite2 et configurer le path.
  • Filtrage : exclure les bots, IP internes, en configuration admin.

🔄 Alternatives

Open source :

Propriétaire (SaaS) :

  • Google Analytics 4 — leader du marché
  • Matomo Cloud — version managée officielle
  • Plausible Cloud — payant, RGPD-by-default
  • Fathom Analytics — SaaS, simple
  • Adobe Analytics — enterprise
  • Woopra — customer journey analytics
  • Mixpanel — product analytics

🔒 Sécurité

  • Changer immédiatement le mot de passe admin par défaut (admin).
  • Activer 2FA si disponible (TOTP) sur le compte admin.
  • Mettre l'application derrière un reverse proxy HTTPS.
  • Le cron PHP doit tourner sous un utilisateur restreint (www-data), pas en root.
  • Sauvegardes MySQL : mysqldump quotidien + snapshots owa-data.
  • Restreindre l'accès à l'admin via IP allowlist ou VPN.
  • Mettre à jour OWA — la cadence est modérée (1 release majeure par an).
  • Désactiver l'exécution PHP dans les dossiers uploadés (uploads/).
  • fail2ban recommandé sur le reverse proxy et SSH.
  • Surveiller les logs d'accès : OWA logge les hits du tracker, utile pour détecter des abus.

📚 Ressources

🔗 Pages Liées