---
title: ZoneMinder
created: 2026-06-08
updated: 2026-06-08
type: app
tags: [catalogue, nvr, app-marathon-batch-c]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=NVR&app=zoneminder, https://zoneminder.com/]
---

# 📹 ZoneMinder

> **Vétéran des NVR open source** : depuis 2003, support massif de caméras IP/USB, Linux natif, ultra-stable.

## 📋 Informations Générales

| Champ | Valeur |
| :--- | :--- |
| **Site web** | [zoneminder.com](https://zoneminder.com/) |
| **GitHub** | [ZoneMinder/zoneminder](https://github.com/ZoneMinder/zoneminder) |
| **License** | GPL-2.0 |
| **Langage** | C++ / Perl / PHP |
| **Étoiles GitHub** | 5.2k ⭐ |
| **Catégorie** | [[cat-nvr\|NVR]] |

## 📝 Description

**ZoneMinder** est le **NVR open source le plus ancien** (2003), toujours activement maintenu.

- ✅ **Linux natif** : Ubuntu, Debian, Fedora, Arch
- ✅ **Multi-caméras** : IP, USB, RTSP, ONVIF
- ✅ **Détection mouvement** : par zones, filtrage fausses alertes
- ✅ **Enregistrement** : continu, motion, schedule
- ✅ **API + WebSocket** : intégrations
- ✅ **ZM NVR (zmNinja)** : app mobile populaire
- ✅ **zmeventnotification** : hook scripts, ML detection
- ✅ **Stable** : testé sur des millions de serveurs
- ✅ **MySQL/MariaDB** : stockage événements
- ⚠️ **UI austère** : fonctionnel mais pas moderne
- ⚠️ **Config complexe** : doc à connaître

**Différence vs Frigate** : ZoneMinder = mature, généraliste, CPU. Frigate = moderne, AI-first, GPU recommandé. Pour qui: utilisateurs Linux qui veulent **un NVR éprouvé** sans GPU.

## 🚀 Installation

### Docker Compose (recommandé)

```yaml
version: '3.8'
services:
  zoneminder:
    image: zoneminderhq/zoneminder:latest
    container_name: zoneminder
    restart: unless-stopped
    environment:
      - TZ=Europe/Paris
      - PUID=1000
      - PGID=1000
      - ZM_DB_HOST=db
    volumes:
      - zoneminder_data:/config
      - zoneminder_events:/var/cache/zoneminder/events
    ports:
      - 9081:80
    depends_on:
      - db
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.zoneminder.rule=Host(`zm.example.com`)"
      - "traefik.http.routers.zoneminder.entrypoints=websecure"
      - "traefik.http.routers.zoneminder.tls.certresolver=letsencrypt"

  db:
    image: mysql:8.0
    container_name: zoneminder-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: changeme
      MYSQL_DATABASE: zm
      MYSQL_USER: zmuser
      MYSQL_PASSWORD: changeme
    volumes:
      - zoneminder_db:/var/lib/mysql

volumes:
  zoneminder_data:
  zoneminder_events:
  zoneminder_db:
```

## 🔄 Alternatives

### Open Source
- [[app-shinobi]] — NVR Node.js moderne
- [[app-frigate]] — NVR avec AI native
- [[app-viseron]] — NVR Python simple
- [[app-scrypted]] — Hub unifié
- [[app-unblink]] — NVR simple
- [[app-blue-iris]] — Référence Windows (propriétaire)

### Propriétaires
- **Blue Iris** — Référence Windows, ~70$
- **Synology Surveillance Station** — Inclus NAS
- **Hikvision iVMS** — Cloud
- **Milestone XProtect** — Enterprise

## 🔐 Sécurité
- **Auth intégrée** : login/password, **2FA non natif**
- **HTTPS** : obligatoire via Traefik
- **MySQL** : sauvegarder régulièrement
- **API** : tokens à générer
- **CVE anciens** : tenir à jour (Perl/PHP)
- **Network** : VLAN IoT pour caméras
- **Logs** : filtrer les accès

## 📚 Ressources
- [Site officiel](https://zoneminder.com/)
- [Documentation](https://zoneminder.readthedocs.io/)
- [zmNinja (mobile)](https://github.com/pliablepixels/zmNinja)

## Pages Liées
- [[cat-nvr]] — Catégorie NVR
- [[app-frigate]] — Concurrent moderne
- [[app-shinobi]] — Concurrent Node.js
- [[recettes-docker-compose]] — Templates Docker
- [[cameras-rtsp-compatibles]] — Liste caméras
