Operations APT Repository FR - CyberMind-FR/secubox-deb GitHub Wiki
À quoi ça sert. apt.secubox.in est le dépôt Debian signé d'où les box se mettent à jour. Cette page décrit son organisation, comment un paquet y entre, pourquoi une version doit toujours monter, et comment la clé de signature est déverrouillée.
| Élément | Valeur |
|---|---|
| Outil | reprepro |
| Suites |
trixie (base actuelle depuis l'alpha 9) et bookworm (figée, n'évolue plus) |
| Architectures |
arm64, amd64 et source
|
| Composant | main |
| Signature | chaque suite déclare SignWith ; les clients vérifient la signature |
| Schéma de version |
X.Y.Z-N~trixie1 (ou ~bookworm1) |
Côté client :
curl -fsSL https://apt.secubox.in/install.sh | sudo bash
sudo apt install secubox-lite # ou secubox-isp, secubox-fullLe script installe le trousseau et ajoute deb [signed-by=/usr/share/keyrings/secubox.gpg] https://apt.secubox.in trixie main. Voir Profils pour le contenu de chaque profil et Trixie pour le changement de base.
scripts/apt-publier.sh publie un ou plusieurs .deb en une commande :
scripts/apt-publier.sh [--force] secubox-exemple_1.2.3-1~trixie1_all.debDans l'ordre :
-
Refuse une version inférieure ou égale à celle du dépôt (sauf
--force). Un paquet refusé rend le code de sortie non nul même si les autres sont publiés : c'est presque toujours le signe d'une divergence entre une branche et le code déployé. -
Ne publie jamais un aperçu (
~auroradans la version) : la mise à jour automatique l'installerait la nuit sur toutes les box. - Vérifie que la clé peut signer. Quand elle est au Coffre, ouvre une session de signature de 10 minutes ; si le Coffre est scellé, s'arrête avant de toucher au dépôt.
- Sauvegarde
db,distsetconf, puis lancereprepro ... includedeb <suite> *.deb. - Fait un
reprepro exportexplicite : unincludedebqui échoue sur un paquet met la base à jour sans ré-exporter, etInReleaseresterait ancien. - Vérifie que
InReleaseest signé par la clé attendue du dépôt.
Le chemin CI (publish-packages.yml) fait de même avec reprepro -b repo includedeb <suite> <deb> pour chaque artefact d'une release, puis exporte le trousseau (.gpg binaire et .asc armuré) et install.sh.
Règle : source modifiée et déployée = version montée. Ne jamais déployer un paquet modifié sous une version inchangée : le dépôt garderait l'ancien fichier et les box ne verraient jamais le correctif. Patch pour une correction, médiane pour une fonctionnalité, majeure pour une release.
| Outil | Comportement |
|---|---|
reprepro includedeb |
refuse une version inférieure : le dépôt est protégé si on construit par erreur une branche périmée |
dpkg -i |
l'accepte en silence : installer un build périmé fait régresser la box |
Avant de construire et déployer un paquet, comparer la première ligne de son debian/changelog à la version du dépôt :
reprepro -b <base> list trixie secubox-<module>Si le dépôt est plus haut, la branche est périmée : la rebaser d'abord.
La clé est protégée par une phrase de passe qui doit déjà être dans la mémoire de gpg-agent (reprepro tourne sans terminal ; sinon : Pinentry: Inappropriate ioctl for device). La phrase est un secret du Coffre, jamais un fichier :
- Le Coffre est scellé au démarrage ; la connexion d'un administrateur l'ouvre.
-
secubox-depot-coffre.timerlance chaque minutecoffrectl depot deverrouiller --depuis-coffre --si-ouvert: Coffre scellé, rien ; clé qui signe déjà, rien ; sinon la phrase est lue au Coffre et donnée àgpg-agent(TTL d'un an). - Après un redémarrage de l'hôte du dépôt, il suffit de se connecter en administrateur : dans la minute, la signature refonctionne pour toutes les suites.
Vérifier l'état :
coffrectl depot etat
systemctl list-timers secubox-depot-coffre.timerSi un export échoue parce que la clé est verrouillée, relancer l'unité de déverrouillage (systemctl restart secubox-depot-deverrouille.service) plutôt que de poser la phrase à la main : un réglage manuel écrase la bonne valeur.
Sessions de signature limitées : coffrectl depot session --minutes N (N au plus 60) puis coffrectl depot fin.
| Symptôme | Cause | Remède |
|---|---|---|
NO_PUBKEY à l'apt update
|
trousseau non binaire ou absent de signed-by=
|
le réinstaller avec install.sh (le .gpg publié est binaire) |
paquet refusé <= dépôt
|
version non montée, ou branche périmée | monter la version dans debian/changelog, ou rebaser |
Pinentry: Inappropriate ioctl for device |
clé verrouillée après redémarrage | se connecter en administrateur, voir plus haut |
| index du dépôt figé | job de publication sauté ou sans le secret de signature | lire le journal du job publish ; un job sauté ne devient pas rouge |
Operations-Release-Process-FR · Operations-Runbook-FR · Profils · Trixie · Installation-FR · Operations-APT-Repository