Interface graphique (PySide6) pour déployer des projets depuis un dossier
htdocsvers une cible locale ou distante (SSH).
Mode clé SSH only pour les opérations non interactives. Rsync (+ options) ou fallback tar/SFTP.
- Fonctionnalités
- Prérequis
- Installation
- Configuration (.env / UI)
- Générer la clé SSH (client Windows)
- Mettre la clé côté serveur (Linux)
- Utilisation de l’application
- Fichiers d’aide fournis (
helper.txt) - Dépannage & erreurs courantes
- Sécurité
- FAQ rapide
- Changelog court
- Licence / Contact
- UI PySide6 avec onglets Deploy / Settings.
- Sélection visuelle des fichiers/projets depuis
htdocs. - Prévisualisation des fichiers inclus/exclus (exclusions glob/regex).
- Modes de déploiement :
local: extraction d’une archive sur machine locale.ssh: upload + extraction via SFTP (Paramiko) ou rsync (si disponible).
- Authentification clé SSH uniquement pour éviter les prompts interactifs.
- rsync direct (
--files-from+--relative) ou via tmpdir + rsync distant. - Fallback tar + SFTP si rsync non possible.
- Sauvegarde (backup) avant écrasement.
- Options centralisées dans
.xampp_deployer.env(onglet Settings). - Bouton pour ouvrir/afficher
helper.txt(instructions côté serveur). - Bouton pour sauvegarder mot de passe sudo (optionnel, stocké dans
.env— voir avertissement sécurité).
- Python 3.8+ (Windows ou Linux)
- Pip
- Dépendances Python :
pip install PySide6 paramiko python-dotenv
- Côté serveur (pour rsync) :
rsync(optionnel mais recommandé) - SSH configuré sur le serveur
-
Clone / place le script Python (fichier principal).
-
(Optionnel) Crée un environnement virtuel :
python -m venv .venv .\.venv\Scripts\Activate.ps1 # PowerShell (Windows) source .venv/bin/activate # Linux / Mac
-
Installe les dépendances :
pip install PySide6 paramiko python-dotenv
-
Lance l’application :
python deployer.py
Le fichier par défaut est ~/.xampp_deployer.env. Exemple minimal :
SSH_HOST=example.com
SSH_PORT=PORT
SSH_USER=HOST
SSH_KEY=C:\Users\TON_USER\.ssh\key_name
SSH_SUDO_PASS=
SSH_TARGET=/var/www/html
RSYNC_FLAGS=-az
BACKUP_DIR=~/.xampp_deployer_backups- Ouvre l’onglet Settings dans l’UI pour éditer et sauvegarder
.env. - Après
Enregistrer .env, les champs du tab Deploy sont mis à jour automatiquement. - Ne mettez pas
SSH_KEYpointant sur un.pub(clé publique) — indiquez la clé privée. SSH_SUDO_PASS: si tu utilises des commandes sudo côté serveur (extraction dans des répertoires protégés), tu peux enregistrer le mot de passe sudo via le bouton Enregistrer sudo — attention : fichier .env en clair.
-
Ouvre PowerShell :
ssh-keygen -t ed25519 -C "xampp-deployer"
- Appuie sur Entrée pour le chemin par défaut (
C:\Users\<USER>\.ssh\id_ed25519). - Pas de passhphrase
- Appuie sur Entrée pour le chemin par défaut (
-
Vérifie la présence :
dir $env:USERPROFILE\.ssh # id_ed25519 id_ed25519.pub
-
Affiche la clé publique pour la copier :
type $env:USERPROFILE\.ssh\id_ed25519.pub
-
Connecte-toi une dernière fois avec mot de passe (si nécessaire) :
ssh -p <PORT> <USER>@<HOST>
-
Sur le serveur :
mkdir -p ~/.ssh nano ~/.ssh/authorized_keys # -> coller la ligne entière de la clé publique (id_ed25519.pub) chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
-
Tester : Depuis le client :
ssh -i C:\Users\<USER>\.ssh\id_ed25519 -p <PORT> <USER>@<HOST>
- Si connexion sans mot de passe → OK
- Sinon -> vérifier clé, permissions et utilisateur
-
Lance l’application.
-
Dans Deploy :
Chemin htdocs: dossier racine contenant tes projets.- Sélectionne un
Projet(ou racine). - Coche les fichiers / dossiers à déployer (l’arbre conserve le nom du projet dans les chemins).
- Dans Options :
mode=sshoulocal.Cible locale(pour mode local).- Renseigne
SSH Host,SSH Port,SSH User,SSH Key(chemin complet). - SSH Password : en lecture seule (désactivé, clé-only).
SSH sudo password: si nécessaire, remplir puis cliquer Enregistrer sudo.
- Exclusions : ajoute des patterns (glob) ou regex (si désactivé 'Mode glob').
Prévisualiserpour vérifier.Test connexion & checkspour tests rapides (ssh connectivity, rsync remote, write permission).Déployer maintenantpour lancer le worker.
-
Logs / progression :
- Console intégrée affiche les messages.
- Barre de progression indique %.
- Le repo / dossier courant contient
helper.txt(nous avons fourni un modèle). - Dans l’UI, bouton Récupérer helper.txt ouvre le fichier local
./helper.txt(ou te permet d’en sélectionner un). helper.txtcontient les étapes côté serveur et côté client pour générer et installer la clé.
- Clé publique mal copiée dans
~/.ssh/authorized_keys. - Permissions :
chmod 700 ~/.sshetchmod 600 ~/.ssh/authorized_keys. - Mauvais utilisateur / mauvais port / clé privée non correspondante.
- Tu as laissé des flux SSH subprocess sans clé : le code a été modifié pour exiger clé-only.
- Vérifie que
SSH_KEYest renseigné et accessible (chemin correct, droits).
- rsync direct nécessite rsync local (WSL/Git-Bash/Cygwin). Sinon le code doit utiliser tar+SFTP (mais le flux rsync nécessite une clé).
- Vérifie version paramiko installée :
pip show paramiko. - Vérifie que la clé est lisible depuis Python (chemin sans espaces/avec bonnes permissions).
- Ne commit pas
.xampp_deployer.envcontenantSSH_SUDO_PASS. - Restreins l’accès au fichier
.env(chmod 600) sur ta machine. - Si tu enregistres
SSH_SUDO_PASS, comprends que c’est stocké en clair — risque.
- Q : Puis-je déployer depuis Windows ?
A : Oui. Le client peut être Windows. Le serveur cible est typiquement Linux. - Q : La clé doit-elle être
ed25519?
A : Recommandé.rsafonctionne maised25519est moderne et meilleur. - Q : Doit-on installer rsync sur le serveur ?
A : Recommandé. Le système utilisera rsync si disponible pour des transferts plus rapides. - Q : Puis-je stocker un mot de passe SSH ?
A : Non — l’app est en mode clé-only pour SSH. Seul leSSH_SUDO_PASSpeut être sauvegardé (voir avertissement).
- Version actuelle : UI remaniée, clé-only authentication, rsync direct/temps/fallbacks, preview inclusion/exclusion, .env centralisé, helper.txt support.
- Utilisation libre pour usages internes.
- Pour problèmes : copie-colle les logs et le message d'erreur exact (console intégrée) et ouvre une issue / demande d'aide.
Générer clé (Windows PowerShell):
ssh-keygen -t ed25519 -C "xampp-deployer"Ajouter clé publique côté serveur:
ssh -p 2128 tryxee62@tryxee62.fr
mkdir -p ~/.ssh
echo "ssh-ed25519 AAAA... comment" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys