Skip to content

Guide d'administration — APT Repo Manager

Version : 1.0 — Mai 2026
Audience : Administrateurs système, responsables sécurité (RSSI), mainteneurs de paquets


Table des matières

  1. Accès à l'interface
  2. Tableau de bord
  3. Gestion des paquets
  4. 3.1 Liste et recherche
  5. 3.2 Upload d'un paquet
  6. 3.3 Import depuis une source APT amont
  7. 3.4 Promotion entre distributions
  8. Supervision sécurité — CVE et workflow RSSI
  9. SBOM et export de conformité
  10. Gestion des utilisateurs et rôles
  11. Tokens d'API pour CI/CD
  12. Paramètres système
  13. Statistiques et supervision
  14. Configuration des clients APT
  15. Sauvegarde et restauration

1. Accès à l'interface

L'interface web est accessible à l'adresse configurée lors du déploiement, par défaut :

http://<REPO_HOST>:8000

La navigation principale se fait via la barre latérale gauche. Les sections disponibles dépendent du rôle de l'utilisateur connecté :

Rôle Accès
viewer Dashboard, Paquets (lecture seule), Statistiques, SBOM
uploader + Upload, Import
maintainer + Suppression de paquets, Promotion
rssi + Section Sécurité (CVE review), Audit
admin Accès complet, Utilisateurs, Paramètres

L'authentification peut s'effectuer via compte local ou LDAP/AD selon la configuration (voir section 8).


2. Tableau de bord

Le tableau de bord est la première page affichée après connexion. Il offre une vue synthétique de l'état du dépôt.

Indicateurs clés

  • Nombre de paquets : total de paquets hébergés dans le dépôt.
  • Distributions : nombre de distributions configurées (ex. focal, jammy, noble, bookworm…).
  • Dernière synchronisation : horodatage de la dernière synchro avec les sources APT amont.

Graphique de téléchargements

Le graphique affiche l'activité de téléchargement sur des fenêtres de 7, 30 ou 90 jours (sélecteur en haut à droite du graphique). Il permet de détecter rapidement les tendances d'utilisation.

Flux d'activité récente

Le flux liste les derniers événements du dépôt : uploads, imports, décisions RSSI, suppressions, modifications de paramètres. Chaque entrée indique l'utilisateur à l'origine de l'action et l'horodatage.


3. Gestion des paquets

3.1 Liste et recherche

La section Paquets affiche la liste complète des paquets hébergés avec, pour chacun :

  • Nom et version
  • Architecture (amd64, arm64, all…)
  • Distribution cible
  • Statut CVE (aucune vulnérabilité / en attente de revue / vulnérabilité confirmée)

Filtrer les paquets

Utilisez la barre de recherche pour filtrer par nom. Le sélecteur de distribution permet de restreindre l'affichage à une distribution spécifique.

Détail d'un paquet

Cliquez sur un paquet pour accéder à :

  • Historique : toutes les versions importées ou uploadées avec leur statut.
  • Détails CVE : liste des CVE détectées, score CVSS, score EPSS, indicateur CISA KEV.
  • Export SBOM : générer le SBOM du paquet au format CycloneDX ou SPDX.

Suppression d'un paquet

Réservée aux rôles maintainer et supérieur. La suppression est définitive et inscrite dans l'audit trail. Une confirmation est demandée avant exécution.


3.2 Upload d'un paquet

Accédez à la section Upload via la barre latérale.

Étapes

  1. Glissez-déposez le fichier .deb dans la zone prévue (ou cliquez pour sélectionner un fichier).
  2. Sélectionnez la distribution cible dans le menu déroulant.
  3. Cliquez sur Envoyer.

Pipeline de validation en temps réel

Dès réception, le fichier passe par les étapes suivantes (affichées en direct) :

Étape Description
Format Vérification de la structure du paquet .deb
SHA256 Calcul et vérification de l'empreinte du fichier
ClamAV Analyse antivirus
CVE (Grype) Analyse des vulnérabilités connues
GPG Vérification de la signature cryptographique
Dépendances Résolution des dépendances dans le dépôt

Statuts possibles à l'issue de la validation

  • Accepté : le paquet est publié dans le dépôt APT et immédiatement disponible.
  • En attente de revue (pending_review) : une ou plusieurs CVE ont été détectées. Le paquet est placé en quarantaine et une notification est envoyée au RSSI.
  • Rejeté : le paquet est refusé (virus détecté, signature invalide, format incorrect). Il est placé en quarantaine et ne sera pas publié.

3.3 Import depuis une source APT amont

La section Import permet d'importer des paquets directement depuis les sources Ubuntu ou Debian synchronisées.

Procédure

  1. Saisissez le nom du paquet dans la barre de recherche. L'index APT synchronisé est interrogé en temps réel.
  2. Sélectionnez le paquet et la version souhaitée dans les résultats.
  3. Cliquez sur Résoudre les dépendances pour visualiser l'arbre de dépendances complet.
  4. Cliquez sur Importer pour lancer le pipeline de validation.

Import par lot (batch)

Pour importer plusieurs paquets simultanément, cochez chaque paquet dans la liste de résultats puis cliquez sur Importer la sélection. Le pipeline s'exécute de manière séquentielle pour chaque paquet.

Remarque : les sources APT disponibles dépendent de la configuration (section Sources APT des Paramètres). Seules les sources activées sont interrogées.


3.4 Promotion entre distributions

La section Distributions liste les distributions configurées avec le nombre de paquets hébergés dans chacune.

Promouvoir un paquet

  1. Sélectionnez la distribution source.
  2. Identifiez le paquet à promouvoir dans la liste.
  3. Cliquez sur Promouvoir et sélectionnez la distribution cible.
  4. Confirmez l'opération.

La promotion est enregistrée dans l'audit trail. Le paquet promu est soumis au même pipeline de validation que lors d'un upload direct.

Migrer des paquets

L'option Migrer permet de déplacer un ensemble de paquets d'une distribution à une autre en une seule opération.


4. Supervision sécurité — CVE et workflow RSSI

File de revue CVE

La section Sécurité est accessible aux rôles rssi et admin. Elle centralise la gestion des vulnérabilités.

File de revue (Review Queue)

Liste tous les paquets au statut pending_review, c'est-à-dire en attente d'une décision RSSI. Pour chaque paquet :

  • Nom, version, distribution
  • CVE(s) détectée(s) avec score CVSS
  • Score EPSS (probabilité d'exploitation)
  • Indicateur CISA KEV (Known Exploited Vulnerability)
  • SLA restant (délai de décision configuré par sévérité)

Tableau de bord des vulnérabilités

Vue synthétique classant toutes les vulnérabilités connues dans le dépôt par sévérité :

Sévérité Couleur
Critical Rouge
High Orange
Medium Jaune
Low Bleu

Workflow de décision RSSI

  1. Un paquet uploadé ou importé déclenche une analyse CVE (Grype).
  2. Si une vulnérabilité est détectée selon la politique configurée (section Politique CVE), le paquet passe en statut pending_review.
  3. Une notification est envoyée via webhook (Slack/Teams/Mattermost) et/ou email.
  4. Le RSSI accède à Sécurité > File de revue.
  5. Il consulte les détails de chaque CVE, les scores EPSS et les indicateurs KEV.
  6. Il prend sa décision :
  7. Approuver : le paquet est publié dans le dépôt APT.
  8. Rejeter : le paquet reste en quarantaine avec une justification obligatoire.
  9. La décision, la justification et l'horodatage sont inscrits dans l'audit trail.

ClamAV

L'état de l'antivirus ClamAV est affiché dans la section Sécurité (version des signatures, date de dernière mise à jour). Un bouton Mettre à jour les signatures permet de déclencher une mise à jour manuelle immédiate.


5. SBOM et export de conformité

La section SBOM (Software Bill of Materials) permet de générer et d'exporter une liste exhaustive des composants logiciels présents dans le dépôt.

Paramètres d'export

Paramètre Options
Format CycloneDX JSON (OWASP) ou SPDX JSON (ISO/IEC 5962)
Distribution Toutes ou une distribution spécifique

Interface

  • Nombre de paquets inclus dans le SBOM sélectionné.
  • Aperçu : affichage des 5 premiers composants pour vérification avant export.
  • Export complet : téléchargement du fichier SBOM complet (nécessite une authentification valide).

Export par paquet

Depuis la fiche d'un paquet (section Paquets), il est possible d'exporter le SBOM individuellement pour ce paquet uniquement, au format souhaité.

Usage réglementaire

Les fichiers SBOM exportés sont conformes aux exigences NIS2 et aux recommandations de l'ANSSI pour la traçabilité des composants logiciels. Archivez-les conjointement aux journaux d'audit.


6. Gestion des utilisateurs et rôles

La section Utilisateurs est réservée aux administrateurs (admin).

Liste des utilisateurs

Affiche tous les comptes avec : nom d'utilisateur, rôle, date de dernière connexion, statut (actif/inactif).

Créer un utilisateur

  1. Cliquez sur Nouvel utilisateur.
  2. Renseignez les champs : nom d'utilisateur, mot de passe, rôle, nom complet, adresse email.
  3. Validez.

Le compte est immédiatement actif.

Modifier un utilisateur

  • Rôle : modifiable via le menu déroulant dans la liste.
  • Activer / Désactiver : le basculement est immédiat. Un utilisateur désactivé ne peut plus se connecter.
  • Réinitialiser le mot de passe : génère un nouveau mot de passe temporaire affiché une seule fois.
  • Supprimer : suppression définitive après confirmation.

Rôles disponibles

Rôle Description
viewer Lecture seule
uploader Upload et import de paquets
maintainer + Suppression, promotion
rssi + Revue CVE, audit
admin Accès complet

Authentification LDAP/AD

Si LDAP est configuré (section Paramètres > LDAP/AD), les utilisateurs peuvent se connecter avec leurs identifiants d'annuaire. Les groupes LDAP peuvent être mappés aux rôles applicatifs. L'auto-provisionnement crée automatiquement un compte local à la première connexion.


7. Tokens d'API pour CI/CD

Les tokens d'API permettent à des systèmes externes (pipelines CI/CD, scripts) d'interagir avec le dépôt sans utiliser de session interactive.

Créer un token

  1. Aller dans Paramètres > Tokens API (ou depuis la fiche utilisateur).
  2. Cliquer sur Créer un token.
  3. Renseigner :
  4. Nom : identifiant descriptif (ex. gitlab-ci-prod).
  5. Rôle : le rôle uploader est recommandé pour les pipelines de publication.
  6. Expiration : optionnelle (laisser vide pour un token permanent).
  7. Cliquer sur Générer.
  8. Copier immédiatement le token — il ne sera plus affiché après fermeture de la fenêtre.

Utiliser un token

Ajoutez l'en-tête HTTP suivant à chaque requête API :

Authorization: Bearer repod_xxxxxxxxxxxxx

Exemple avec curl :

curl -H "Authorization: Bearer repod_xxxxxxxxxxxxx" \
     http://REPO_HOST:8000/api/packages

Exemple dans un pipeline GitLab CI :

upload:
  script:
    - |
      curl -s -X POST \
        -H "Authorization: Bearer $REPOD_TOKEN" \
        -F "file=@monpaquet_1.0_amd64.deb" \
        -F "distribution=jammy" \
        http://REPO_HOST:8000/api/upload

Stockez le token dans les variables secrètes de votre outil CI/CD, jamais en clair dans le code source.

Révoquer un token

Depuis Paramètres > Tokens API, cliquez sur Révoquer en regard du token concerné. La révocation est immédiate.


8. Paramètres système

La section Paramètres est réservée aux administrateurs. Elle regroupe toutes les configurations globales de l'application.

Général

  • URL de l'application : URL publique utilisée dans les notifications et les liens générés.
  • Planification de la synchronisation : heure et minute de la synchronisation quotidienne avec les sources APT amont.
  • Activer / Désactiver la synchronisation automatique.

Sources APT

Liste des sources Ubuntu et Debian disponibles. Activez ou désactivez individuellement chaque source selon les distributions à synchroniser.

Sources typiques disponibles :

  • Ubuntu : focal (20.04), jammy (22.04), noble (24.04)
  • Debian : buster (10), bullseye (11), bookworm (12)

Notifications

  • URL du webhook : endpoint Slack, Microsoft Teams ou Mattermost pour les alertes automatiques (nouveaux paquets en attente, décisions RSSI, erreurs système).
  • Bouton Tester : envoie un message de test au webhook configuré.

Email SMTP

Configurez l'envoi d'emails pour les notifications et alertes :

Champ Description
Hôte SMTP Adresse du serveur de messagerie
Port Généralement 587 (STARTTLS) ou 465 (TLS)
Identifiant / Mot de passe Credentials du compte d'envoi
Expéditeur (From) Adresse affichée dans les emails
Destinataire(s) (To) Adresse(s) de réception des alertes
TLS Activer/désactiver le chiffrement

Le bouton Tester envoie un email de test aux destinataires configurés.

GPG

  • Empreinte de la clé : fingerprint de la clé GPG utilisée pour signer les paquets.
  • Clé publique : affichage et copie de la clé publique (à distribuer aux clients APT).
  • Générer une nouvelle clé : crée une nouvelle paire de clés GPG. Attention : les clients APT devront mettre à jour leur trousseau.

LDAP/AD

Configuration de l'annuaire d'entreprise pour l'authentification centralisée :

Champ Description
Hôte Adresse du serveur LDAP/AD
Port 389 (LDAP), 636 (LDAPS)
SSL / STARTTLS Mode de chiffrement
Validation du certificat TLS Activer en production
DN de liaison (Bind DN) Compte de service pour les requêtes LDAP
Mot de passe de liaison Mot de passe du compte de service
Base DN Racine de recherche dans l'annuaire
Filtre utilisateur Filtre LDAP (ex. (objectClass=person))
Mapping des attributs Correspondance attributs LDAP → champs applicatifs
Mapping groupes → rôles Association groupe LDAP à un rôle applicatif (5 rôles)
Auto-provisionnement Créer automatiquement un compte à la première connexion

Le bouton Tester vérifie la connectivité et l'authentification avec les paramètres saisis.

Rétention

  • Durée de conservation des journaux d'audit : nombre de jours avant purge automatique.
  • Durée de conservation des imports : nombre de jours avant nettoyage des fichiers d'import temporaires.

Politique CVE

Définit le comportement du pipeline de validation face aux vulnérabilités :

Sévérité Actions disponibles
Critical block (rejet automatique) / review (file RSSI) / warn / allow
High idem
Medium idem
Low idem

Autres paramètres :

  • SLA (jours) : délai maximum de décision par sévérité, suivi dans la file RSSI.
  • Enrichissement automatique EPSS : récupère les scores de probabilité d'exploitation.
  • Enrichissement automatique KEV : récupère les indicateurs CISA Known Exploited Vulnerabilities.

Validation

  • Activer ClamAV : active/désactive l'analyse antivirus lors du pipeline.
  • Activer Grype : active/désactive l'analyse CVE lors du pipeline.
  • Taille maximale d'upload : limite en Mo pour les fichiers .deb uploadés.

9. Statistiques et supervision

Statistiques (Téléchargements)

La section Statistiques offre une vue détaillée de l'utilisation du dépôt.

Métriques globales

  • Nombre total de téléchargements
  • Nombre de paquets uniques téléchargés
  • Nombre de clients uniques (adresses IP)
  • Volume total servi (Go/Mo)

Graphique journalier

Histogramme des téléchargements sur 7, 30 ou 90 jours.

Top paquets téléchargés

Tableau des paquets les plus populaires avec barre de popularité relative.

50 derniers téléchargements

Liste détaillée incluant : adresse IP client, user-agent, nom du paquet, taille, horodatage.

Supervision (Health)

La section Supervision fournit un état de santé en temps réel du système. Elle se rafraîchit automatiquement toutes les 30 secondes.

Contrôles effectués

Contrôle Description
Volume Manifests Espace disque utilisé par les manifestes
Volume Pool Espace disque utilisé par les fichiers .deb
Volume Audit Espace disque utilisé par les journaux d'audit
ClamAV Version des signatures antivirus
Paquets Compteurs par distribution et statut
Scheduler Prochaines exécutions planifiées

Indicateurs de remplissage disque

  • Vert : < 75 % utilisé
  • Orange : entre 75 % et 90 %
  • Rouge : > 90 % (action requise)

Planifiez une expansion de stockage dès que l'indicateur passe en orange.

Journaux d'audit

La section Audit affiche le journal chronologique de toutes les actions effectuées dans l'application.

Filtres disponibles

  • Par type d'action (upload, import, suppression, décision RSSI, modification paramètre…)
  • Par utilisateur
  • Par paquet

Export

Le journal d'audit peut être exporté au format JSONL pour archivage ou intégration dans un SIEM.


10. Configuration des clients APT

Pour qu'une machine cliente puisse utiliser le dépôt APT, elle doit être configurée pour lui faire confiance et connaître son adresse.

Méthode automatique (recommandée)

Une commande d'installation automatique est disponible dans la section Config Client de l'interface :

curl -s http://REPO_HOST:8000/install | bash

Ce script réalise toutes les étapes manuelles décrites ci-dessous.

Méthode manuelle

1. Importer la clé GPG publique

curl -sL http://REPO_HOST:8000/repos/dists/jammy/Release.gpg \
  | gpg --dearmor \
  > /etc/apt/trusted.gpg.d/repod.gpg

2. Déclarer le dépôt

echo "deb http://REPO_HOST:8000/repos jammy main" \
  > /etc/apt/sources.list.d/repod.list

Adaptez jammy au nom de la distribution cible (focal, noble, bookworm, etc.).

3. Mettre à jour le cache APT

apt update

4. Installer un paquet

apt install nom-du-paquet

Clé GPG

La clé GPG publique est accessible depuis Paramètres > GPG. Elle doit être redistribuée aux clients chaque fois qu'une nouvelle clé est générée.


11. Sauvegarde et restauration

Script de sauvegarde

Un script backup.sh est fourni à la racine du projet. Il sauvegarde les données critiques : pool de paquets, manifestes, base de données, journaux d'audit.

Sauvegarde manuelle (répertoire par défaut)

./backup.sh

Sauvegarde vers un NAS ou stockage externe

BACKUP_DIR=/mnt/nas ./backup.sh

Simulation (dry-run)

./backup.sh --dry-run

Affiche les fichiers qui seraient sauvegardés sans effectuer aucune opération.

Planification

Il est recommandé de planifier la sauvegarde quotidiennement via cron :

# Sauvegarde quotidienne à 02h00
0 2 * * * /opt/repod/backup.sh >> /var/log/repod-backup.log 2>&1

Restauration

Pour restaurer depuis une sauvegarde, arrêtez le service, remplacez les volumes Docker par les données sauvegardées, puis redémarrez :

docker compose down
# Restaurer les données dans les volumes correspondants
docker compose up -d

Consultez le README du projet pour le détail des volumes Docker et leur correspondance avec les chemins de sauvegarde.

Données sauvegardées

Données Importance
Pool de paquets (.deb) Critique
Manifestes APT Critique
Base de données applicative Critique
Journaux d'audit (.jsonl) Haute
Configuration GPG Haute
Paramètres de l'application Moyenne

Recommandations

  • Testez la restauration régulièrement dans un environnement de test.
  • Conservez au minimum 30 jours de sauvegardes.
  • Stockez les sauvegardes hors du serveur hébergeant le dépôt (NAS, stockage objet S3-compatible).
  • Chiffrez les archives de sauvegarde contenant des paquets propriétaires.

Guide généré pour APT Repo Manager — Mai 2026