Aller au contenu

Mise à jour et désinstallation

Une mise à jour remplace deux choses — le binaire et l’unité de service — et laisse votre configuration et vos certificats tranquilles. Cette page le montre, donne l’équivalent pour un conteneur, le chemin de retour arrière quand une version doit reculer, et le démontage.

Chemin Une mise à jour
/etc/Pingclair/Pingclairfile Conservé. L’installateur ne l’écrit que s’il manque.
/etc/Pingclair/Pingclairfile.example Remplacé par l’exemple courant.
/var/lib/pingclair/.local/share/pingclair Conservé. Certificats émis et état ACME restent en place.
/var/lib/pingclair/html Conservé.
/usr/local/bin/pingclair et pc Remplacés par la nouvelle version.
/etc/systemd/system/pingclair.service Réécrit, puis le service est redémarré.
Fenêtre de terminal
curl -fsSL https://pingclair.com/install.sh | sudo bash

Le script demande à GitHub le tag de la dernière version, l’affiche, vérifie la somme SHA-256 de l’archive, remplace le binaire et l’unité, puis redémarre le service. Un fichier de configuration existant n’est pas touché, ce qui fait de cette opération une mise à jour et non une remise à zéro :

Detected architecture: x86_64
Fetching latest release from dorianverlaine/pingclair...
Installing v0.2.0-rc.3 — a release candidate, not a final release.
pingclair-linux-x86_64.tar.gz: OK
✅ Installation Complete!
Config: /etc/Pingclair/Pingclairfile

Confirmez la nouvelle version et que l’ancienne configuration sert toujours :

Fenêtre de terminal
pingclair version
pc service status
curl -i http://localhost/
v0.2.0-rc.3

L’installateur installe toujours la dernière version. Il n’existe pas d’option pour une version précise ; c’est le retour arrière ci-dessous qui s’en charge.

Rien n’est installé sur l’hôte : une mise à jour est un changement de tag et un pull. Épinglez la nouvelle version dans le fichier compose :

services:
pingclair:
image: ghcr.io/dorianverlaine/pingclair:v0.2.0-rc.3
Fenêtre de terminal
docker compose pull
docker compose up -d
docker logs pingclair 2>&1 | head -3
🚀 Starting Pingclair with config: /etc/pingclair/Pingclairfile
🚀 Starting Pingclair v0.2.0-rc.3
📄 Loaded configuration from: /etc/pingclair/Pingclairfile

La configuration et le magasin de certificats vivent dans les volumes, donc le nouveau conteneur les retrouve là où l’ancien les a laissés. Deux points à surveiller :

  • Un conteneur qui publie le port 80 ne peut pas démarrer tant que le service systemd tourne. Arrêtez l’un des deux : sudo pc service stop, ou changez le port publié côté conteneur.
  • latest suit la version la plus récente. Épinglez une version en production, pour qu’une mise à jour soit une décision et non un effet de bord d’un pull.

Quand une version doit reculer, récupérez la précédente sur l’hôte de publication, vérifiez-la contre le condensé publié par cette version, et remplacez le binaire :

Fenêtre de terminal
mkdir -p /tmp/rollback && cd /tmp/rollback
version=0.2.0-rc.2
base="https://releases.pingclair.com/pingclair/releases/$version"
curl -fsSL "$base/release.json" -o release.json
tarball=pingclair-linux-x86_64.tar.gz
expected="$(jq -r ".assets[] | select(.name == \"$tarball\") | .digest" release.json | sed 's/^sha256://')"
curl -fsSLO "$base/$tarball"
printf '%s %s\n' "$expected" "$tarball" | sha256sum -c -
mkdir -p extract && tar -xzf "$tarball" -C extract
pingclair-linux-x86_64.tar.gz: OK
Fenêtre de terminal
sudo systemctl stop pingclair
sudo install -m 0755 extract/pingclair /usr/local/bin/pingclair
sudo systemctl start pingclair
pingclair version
v0.2.0-rc.2

Validez ensuite la configuration face à la version restaurée : une directive que cette version n’implémente pas est refusée par son nom plutôt qu’ignorée.

Fenêtre de terminal
sudo pingclair validate /etc/Pingclair/Pingclairfile
Fenêtre de terminal
sudo pc service stop
sudo systemctl disable pingclair
sudo rm /etc/systemd/system/pingclair.service
sudo systemctl daemon-reload
sudo rm /usr/local/bin/pingclair /usr/local/bin/pc

Après cela, systemctl status pingclair répond Unit pingclair.service could not be found, la commande a disparu et rien n’écoute sur le port 80. Ce qui reste sur le disque est volontairement vos données :

/etc/Pingclair/Pingclairfile la configuration, toujours valide
/var/lib/pingclair/.local/share/pingclair certificats émis et état ACME
/var/lib/pingclair/html le site d'attente
/var/log/pingclair le répertoire d'une destination de journal

Gardez /var/lib/pingclair/.local/share/pingclair si vous prévoyez de réinstaller : les certificats et la racine interne survivent, et les clients qui font confiance à cette racine continuent de fonctionner. Supprimez tout, y compris le compte de service, quand l’hôte a fini avec Pingclair :

Fenêtre de terminal
sudo rm -rf /etc/Pingclair /var/lib/pingclair /var/log/pingclair
sudo userdel pingclair
  • L’installateur a installé une version inattendue. Il prend toujours le dernier tag de version. Vérifiez avec pingclair version et utilisez le retour arrière ci-dessus s’il vous fallait une version précise.
  • Le service ne démarre plus après une mise à jour. Lisez sudo pingclair validate /etc/Pingclair/Pingclairfile. Une directive que la nouvelle version refuse échoue de façon fermée, avec son nom et l’alternative : le journal donne la ligne à changer.
  • Un conteneur s’arrête immédiatement. docker logs <container> en donne la raison. Les causes habituelles sont un /etc/pingclair/Pingclairfile absent du répertoire de configuration monté, ou un port déjà utilisé sur l’hôte.
  • Les clients rejettent le certificat après une reconstruction du magasin. Si l’autorité interne a été régénérée, l’ancienne racine ne signe plus rien. Installez la nouvelle avec sudo PINGCLAIR_TLS_STORE=/var/lib/pingclair/.local/share/pingclair pingclair trust.