GUI · API · MCP

Panneau de commande Cipi et API : que sont les deux ? extensions facultatives débloquer

Par · Dernière mise à jour : · lecture gratuite, pas de paywall

Cipi est et reste CLI-premier. Tout ce dont un serveur a besoin (applications, bases de données, SSL, déploiements, sauvegardes) n'en fait qu'un. cipi commande via SSH. Depuis la version 4.7.0, vous pouvez ajouter deux packages facultatifs : cipi/api et cipi/gui. Ce guide explique ce qu’ils débloquent ensemble et pourquoi ni l’un ni l’autre n’est requis.

Dans ce guide
  1. Deux extensions, zéro verrouillage
  2. Le API est la colonne vertébrale
  3. Que pouvez-vous faire avec le API
  4. Jetons Sanctum et capacités granulaires
  5. Travaux asynchrones et sondages
  6. MCP : Cipi à l'intérieur du curseur, VS Code et Claude
  7. Le panneau UI comme cockpit multi-serveur
  8. Ce que vous pouvez faire dans le navigateur
  9. Poste de pilotage du serveur
  10. Comment les installer
  11. Liste blanche SSL, 2FA et IP
  12. Cas d'usage : équipes, agences, hébergement, IA
  13. cipi-cli et WHMCS sur le même fil
  14. FAQ

Deux extensions, zéro verrouillage

Cipi n'est pas un panneau qui cache un CLI. Il s'agit d'un CLI qui, si vous le souhaitez, expose un API et un tableau de bord. Ignorez les deux packages et le serveur fonctionne exactement comme avant : pas de démon supplémentaire, pas de surface Web, rien d'écoute. Installez uniquement ce dont vous avez besoin.

Tout ce que vous faites dans le navigateur, vous pouvez le faire depuis le shell. Tout ce que vous faites depuis le shell, vous pouvez l'automatiser sur plus de HTTP. Les deux packages sont clients de la même surface, pas d'un second Cipi.

La source normative reste documents: Avancé → cipi api et Panneau de commande (GUI). Ce guide est l'histoire des capacités, pas de chaque point de terminaison.

Le API est la colonne vertébrale

Activez le API avant de toucher le GUI. Un commandement prévoit Laravel sous /opt/cipi/api, le Nginx vhost, SSL, une file d'attente SQLite et cipi-queue.service:

$ cipi api api.example.com
$ cipi api ssl
$ cipi api token create

Le paquet est au niveau du serveur automatisation - distincte de la Cipi Agent (cipi/agent à l'intérieur de chaque Laravel application). L'agent couvre les webhooks par application, la santé et MCP. Le API couvre l'ensemble : applications, bases de données, PHP, SSH, services, SMTP, contrôles de santé, liste blanche IP.

PHP-FPM fonctionne comme www-data et exécute Cipi commandes via sudo sur une liste blanche explicite dans /etc/sudoers.d/cipi-api. Les mots de passe du coffre-fort et MariaDB restent dans Cipi, pas dans PHP. Après cipi self-update, si /docs ou /mcp rendre HTTP 500, cipi api fix-permissions répare le stockage et la propriété SQLite.

Que pouvez-vous faire avec le API

La surface OpenAPI couvre le cycle de vie d'un serveur Cipi. Les lectures sont synchrones ; écrit (créer, modifier, supprimer, déployer, SSL, alias, www, bases de données) return 202 Accepted avec un job_id.

Zone Ce qu'il débloque
Applications Laravel et CRUD personnalisé, Octane/FrankenPHP, moteur de base de données au moment de la création, suspendre/reprendre la suspension (HTTP 503), renommer le domaine principal, HTTP Auth. de base, journaux paginés, .env, Composer auth.json, Artisan et sur liste blanche app run, déployer-config, recréer les webhooks Git
Déployer Déploiement sans temps d'arrêt, restauration, déverrouillage d'une version bloquée
Alias et WWW Alias, homologue apex/www, force-to-root / force-from-root, suppression des redirections
SSL Let's Encrypt (SAN sur primaire + alias) et forcer HTTPS sans réémettre le certificat
Bases de données MariaDB et PostgreSQL : liste/moteurs, création, suppression, sauvegarde, restauration, mot de passe, installation du moteur et paramètres par défaut du système
Serveur GET /api/status (CPU, RAM, disque, services, PHP pools, nombre d'applications) — le même instantané que cipi status
Poste de pilotage PHP 8.3/8.4/8.5 (installer, supprimer, par défaut), clés SSH, redémarrages de service, SMTP, contrôles de santé HTTP, liste blanche IP activée /api/* et /mcp

Exemple minimal : répertorier les applications et lire l'état du serveur :

export CIPI_API_URL="https://api.example.com"
export CIPI_API_TOKEN="1|your-sanctum-token"

curl -sS "${CIPI_API_URL}/api/apps" \
  -H "Authorization: Bearer ${CIPI_API_TOKEN}" \
  -H "Accept: application/json"

curl -sS "${CIPI_API_URL}/api/status" \
  -H "Authorization: Bearer ${CIPI_API_TOKEN}"

Créez une application Laravel Octane (asynchrone, API 1.13+ / Cipi 5.0+):

curl -sS -X POST "${CIPI_API_URL}/api/apps" \
  -H "Authorization: Bearer ${CIPI_API_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "shop.example.com",
    "repository": "git@github.com:you/shop.git",
    "branch": "main",
    "octane": true,
    "engine": "mariadb"
  }'

Interface utilisateur Swagger sur https://api.example.com/docs est le terrain de jeu : essayez chaque opération avec le même jeton, inspectez les requêtes/réponses et les types de tâches. La spécification vit à public/api-docs/openapi.json.

Jetons Sanctum et capacités granulaires

L'authentification est Laravel Sanctum. Chaque jeton porte un ou plusieurs capacités: un token CI ne peut contenir que deploy-manage et apps-view; un jeton de panneau a besoin de l'ensemble complet. cipi api token create lit la liste canonique du package (identique à php artisan cipi:token-abilities).

Les capacités couvrent les applications (view/create/edit/delete/suspend/basicauth/env/auth/artisan/run/deploy-config), les alias, www, déployer, SSL, les bases de données, le statut, MCP et — depuis API 1.15+ — PHP, SSH, services, SMTP, santé et liste blanche IP. Révoquer avec cipi api token revoke <id>. Ne réutilisez pas un jeton à pleine capacité dans un pipeline public.

Travaux asynchrones et sondages

Un déploiement ou db create n'habite pas dans la requête HTTP : le API met le travail en file d'attente et renvoie 202 + job_id. Sondage GET /api/jobs/{id} pour le statut, CLI output et exit_code. C'est la même superposition que les spectacles GUI et la même boucle que cipi-cli jobs wait.

curl -sS -X POST "${CIPI_API_URL}/api/apps/myapp/deploy" \
  -H "Authorization: Bearer ${CIPI_API_TOKEN}"

curl -sS "${CIPI_API_URL}/api/jobs/JOB_ID" \
  -H "Authorization: Bearer ${CIPI_API_TOKEN}"

Depuis Cipi 4.6.3 le package API est mis à jour tous les soirs à 04h30 (cipi api update), afin que les points de terminaison REST et les outils MCP restent à jour sans étape manuelle.

MCP : Cipi à l'intérieur du curseur, VS Code et Claude

Le serveur MCP à /mcp (Streamable HTTP) expose 50+ outils: applications, alias, www, bases de données, déploiement, SSL, Basic Auth, cockpit serveur, .env / auth.json / app-run / deploy-config, jobs, logs and ServerStatus. À partir de API 1.11.1+ un jeton avec seulement mcp-access est suffisant pour chaque MCP outil — les capacités REST par point de terminaison ne sont pas vérifiées /mcp.

Configuration du curseur dans ~/.cursor/mcp.json:

{
  "mcpServers": {
    "cipi-api": {
      "type": "http",
      "url": "https://api.example.com/mcp",
      "headers": {
        "Authorization": "Bearer 1|your-token"
      }
    }
  }
}

VS Code (Copilot) utilise le même transport HTTP ; Claude Code ajoute le serveur avec claude mcp add --transport http; Claude Desktop passe par mcp-remote. Les outils de journalisation suppriment les secrets communs avant leur retour. Le même protocole, côté application, est ce que le Agent intégré à l'application MCP expose — deux surfaces, une norme.

Le panneau UI comme cockpit multi-serveur

Le GUI est une fine couche visuelle au-dessus du API. Il vit dans /opt/cipi/gui, il s'agit du Laravel 12 et il ne conserve aucun travailleur de file d'attente locale : il s'authentifie auprès du API de chaque serveur, répartit les tâches et interroge leur statut. Démontez le panneau et reconstruisez-le ailleurs sans toucher à un serveur géré.

Une connexion, plusieurs serveurs. Enregistrez le point de terminaison + le jeton pour les boîtes de production, de préparation et client, puis basculez entre eux. C'est le cockpit qu'il vous faut lorsque vous avez plus d'un VPS et que vous ne souhaitez pas ouvrir dix sessions SSH.

Le panneau a besoin que le API soit allumé chaque serveur que vous souhaitez gérer, avec un jeton Bearer à pleine capacité (inclure www-manage, status-view et, pour les outils d'application, apps-env, apps-auth, apps-artisan, apps-run, apps-deploy-config). Sans le API, le GUI est une coquille vide.

Ce que vous pouvez faire dans le navigateur

Poste de pilotage du serveur

À partir de API 1.15+ / Cipi 5.0.6+ le panel ne gère pas que les applications : il gère la box.

C'est cet élément qui fait du GUI une véritable alternative à un panel SaaS, sans déplacer la source de vérité hors du serveur.

Comment les installer

Ordre requis : API sur chaque serveur géré, puis le GUI partout où vous souhaitez utiliser le navigateur. Le GUI peut vivre sur le même boîtier ou sur une petite machine dédiée — ce n'est qu'un client HTTP.

# on every server you will manage
$ cipi api api.example.com
$ cipi api ssl
$ cipi api token create

# on the panel box (can be the same machine)
$ cipi gui panel.example.com
$ cipi gui ssl

cipi gui demande le premier e-mail et le mot de passe de l'administrateur (minimum 12 caractères, majuscules, minuscules, chiffres, spéciaux, pas de 4 caractères identiques d'affilée). La configuration arrive /etc/cipi/gui.json. PHP-FPM, vhost et planificateur proviennent de l'installateur : vous ne démarrez pas Laravel à la main.

Mises à jour : cipi gui update / cipi api update pour la mise à jour logicielle quotidienne ; upgrade pour une reconstruction complète. cipi gui refresh-theme recompile uniquement le thème. cipi gui remove désinstalle le vhost, le pool et le planificateur – les serveurs gérés restent intacts. cipi gui reset-user est le chemin de récupération si un administrateur perd 2FA.

Liste blanche SSL, 2FA et IP

Le panneau démarre le HTTP : exécutez immédiatement Let's Encrypt avec cipi gui ssl (renouvellement automatique, même ACME que les domaines d'application). La connexion est basée sur la session ; chaque administrateur peut activer TOTP2FA (Google Authenticator, 1Password, Aegis) à partir de leur profil — opt-in, non obligatoire.

Limitez qui peut parler aux API et MCP :

$ cipi api ip-whitelist add 203.0.113.10
$ cipi api ip-whitelist set --ips=203.0.113.0/24,2001:db8::/32
$ cipi api ip-whitelist show --json

Fichier par défaut : /etc/cipi/api-ip-whitelist avec * (permettre tout). Les clients rejetés obtiennent 403. Les équivalents REST vivent sous /api/ip-whitelist; une restriction PUT ajoute automatiquement l'adresse IP de l'appelant, sauf si ensure_client_ip: false.

Cas d'usage : équipes, agences, hébergement, IA

cipi-cli et WHMCS sur le même fil

Le CLIclient est un binaire Go qui parle REST depuis votre ordinateur portable : applications, alias, déploiement, SSL, bases de données, statut global, tâches. Mêmes jetons, mêmes profils multi-serveurs. Vous préférez le terminal ? Vous n'avez pas besoin du GUI. Vous préférez le navigateur ? Vous n'avez pas besoin cipi-cli. Besoin des deux à des jours différents ? Même API.

$ cipi-cli api token add prod
$ cipi-cli prod apps list
$ cipi-cli prod deploy myapp
$ cipi-cli status

WHMCS est le troisième client officiel : provisionnement d'hébergement sans Composer, drop-in dans le dossier modules. Aucun des trois ne remplace cipi sur le serveur - ils le distant.

Essayez les deux extensions sur un Cipi VPS

Cipi reste gratuit, open-source CLI. API et GUI sont des packages opt-in : installez-les lorsque vous avez besoin d'un navigateur, d'un CI webhook ou d'un agent IA — et supprimez-les lorsque vous n'en avez pas besoin.

wget -O - https://cipi.sh/setup.sh | coup

Questions fréquemment posées

Ai-je besoin du panneau d'interface utilisateur pour utiliser Cipi ?

Le numéro Cipi est CLI-premier. Sans cipi api et sans cipi gui le serveur fait toujours le même travail : applications, déploiements, SSL, sauvegardes, pare-feu. Les deux packages sont des extensions opt-in depuis la v4.7.0.

Puis-je utiliser le GUI sans le API ?

Non. Le panel est un client HTTP du REST API. Chaque serveur géré a besoin cipi api et un jeton Porteur avec les capacités que vous souhaitez exposer. Sans le API, il n'y a rien à afficher.

Le GUI remplace-t-il le CLI sur le serveur ?

Non. Chaque action du navigateur est la même. cipi commande exécutée via sudo par le panneau API. Vous pouvez continuer à travailler sur SSH en parallèle, sans état de division du cerveau.

Quelle est la différence entre REST, MCP et cipi-cli ?

Le même API, trois clients. REST est destiné aux scripts, CI et WHMCS. MCP est destiné aux agents IA (Curseur, VS Code, Claude). cipi-cli est le terminal de l'ordinateur portable. Le GUI est le quatrième client, conçu pour les humains.

Puis-je gérer plusieurs serveurs à partir d’un seul panneau ?

Oui. Enregistrez le point de terminaison et le jeton pour chaque boîte et basculez entre eux avec la même connexion. Le panel est apatride par rapport à votre infrastructure : il ne stocke pas l'état du serveur, il le lit dans le API.

Continuez à lire