--- title: xyOps created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, monitoring, automation, orchestration, php, server-management, homelab, msp] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Monitoring, https://github.com/pixlcore/xyops] --- # 📊 xyOps > **L'alternative lĂ©gĂšre Ă  Ansible, Puppet et Nagios combinĂ©s** : xyOps orchestre vos serveurs, exĂ©cute vos jobs planifiĂ©s, surveille vos services et envoie vos alertes — le tout dans une interface web unique Ă©crite en PHP, sans la complexitĂ© d'une stack d'entreprise. ## 📋 Informations GĂ©nĂ©rales | Champ | Valeur | | :--- | :--- | | **Site web** | [pixlcore.com/xyops](https://www.pixlcore.com/xyops) | | **GitHub** | [pixlcore/xyops](https://github.com/pixlcore/xyops) | | **License** | MIT | | **Langage** | PHP | | **Étoiles GitHub** | 4 313 ⭐ | | **DerniĂšre MAJ** | 2026-06-05 | | **CatĂ©gorie** | [[cat-monitoring\|Monitoring]] | ## 📝 Description **xyOps** est une **suite d'automatisation et de monitoring de serveurs** Ă©crite en PHP par PixlCore (la mĂȘme Ă©quipe derriĂšre PixlDashboard et WebTools). Son parti pris : remplacer la triplette « Ansible pour la config, Puppet/Chef pour l'Ă©tat, Nagios/Zabbix pour le monitoring » par **une seule plateforme web**, accessible depuis un navigateur, qui pousse des scripts et des checks sur les agents installĂ©s sur vos machines. L'architecture est simple : un **serveur central xyOps** hĂ©berge l'UI, planifie les jobs, collecte les mĂ©triques et dĂ©clenche les alertes ; des **agents xyOps** (Windows, macOS, Linux) s'enregistrent auprĂšs du serveur via une clĂ© d'API unique, reçoivent des **jobs** (commandes shell, scripts PowerShell/Bash, PlayJobs xyOps) et renvoient leur sortie + statut. Les agents peuvent aussi remonter des **checks de monitoring** (CPU, RAM, disk, services, processus, URLs) et **dĂ©clencher des alertes** en cas de dĂ©passement de seuils. Le format « **PlayJob** » est l'ingrĂ©dient magique : ce sont des jobs structurĂ©s en sections (`info`, `init`, `run`, `done`, `error`, `cleanup`) qui peuvent ĂȘtre enchaĂźnĂ©s, parallĂ©lisĂ©s, conditionnĂ©s sur le rĂ©sultat d'un autre job. Pour un homelabber qui veut provisionner un nouveau serveur, dĂ©ployer une stack Docker, sauvegarder un dossier, puis vĂ©rifier que le service rĂ©pond, c'est un workflow dĂ©claratif et re-jouable. - ✅ **Multi-plateforme** : agents pour **Linux, Windows, macOS** (binaires natifs + scripts) - ✅ **Push-based** : pas de port Ă  ouvrir, l'agent initie les connexions sortantes - ✅ **ExĂ©cution de jobs** : shell, PowerShell, scripts arbitraires, PlayJobs structurĂ©s - ✅ **Planification riche** : cron, dĂ©clencheurs (autre job terminĂ©), manuel, webhooks - ✅ **Monitoring intĂ©grĂ©** : CPU/RAM/disk, services, processus, ports, URLs HTTP, certificats SSL - ✅ **Alertes multi-canaux** : Email, Slack, Discord, Telegram, Ntfy, Gotify, Pushover, webhook - ✅ **UI web moderne** : dashboard, vue des jobs en temps rĂ©el, historique, logs - ✅ **Multi-tenants** : plusieurs organisations / Ă©quipes dans la mĂȘme instance - ✅ **API REST** complĂšte pour intĂ©gration / automation - ✅ **Packages** : Docker (non officiel mais classique), binaires PHP auto-hĂ©bergĂ©s **Public cible** : **homelabbers, MSP, petites Ă©quipes DevOps** qui veulent automatiser 5-50 serveurs sans se former Ă  Ansible + AWX + Prometheus + Alertmanager. Pour 200+ nƓuds, des outils comme Ansible AWX, Rundeck ou SaltStack restent plus adaptĂ©s. **Limites Ă  connaĂźtre** : le projet est **mono-mainteneur** (PixlCore, trĂšs actif mais Ă©quipe rĂ©duite), la documentation est moins Ă©toffĂ©e que celle d'Ansible, et l'Ă©cosystĂšme de modules communautaires est limitĂ© (on Ă©crit ses propres jobs). L'**agent doit ĂȘtre installĂ©** sur chaque machine surveillĂ©e (Ă  la diffĂ©rence de [[app-pulse]] qui n'a besoin que d'un accĂšs API). ## 🚀 Installation ### Option 1 : Docker Compose ```yaml # docker-compose.yml version: '3.8' services: xyops: image: ghcr.io/pixlcore/xyops:latest container_name: xyops restart: unless-stopped ports: - "8888:80" # Web UI environment: - XYOX_VERSION=latest - XYOX_HOSTNAME=xyops.example.com volumes: - xyops-data:/var/www/html/data labels: - "traefik.enable=true" - "traefik.http.routers.xyops.rule=Host(`xyops.example.com`)" - "traefik.http.routers.xyops.entrypoints=websecure" - "traefik.http.routers.xyops.tls.certresolver=letsencrypt" volumes: xyops-data: ``` ### Option 2 : Installation native (PHP 8.x + Nginx) ```bash # PrĂ©requis : PHP 8.1+ avec extensions curl, mbstring, mysqli, pdo, openssl sudo apt install -y php-fpm php-curl php-mbstring php-mysql php-sqlite3 nginx # TĂ©lĂ©charger la derniĂšre release wget https://github.com/pixlcore/xyops/releases/latest/download/xyops.tar.gz sudo mkdir -p /var/www/xyops sudo tar -xzf xyops.tar.gz -C /var/www/xyops sudo chown -R www-data:www-data /var/www/xyops # Configurer Nginx (virtual host pointant sur /var/www/xyops) # Voir https://github.com/pixlcore/xyops/blob/main/INSTALL.txt ``` xyOps utilise par dĂ©faut **SQLite** (zĂ©ro config), ce qui est parfait pour un homelab. Pour de la production Ă  fort volume, basculer sur **MySQL/MariaDB** est supportĂ© nativement. ### Installation d'un agent ```bash # Sur le serveur Ă  superviser (Linux) curl -s https://xyops.example.com/api/install/linux | bash # Windows : tĂ©lĂ©charger l'installateur depuis l'UI xyOps > Agents > New # macOS : Ă©quivalent, pkg ou commande curl ``` L'agent s'enregistre automatiquement, rĂ©cupĂšre ses jobs planifiĂ©s, et Ă©tablit un **WebSocket** persistant vers le serveur (push, pas de port Ă  ouvrir cĂŽtĂ© agent). ## ⚙ Configuration Initiale 1. **AccĂ©der Ă  l'UI** : `https://xyops.example.com` (ou `http://IP:8888`) 2. **CrĂ©er le compte admin** au premier lancement (formulaire web) 3. **CrĂ©er un premier serveur** : Servers → Add Server - Hostname, IP, OS, tags (ex : `prod`, `web`, `db`) - xyOps gĂ©nĂšre une **clĂ© d'enregistrement** que l'agent utilisera 4. **Installer l'agent** sur le serveur (cf. bloc ci-dessus) et vĂ©rifier la connexion (badge vert dans Servers) 5. **CrĂ©er un PlayJob** : Jobs → New PlayJob - Sections `init` (prĂ©paration) et `run` (commande principale) - Exemple `run` : `systemctl status nginx | head -5` 6. **Planifier le job** : Cron `*/5 * * * *` ou « on server check failure » 7. **Configurer un check monitoring** : Monitors → New Monitor - Type « HTTP » : URL `https://example.com`, code attendu `200`, intervalle 60 s - Lier au canal de notification (Telegram/Discord) 8. **Tester** : arrĂȘter Nginx sur un serveur et vĂ©rifier que l'alerte arrive en moins d'une minute ## 🔄 Alternatives ### Open Source - **Ansible** + AWX — la rĂ©fĂ©rence configuration management, mais sans UI de monitoring intĂ©grĂ©e - **Puppet** / **Chef** / **SaltStack** — enterprise, plus lourds Ă  apprendre - **Rundeck** — orchestration de jobs avec UI web, plus connu en entreprise - **Foreman** — provisionning + config management, orientĂ© datacenters - **Cockpit** — UI web systĂšme pour Linux, plus simple mais moins puissant - [[app-uptime-kuma]] — pour l'uptime check uniquement - [[app-netdata]] — monitoring systĂšme sans orchestration - [[app-prometheus]] + Alertmanager — alerting pro, mais sans jobs d'automatisation ### Comparaison xyOps vs solutions d'orchestration | CritĂšre | xyOps | Ansible AWX | Rundeck | Puppet Enterprise | | :--- | :--- | :--- | :--- | | **Langage** | PHP | Python (playbooks YAML) | Java | Ruby | | **Push vs Pull** | Push (agent) | Push (SSH) | Push (SSH/agent) | Pull (agent) | | **UI web** | ✅ intĂ©grĂ©e | ✅ AWX | ✅ intĂ©grĂ©e | ✅ (Enterprise) | | **Monitoring intĂ©grĂ©** | ✅ natif | ❌ (Ă  ajouter) | ⚠ basique | ⚠ via PuppetDB | | **Alertes intĂ©grĂ©es** | ✅ multi-canal | ❌ (Ă  ajouter) | ⚠ plugins | ⚠ | | **Multi-OS** | ✅ Linux/Win/macOS | ✅ (SSH) | ✅ (SSH) | ✅ (agent) | | **Courbe d'apprentissage** | Faible | Moyenne | Moyenne | ÉlevĂ©e | | **ScalabilitĂ©** | 5-50 serveurs | Centaines | Centaines | Milliers | | **License** | MIT | Apache-2.0 | Apache-2.0 | PropriĂ©taire (CE GPL) | | **CommunautĂ©** | Petite | Énorme | Grande | Grande | **Verdict** : xyOps est **la bonne pioche** pour qui veut **un seul outil** pour orchestrer, surveiller et alerter un parc modeste sans empiler 5 produits. Pour un grand parc avec des playbooks complexes, Ansible AWX reste incontournable. Pour un monitoring pur, [[app-uptime-kuma]] ou [[app-netdata]] sont plus spĂ©cialisĂ©s. ### PropriĂ©taires (ce que xyOps remplace) - **TeamCity** (JetBrains) — orchestration CI/CD, cher en enterprise - **Octopus Deploy** — releases multi-environnements - **StackStorm** — event-driven automation, plus complexe - **Puppet Enterprise** — paywall sur les fonctionnalitĂ©s avancĂ©es - **JFrog Platform** — DevOps enterprise complet ## 🔐 SĂ©curitĂ© - **Activer HTTPS** via [[app-traefik]] — xyOps expose des credentials et des sorties de commandes sensibles (l'UI peut montrer des logs contenant des mots de passe) - **Utiliser des secrets xyOps** : ne jamais Ă©crire un mot de passe en clair dans un PlayJob ; utiliser le store de secrets natif (chiffrĂ© au repos) - **Restreindre l'accĂšs Ă  l'UI** : auth locale + IP allowlist ; limiter les **rĂŽles** (Admin, Operator, Viewer) au strict nĂ©cessaire - **Agents** : la clĂ© d'enregistrement se saisit une seule fois ; si compromise, rĂ©voquer depuis l'UI. Activer le **chiffrement TLS** pour le WebSocket agent → serveur (par dĂ©faut) - **Auditer les jobs** : qui peut crĂ©er un PlayJob ? qui peut l'exĂ©cuter sur quel serveur ? xyOps log tout, mais il faut le lire (UI > Audit Log) ## 📚 Ressources - [GitHub pixlcore/xyops](https://github.com/pixlcore/xyops) - [Site officiel](https://www.pixlcore.com/xyops) - [Documentation](https://github.com/pixlcore/xyops/blob/main/README.md) - [INSTALL.txt](https://github.com/pixlcore/xyops/blob/main/INSTALL.txt) ## Pages LiĂ©es - [[cat-monitoring]] — CatĂ©gorie Monitoring - [[app-uptime-kuma]] — Pour l'uptime check - [[app-netdata]] — MĂ©triques systĂšme temps rĂ©el - [[app-prometheus]] — Stack cloud-native - [[app-glances]] — Monitoring terminal - [[app-traefik]] — Reverse proxy HTTPS - [[observabilite]] — Concepts monitoring/alerting - [[checklist-monitoring-minimal]] — Checklist de dĂ©ploiement