Initialiser un projet

Dans le dossier de votre projet :
kennhosting init
Le wizard détecte automatiquement le type de projet (laravel si composer.json+artisan sont présents, react si package.json seul, static sinon), vous fait choisir le service et le domaine, et génère un fichier .kennhosting.yml (sans secrets — à committer). Exemple (Laravel) :
project: mon-app
environments:
  production:
    service_uuid: "..."
    domain: "app.example.com"
    branch: "main"
    build:
      type: laravel
      php: "8.4"
      run_migrations: true
      assets:
        enabled: true
        command: "npm run build"
        output_dir: "public/build"
    hooks:
      pre_deploy: []
      post_deploy: []
Exemple (React) :
project: mon-app-react
environments:
  production:
    service_uuid: "..."
    domain: "app.example.com"
    branch: "main"
    build:
      type: react
      assets:
        enabled: true
        command: "npm run build"
        output_dir: "dist"

Premier déploiement

kennhosting deploy setup
  • Laravel : clone le dépôt sur le serveur (via un dossier temporaire fusionné dans le docroot, pour préserver les fichiers que cPanel y place déjà — .well-known, requis par AutoSSL) et prépare le docroot.
  • React / static : aucun clone — équivalent à kennhosting deploy (le serveur n’héberge jamais le code source, seulement le build). Les deux commandes existent pour la cohérence de l’interface, mais font la même chose pour ces types.

Déploiements suivants

kennhosting deploy
  • Laravel : git pull sur le serveur, upload des assets pré-buildés localement, composer, migrations (si activées), cache Laravel, redémarrage des workers de queue.
  • React : build local (build.assets.command), puis upload direct de output_dir dans le docroot — l’ancien contenu est remplacé (pas fusionné), sauf les entrées gérées par cPanel (.well-known, cgi-bin).
  • static : pas de build, upload direct de output_dir (racine du projet par défaut) dans le docroot, même logique de remplacement.
Options utiles :
FlagEffet
-y / --yesPas de confirmation (CI)
--plainSortie texte (pas de TUI)
--skip-hooksIgnore pre/post deploy (Laravel uniquement)
-e productionEnvironnement cible
En CI (variable CI ou pas de TTY), le CLI bascule automatiquement en mode texte.

Assets frontend

Pour un projet Laravel avec build.assets.enabled: true, le CLI :
  1. Exécute la commande de build en local
  2. Vérifie output_dir (ex. public/build)
  3. Upload les artefacts après git pull sur le serveur
Indispensable si public/build est gitignoré. Pour React, ce même mécanisme est le déploiement entier (pas de git pull séparé) — voir “Déploiements suivants” ci-dessus.

Tableau de bord TUI

Lancé sans argument dans un terminal interactif, kennhosting ouvre une TUI (services, déploiement, historique).

Dépannage rapide

  • Token refusé : vérifiez le scope cli:deploy sur Espace développeur
  • Domaine introuvable : le domaine doit être attaché au service dans le panel
  • Build assets échoue : testez npm run build localement avant kennhosting deploy