---
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](https://selfh.st/apps/?tag=web-analytics)

## 📋 Métadonnées

| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | [openwebanalytics.com](https://www.openwebanalytics.com/) |
| **GitHub** | [github.com/Opendatasoft/Open-Web-Analytics](https://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é)

```yaml
# 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 :

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

### Option 2 : Installation manuelle (LAMP)

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

```cron
*/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 :

```html
<!-- 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** :
- [[app-matomo]] — descendant direct d'OWA, plus mature
- [[app-umami]] — moderne, Node.js
- [[app-plausible]] — privacy-first, Elixir
- [[app-ackee]] — minimaliste, Node.js
- [[app-goatcounter]] — ultra-léger, Go
- [[app-rybbit]] — TypeScript moderne
- [[app-litlyx]] — TypeScript simple
- [[app-swetrix]] — TypeScript Plausible-like
- [[app-vince]] — Go minimaliste

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

- [Site officiel](https://www.openwebanalytics.com/)
- [GitHub Opendatasoft/Open-Web-Analytics](https://github.com/Opendatasoft/Open-Web-Analytics)
- [Documentation](https://github.com/Opendatasoft/Open-Web-Analytics/wiki)
- [Plugin WordPress](https://wordpress.org/plugins/owa/)
- [API JS](https://github.com/Opendatasoft/Open-Web-Analytics/wiki/JavaScript-API)

## 🔗 Pages Liées

- [[cat-web-analytics]]
- [[recettes-docker-compose]]
- [[app-matomo]]
- [[app-umami]]
- [[app-plausible]]
