Installation de cipi-cli

cipi-cli est un binaire Go autonome qui communique avec le Cipi REST API de votre local machine. Aucun SSH requis : gérez les applications, les bases de données, les certificats SSL et les déploiements à partir de n'importe quel borne. Les binaires sont disponibles pour Linux et macOS (amd64 et arm64).

Le serveur Cipi doit avoir le package API installé et configuré avant d'utiliser cipi-cli. Voir cipi api pour instructions de configuration.

Télécharger le binaire

Téléchargez la dernière version pour votre plateforme à partir du Page des versions, alors :

coup
chmod +x cipi-cli-*
sudo mv cipi-cli-* /usr/local/bin/cipi-cli

Construire à partir des sources

coup
git clone https://github.com/cipi-sh/cli.git
cd cli
make build
sudo make install

Vérifier l'installation

coup
$ cipi-cli version
cipi-cli v1.2.5 (linux/amd64)

Configuration

A profil est une connexion nommée à un serveur Cipi (point de terminaison API + jeton). Utiliser comme de nombreux profils car vous avez des serveurs - par exemple prod, staging, ou client-a. Vous avez besoin de l'URL du point de terminaison API et d'un jeton Sanctum créé avec cipi api token create sur chaque serveur.

Les informations d'identification sont stockées par profil dans ~/.cipi/config.json avec autorisations 0600. Transmettez toujours un nom de profil - si vous l'omettez, le CLI vous en demande un au lieu de écrivant silencieusement à default.

Configuration interactive

Recommandé : stockez le jeton avec api token add. Les aides équivalentes sont configure --profile et profiles add:

coup
$ cipi-cli api token add prod
Cipi API point de terminaison : https://api.example.com
API jeton : 1|votre jeton...
Profil de serveur "prod" enregistré → ~/.cipi/config.json

$ cipi-cli api token add staging
Cipi API point de terminaison : https://staging-api.example.com
Jeton API : 1|jeton de mise en scène...
Profil de serveur "staging" enregistré → ~/.cipi/config.json

# Same flow via configure / profiles add
$ cipi-cli configure --profile prod
$ cipi-cli profiles add staging

Configuration non interactive

coup
$ cipi-cli api token add prod \
    --endpoint https://api.example.com --token "1|yourtoken..."

$ cipi-cli profiles add staging \
    --endpoint https://staging.example.com --token "1|yourtoken..."

Afficher la configuration

coup
$ cipi-cli profiles show prod
Profil : prod
Point de terminaison : https://api.example.com
Jeton : 1|a8Kz...4f2a

$ cipi-cli profiles show
# Shows all configured server profiles

profiles

Gérez plusieurs connexions de serveur à partir d'un seul cipi-cli installation. Un profil équivaut à un serveur. Préfixez n'importe quelle commande avec un nom de profil pour cibler ce serveur, ou définissez un nom par défaut avec profiles use pour omettre le préfixe. Les pseudonymes servers / server fonctionne de la même manière que profiles.

Cibler un serveur

coup
$ cipi-cli prod apps list
$ cipi-cli staging apps show myapp
$ cipi-cli prod deploy myapp
$ cipi-cli prod ssl install myapp

Avec un serveur par défaut défini, vous pouvez exécuter des commandes sans le préfixe :

coup
$ cipi-cli profiles use prod
Profil par défaut défini sur "prod"

$ cipi-cli apps list
# Uses the prod profile

$ cipi-cli staging apps list
# Explicit prefix still targets staging
Commande Descriptif
cipi-cli api jeton ajouter [profil] Ajouter ou mettre à jour le point de terminaison API + le jeton pour un profil de serveur nommé
cipi-cli profils Liste des serveurs configurés (alias : cipi-cli servers)
Les profils cipi-cli ajoutent [nom] [drapeaux] Ajouter ou mettre à jour un profil de serveur (identique à configure --profile)
cipi-cli liste des profils Liste des serveurs configurés
Les profils cipi-cli affichent [profil] Afficher un profil de serveur, ou tous si omis
Les profils cipi-cli utilisent <profil> Définir le serveur par défaut (alias : profiles default)
cipi-cli profils supprimer <profil> [-y] Supprimer un profil de serveur local (identifiants uniquement – rien ne change sur le serveur distant)

api token add, profiles add, et configure accepte la même chose drapeaux : --endpoint et --token (plus --profile quand le nom n’est pas positionnel).

Alias : servers / serverprofiles; profiles useprofiles default. Les mêmes commandes de gestion sont également disponible sous cipi-cli configure list, configure show, configure default, et configure delete - préférer profiles ou api token add pour stocker les informations d'identification.

apps

Gérez les applications sur votre serveur Cipi.

Commande Descriptif
cipi-cli liste d'applications Lister toutes les applications
Les applications cipi-cli affichent <nom> Afficher les détails de l'application
Les applications cipi-cli créent [drapeaux] Créer une nouvelle application
Les applications cipi-cli modifient <nom> [drapeaux] Modifier une candidature
cipi-cli applications suppriment <nom> [-y] Supprimer une application
Les applications cipi-cli suspendent <nom> Mettre une application hors ligne (page de maintenance HTTP 503) sans la supprimer
cipi-cli applications réactivent <nom> Restaurer une application suspendue au service normal
cipi-cli journaux des applications <nom> [drapeaux] Lire les journaux d'applications paginés (nginx, PHP-FPM, Laravel, travailleur, déploiement)

Créer des drapeaux

--user Nom de l'application (utilisé comme nom d'utilisateur Linux et de base de données)
--domain Domaine principal de l'application
--php Version PHP (par ex. 8.5)
--repository URL du dépôt Git
--branch Branche Git à partir de laquelle déployer
--custom Créez une application personnalisée (non-Laravel) avec htdocs déployer
--docroot Racine du document par rapport à htdocs(applications personnalisées uniquement)

Modifier les drapeaux

--php Changer la version PHP
--repository Mettre à jour l'URL du référentiel Git
--branch Changer la branche de déploiement
--domain Renommez le domaine principal (nécessite Cipi 4.6.2+ et API 1.9.0+)

Indicateurs de journaux

--type Filtre de type de journal : all (par défaut), nginx, php, worker, deploy, ou laravel
--page Numéro de page, commençant à 1 pour les lignes les plus récentes (par défaut 1)
--per-page Lignes par fichier journal par page (par défaut 50, maximum 1000; nécessite API 1.11.9+)

Exemples

coup
# List all apps
$ cipi-cli apps list

# Create a Laravel app
$ cipi-cli apps create --user=myapp --domain=myapp.com \
    --php=8.5 --repository=git@github.com:acme/myapp.git --branch=main

# Create a custom (non-Laravel) app
$ cipi-cli apps create --user=landing --domain=landing.acme.com \
    --custom --docroot=dist

# Edit an existing app
$ cipi-cli apps edit myapp --php=8.4

# Suspend staging for maintenance
$ cipi-cli apps suspend staging

# Read recent deploy logs (page 1 = newest lines)
$ cipi-cli apps logs myapp --type=deploy

# Paginate older nginx lines
$ cipi-cli apps logs myapp --type=nginx --page=2 --per-page=100

# Delete an app (skip confirmation)
$ cipi-cli apps delete myapp -y

domains

Répertoriez chaque domaine principal et alias de toutes les applications du serveur dans une seule table : la table distante. contrepartie de cipi domains sur le serveur. Utile pour auditer la couverture DNS ou repérer les domaines manquants SSL avant le renouvellement d'un certificat.

Commande Descriptif
Domaines cipi-cli Répertoriez chaque domaine et alias dans toutes les applications
coup
$ cipi-cli domains
  TYPE DE TYPE D'APPLICATION DE DOMAINE PHP SSL
  api.myapp.com, alias de mon application Laravel 8.5 ✓
  myapp.com myapp primaire Laravel 8.5 ✓
  www.myapp.com alias de mon application Laravel 8.5 ✓

3 domaines · 1 application · 3 certificats
La carte de domaine globale est construite à partir de GET /api/apps sur le serveur. Cela nécessite Cipi 4.5.5+ sur le serveur (pour le sous-jacent cipi domains données) mais pas de version minimale du package API.

deploy

Déclenchez des déploiements, revenez à la version précédente ou débloquez un déploiement bloqué.

Commande Descriptif
cipi-cli déployer <app> Déclenchez un déploiement sans temps d'arrêt
cipi-cli déployer la restauration <app> [-y] Retour à la version précédente
cipi-cli déployer déverrouiller <app> Déverrouiller un déploiement bloqué
coup
$ cipi-cli deploy myapp
Déploiement de monapplication...
Travail de sondage n°42... terminé
Déployé vers la version #14. Zéro temps d'arrêt.

$ cipi-cli deploy rollback myapp
Retour à la version n°13.

ssl

Installez les certificats Let's Encrypt pour vos applications.

Commande Descriptif
cipi-cli ssl installer <application> Installez le certificat Let's Encrypt (couvre le domaine principal et tous les alias)
coup
$ cipi-cli ssl install myapp
Certificat fourni pour myapp.com

aliases

Gérer les alias de domaine pour une application.

Commande Descriptif
cipi-cli liste d'alias <app> Répertorier tous les alias d'une application
cipi-cli les alias ajoutent <app> <domain> Ajouter un alias de domaine
cipi-cli alias supprime <app> <domain> [-y] Supprimer un alias de domaine
coup
$ cipi-cli aliases add myapp www.myapp.com
Alias www.myapp.com ajouté à myapp.

$ cipi-cli aliases list myapp
  www.monapp.com
  api.myapp.com

# Re-run ssl install to include new aliases in the certificate
$ cipi-cli ssl install myapp

db

Gérer les bases de données MariaDB.

Commande Descriptif
cipi-cli liste de bases de données Lister toutes les bases de données
cipi-cli base de données créer <nom> Créer une base de données
cipi-cli suppression de base de données <nom> [-y] Supprimer une base de données
cipi-cli sauvegarde de base de données <nom> Créer une sauvegarde de base de données
cipi-cli restauration de base de données <nom> [-y] Restaurer la base de données à partir d'une sauvegarde
cipi-cli mot de passe de base de données <nom> [-y] Régénérer le mot de passe et mettre à jour .env
coup
$ cipi-cli db list
  TAILLE DU NOM
  monapplication 24,5 Mo
  blog 8,2 Mo

$ cipi-cli db backup myapp
Sauvegarde créée : myapp_20260402_143022.sql.gz

$ cipi-cli db restore myapp -y
Base de données restaurée avec succès.

status

Lisez le même instantané d'hôte que cipi status sur le serveur - via GET /api/status. Nu status affiche un aperçu global (une ligne par serveur configuré). Transmettez un nom de profil (ou utilisez un préfixe de profil) pour obtenir tous les détails.

Commande Descriptif
Statut cipi-cli Aperçu global : une ligne par serveur (alias : status all)
cipi-cli statut <profil> Tous les détails pour un serveur
cipi-cli Statut <profil> Même vue détaillée, via le préfixe de profil

Colonnes globales : NAME, IP, CPU, RAM, HDD, APPS, SVC, CIPI. Le profil par défaut est marqué avec *.

coup
$ cipi-cli status
  NOM IP CPU RAM HDD APPLICATIONS SVC CIPI
  prod* 203.0.113.10 12 % 48 % (3840M) 42G/80G 53 % 3 8/8 ok 4.6.3
  mise en scène 203.0.113.20 4% 31% (2048M) 18G/40G 45% 1 8/8 ok 4.6.3

  * profil par défaut
  Détail : cipi-cli statut <nom>

$ cipi-cli status prod
État du serveur – prod
  Point de terminaison https://api.example.com
  Nom d'hôte prod-01
  IP203.0.113.10
  Système d'exploitation Ubuntu 24.04
  Disponibilité 12 jours
  Cipi 4.6.3
  Processeur 12 %
  RAM 3840/8192 Mo (48%)
  Disque dur 42G/80G (53%)
  Applications 3
Nécessite la capacité de jeton API status-view et GET /api/status sur le serveur (API 1.11.6+). Créez ou faites pivoter le jeton avec cipi api token create et inclure status-view.

jobs

Les opérations d'écriture (créer, modifier, supprimer, déployer, SSL, etc.) sont asynchrones sur le Cipi API. Le CLI interroge automatiquement l'achèvement du travail et affiche une double flèche en attendant. Si vous préférez gérer interrogation manuelle, utilisez le jobs commandes.

Commande Descriptif
Les tâches cipi-cli affichent <id> Afficher l'état du travail
cipi-cli tâches en attente <id> Attendre la fin d'un travail (blocage)
coup
$ cipi-cli jobs show 42
Tâche n°42 : déployer myapp – terminé

$ cipi-cli jobs wait 43
En attente du travail n°43... terminé

update

Mise à jour cipi-cli à la dernière version de GitHub. La commande sélectionne le semver le plus élevé parmi les versions publiées (pas l'indicateur « dernière » de GitHub, qui peut pointez sur une balise plus ancienne), télécharge le binaire correspondant à votre plate-forme, vérifie son SHA-256 somme de contrôle et remplace le binaire en cours d'exécution en place. Alias : self-update, upgrade.

Commande Descriptif
cipi-cli mise à jour Mise à jour au semver publié le plus élevé
cipi-cli mise à jour --force Réinstaller même s'il est déjà à jour (permet de rétrograder)
coup
$ cipi-cli update
Téléchargement de cipi-cli v1.2.5...
Somme de contrôle vérifiée. Mis à jour vers la v1.2.5.

# Aliases work the same
$ cipi-cli self-update
$ cipi-cli upgrade

# If installed in a system path, use sudo
$ sudo cipi-cli update

completion

Installer la saisie semi-automatique du shell pour cipi-cli. Le chemin recommandé est completion install, qui détecte votre shell, écrit le script d'achèvement et hooke dans votre fichier rc (idempotent).

Commande Descriptif
cipi-cli installation terminée Détection automatique du shell et achèvement de l'installation
cipi-cli achèvement de l'installation --shell zsh Installer pour un shell spécifique (zsh, bash, ou fish)
cipi-cli achèvement zsh Imprimez le script d'achèvement zsh sur la sortie standard
cipi-cli coup de fin Imprimer le script de complétion bash sur la sortie standard
cipi-cli poisson d'achèvement Imprimer le script d'achèvement du poisson sur la sortie standard
coup
$ cipi-cli completion install
Installation de l'achèvement de zsh...
Achèvement installé → ~/.cipi/completions/cipi-cli.zsh
Connecté à ~/.zshrc

# Or pin a shell explicitly
$ cipi-cli completion install --shell bash

Pour zsh et bash, le script est écrit sous ~/.cipi/completions/ et une ligne source est ajouté à votre fichier shell rc. Pour le poisson, le script va à ~/.config/fish/completions/ (chargé automatiquement). Rechargez ensuite le shell, puis essayez cipi-cli <TAB>.


Drapeaux mondiaux

Ces drapeaux sont disponibles sur toutes les commandes.

--json Sortie au format JSON — utile pour les scripts et les pipelines CI/CD
--no-color Désactiver la sortie couleur
--help Afficher l'aide pour n'importe quelle commande
coup
# JSON output for scripting
$ cipi-cli apps list --json
[{"name": "monapplication", "domaine": "monapplication.com", "php": "8.5"}, ...]

# Pipe to jq for filtering
$ cipi-cli apps list --json | jq '.[].name'
"monapplication"
"blog"

# Help for a specific command
$ cipi-cli apps create --help

Sorties

Les versions sont automatisées via les actions GitHub. Binaires pré-construits pour Linux (amd64/arm64) et macOS (amd64/arm64) sont publiés avec des sommes de contrôle SHA-256 sur le GitHub Page des versions.

Code source

cipi-cli est open source, sous licence MIT et écrit en Go. Les contributions sont les bienvenues sur GitHub.


Exigences

Le serveur Cipi doit avoir le Forfait API installé et configuré avant d'utiliser cipi-cli:

coup
$ cipi api <domain>
$ cipi api ssl
$ cipi api token create

Les nouvelles versions de l'application PHP doivent être 8.3, 8.4, ou 8.5 (Cipi 4.5.4+). Certaines fonctionnalités de CLI dépendent d'un serveur spécifique et des versions de API :

Caractéristique Minimum Cipi Minimum API
Suspendre/reprendre la suspension (apps suspend) 4.5.8 1.8.1
Renommer le domaine principal (apps edit --domain) 4.6.2 1.9.0
Journaux d'applications (apps logs) 1.11.9
État du serveur (status) GET /api/status + status-view (1.11.6+)
Carte de domaine globale (domains) 4.5.5 — (construit à partir de /api/apps)