Skip to content

Operations APT Repository FR

CyberMind-FR edited this page Oct 11, 2026 · 1 revision

Opérations : dépôt apt

À 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.

Organisation

É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-full

Le 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.

Publier un paquet construit

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.deb

Dans l'ordre :

  1. 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é.
  2. Ne publie jamais un aperçu (~aurora dans la version) : la mise à jour automatique l'installerait la nuit sur toutes les box.
  3. 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.
  4. Sauvegarde db, dists et conf, puis lance reprepro ... includedeb <suite> *.deb.
  5. Fait un reprepro export explicite : un includedeb qui échoue sur un paquet met la base à jour sans ré-exporter, et InRelease resterait ancien.
  6. Vérifie que InRelease est 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.

Rétrogradation

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é de signature et le Coffre

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 :

  1. Le Coffre est scellé au démarrage ; la connexion d'un administrateur l'ouvre.
  2. secubox-depot-coffre.timer lance chaque minute coffrectl 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).
  3. 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.timer

Si 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.

Problèmes courants

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

Voir aussi

Operations-Release-Process-FR · Operations-Runbook-FR · Profils · Trixie · Installation-FR · Operations-APT-Repository

SecuBox | FR | DE | 中文 | v3.0.0-alpha.12


Projet

Soutenir


🔴 BOOT — Démarrer

🟢 ROOT — Configuration

🟣 MIND — Modules

🔵 MESH — Référence

🟠 WALL — Matériel

🤖 Workflow Agents


Liens

Clone this wiki locally