Compte
Désinstaller
Retirer un serveur de la console, l’agent du serveur, la ligne de l’app dans ~/.ssh/config, et l’app avec son dossier de données.
Quatre morceaux, chacun se retire seul. Pour tout retirer, prenez-les dans cet ordre : le serveur dans la console, l’agent sur le serveur, la ligne de ~/.ssh/config, puis l’app.
Garder une porte sur le serveur
Le dossier de données de l’app porte la seule copie de la clé privée qu’elle a faite pour chaque serveur que vous avez ajouté. Supprimez le dossier et cette clé est perdue pour de bon. Avant de retirer l’app, assurez-vous qu’autre chose ouvre dev sur chaque serveur que vous gardez — une clé à vous dans /home/dev/.ssh/authorized_keys, ou la console de votre hébergeur — ou finissez d’abord avec le serveur.
Il en va de même du mot de passe sudo de dev, que l’app garde dans le trousseau de l’ordinateur : une fois l’agent retiré, c’est le seul chemin vers root sur un serveur sécurisé. Copiez-le depuis la carte du serveur, dans Réglages › Serveurs, avant de supprimer le serveur ou de retirer l’app. Perdu, il se redéfinit depuis la console de l’hébergeur avec passwd dev.
Le serveur dans la console
Serveurs, le serveur, puis Supprimer le serveur ; il faut être admin ou propriétaire de l’organisation. Le serveur passe en révoqué :
- son siège est libéré tout de suite, et son attribution tombe ;
- à sa prochaine lecture de la plateforme, sous trente secondes, l’agent passe en mode restreint ; il laisse tel qu’il est le bloc des clés d’appareil, dans le
authorized_keysdedeventre# >>> pupitre keys >>>et# <<< pupitre keys <<<, car il ne retire jamais la dernière clé d’un serveur ; - les lignes hors de ce bloc restent : la clé que l’app a posée pour un serveur que vous avez ajouté vous-même, et vos propres clés.
La ligne quitte la console sept jours plus tard, ou tout de suite avec Supprimer définitivement. La machine garde tout ce qui est installé dessus.
Depuis l’app, Réglages › Serveurs, puis la corbeille sur la ligne du serveur : quand la console vous attribue ce serveur, la boîte de dialogue propose Supprimer partout, qui fait les deux étapes de la console d’un coup et le retire de cet ordinateur. Retirer de cet ordinateur, à côté, ne fait que le masquer ici.
Cet ordinateur
Désinstaller l’app ne révoque pas l’ordinateur, pas plus que Se déconnecter, qui oublie seulement la session ici : sa clé continue d’ouvrir les serveurs de votre organisation jusqu’à ce que vous la révoquiez. Dans la console, Appareils, puis Révoquer sur cet ordinateur — ou depuis l’app d’un autre ordinateur, sous Réglages › Compte. Sa clé quitte vos serveurs dans la minute, sauf là où c’est la dernière.
L’agent sur le serveur
Sur le serveur, en dev :
sudo pupitred uninstall
Sur un serveur sécurisé avec un mot de passe, sudo demande celui de dev. La commande liste ce qu’elle retire et ce qu’elle garde, puis demande confirmation ; --yes saute la question, et il est requis quand aucun terminal n’est attaché. Elle ne contacte pas la plateforme.
Elle retire :
- le service
pupitred: arrêté, désactivé, son unité supprimée. C’est le service propre de l’agent — les lectures de la plateforme, les clés, les sauvegardes programmées ; elles s’arrêtent avec lui ; - le service
pupitre-resume: désactivé et son unité supprimée, mais pas arrêté. Il relance les projets après un redémarrage, et les projets qu’il a lancés vivent dans son serveurtmux: ils continuent de tourner jusqu’au prochain redémarrage, après quoi plus rien ne les lance ; - tout autre service qui lance le binaire de l’agent, comme
pupitre-gate, la passerelle d’accès : arrêté, désactivé, son unité supprimée ; /usr/local/bin/pupitred, et la commandedevde/usr/local/bin, qui est un lien vers lui, comme la commandeshotqu’une version antérieure à 2.1.0 y a laissée ;- dans
/etc/sudoers.d/90-dev, les deux lignes qui laissentpupitredtourner sans mot de passe :devgardesudosur son mot de passe. La nouvelle règle est vérifiée parvisudoavant de remplacer l’ancienne. Un serveur sécurisé avant le mot de passe garde sa règle sans mot de passe telle quelle ; /etc/pupitre, sauf/etc/pupitre/env;/var/lib/pupitre, l’état de l’agent : la licence en cache, le rapport de la dernière installation, où en sont les sauvegardes, les copies prises avant une migration de configuration ;/var/log/pupitre.log, ses copies tournées, et leur rotation dans/etc/logrotate.d/pupitre.
/etc/pupitre/env reste, lisible par root seul : il porte les mots de passe et tokens de vos services — mots de passe des bases, token du tunnel, clés d’API — et rien d’autre ne les garde. Copiez ce dont vous avez encore besoin en lieu sûr, puis supprimez-le si vous le souhaitez :
sudo cat /etc/pupitre/env
sudo rm -r /etc/pupitre
Quand une étape échoue, les autres tournent quand même, et le bilan donne la commande qui la finit à la main ; pupitred est alors gardé, pour relancer la commande. Lancée sur un serveur où il ne reste rien, elle le dit et ne change rien.
Le siège du serveur ne se libère qu’en supprimant le serveur, dans l’app ou la console.
Ce qui reste sur le serveur
Tout ce que Pupitre a installé est de l’Ubuntu ordinaire, et continue de tourner sans l’agent :
- les paquets et leurs services
systemd— PostgreSQL, Redis, Caddy,cloudflared, et les servicespupitre-…qu’ajoutent certains modules, commepupitre-mailpit; - l’utilisateur
dev, sa règle sudo dans/etc/sudoers.d/90-dev— le mot de passe que la sécurisation lui a donné, ou le sudo sans mot de passe d’un serveur sécurisé avant —, son shell, et vos projets sous/home/dev; - chaque clé de l’
authorized_keysdedev, le bloc des clés d’appareil compris : retirer l’agent ne ferme jamais la porte derrière vous ; - les bases de données et leurs données ;
- les noms
.localhostde vos projets, dans un bloc# >>> pupitre projects >>>de/etc/hosts; - les réglages système :
/etc/sysctl.d/99-pupitre.conf, et les mises à jour de sécurité automatiques de/etc/apt/apt.conf.d/52pupitre.
La sécurisation reste aussi : ufw, la jail fail2ban de /etc/fail2ban/jail.d/pupitre.local, et les réglages SSH de /etc/ssh/sshd_config.d/10-pupitre.conf :
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
AllowUsers dev
ClientAliveInterval 30
ClientAliveCountMax 6
Port 22 et Port 443 suivent quand vous avez demandé SSH sur 443 aussi. Pour rouvrir root par clé, passez deux lignes à ce qu’écrit l’option « Garder l’accès root » — PermitRootLogin prohibit-password et AllowUsers dev root —, puis vérifiez le fichier et rechargez SSH, en gardant votre session ouverte jusqu’à ce qu’une nouvelle marche :
sudo sshd -t
sudo systemctl reload ssh
La ligne de ~/.ssh/config
Si vous avez activé Laisser ssh, mes éditeurs et mes agents de code joindre mes serveurs par leur nom sous Réglages › SSH, votre ~/.ssh/config commence par une ligne de l’app. Éteignez l’option avant de retirer l’app : l’app reprend la ligne elle-même. Sinon, supprimez-la à la main. Elle pointe dans le dossier de données de l’app :
Include "/Users/vous/Library/Application Support/@pupitre/desktop/ssh/config"
Sous Linux, Include /home/vous/.config/@pupitre/desktop/ssh/config ; sous Windows, Include C:\Users\vous\AppData\Roaming\@pupitre\desktop\ssh\config, entre guillemets quand le chemin contient une espace. Voir votre propre client pour ce que fait la ligne.
L’app
Éteignez d’abord Ouvrir Pupitre à la connexion sous Réglages › Démarrage, puis quittez l’app.
| Système | Retirer l’app | Dossier de données | Cache des mises à jour |
|---|---|---|---|
| macOS | glissez Pupitre.app d’Applications à la Corbeille | ~/Library/Application Support/@pupitre/desktop | ~/Library/Caches/@pupitredesktop-updater |
| Windows | Paramètres › Applications › Applications installées, Pupitre, Désinstaller | %APPDATA%\@pupitre\desktop | %LOCALAPPDATA%\@pupitredesktop-updater |
| Linux | sudo apt remove pupitre pour le .deb ; supprimez le fichier pour l’AppImage | ~/.config/@pupitre/desktop | ~/.cache/@pupitredesktop-updater |
Retirer l’app laisse son dossier de données en place. Il porte les clés privées sous keys/, la configuration SSH et les clés d’hôte épinglées sous ssh/, la session et les tokens des comptes que vous avez connectés (Cloudflare, GitHub…), chiffrés par une clé que garde le trousseau du système, et vos préférences. Supprimez-le quand vous n’avez plus besoin des clés — voir le haut de cette page.
Deux choses encore, que l’app laisse :
~/.pupitre/desktop, un lien vers le dossier de données, par lequel la configuration SSH nomme les clés — une jonction sous%USERPROFILE%\.pupitresous Windows. Supprimer le lien ne touche à rien d’autre.- sous macOS, l’entrée de trousseau
@pupitre/desktop Safe Storage, qui porte la clé de chiffrement ; supprimez-la dans Trousseaux d’accès. Sous macOS aussi,~/Library/Caches/dev.pupitre.appet~/Library/Caches/dev.pupitre.app.ShipIt.