198 lines
7.4 KiB
Markdown
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]]
|