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

198 lines
7.4 KiB
Markdown

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