- Published on
Aptly: crea e gestisci un repository APT self-hosted per distribuire pacchetti Debian
- Authors

- Name
- Alessandro Iannacone
Introduzione
Distribuire applicazioni interne sotto forma di pacchetti .deb è una pratica solida in ambienti Linux, soprattutto in contesti DevOps e infrastrutturali. Tuttavia, affidarsi a repository esterni o a soluzioni improvvisate (come un server HTTP con una directory di pacchetti) introduce rapidamente problemi di sicurezza, versioning e governance.
Aptly risolve questo problema permettendo di creare e gestire un repository APT self-hosted, completo di snapshot, signing GPG e pubblicazione controllata.
In questo articolo vedremo cos'è Aptly, come installarlo, come configurarlo e come usarlo per distribuire pacchetti .deb, con un esempio pratico.
Cosa otterrai da questa guida
- Un repository APT self-hosted pronto all'uso
- Snapshot firmati per release riproducibili
- Pubblicazione via HTTP con Nginx
- Client Debian configurati in modo sicuro (senza
apt-key)
Cos'è Aptly
Aptly è uno strumento open-source progettato per:
- gestire repository APT locali
- importare pacchetti
.deb - creare snapshot immutabili
- pubblicare repository firmati
- sincronizzare mirror di repository esterni
È pensato per ambienti:
- enterprise
- CI/CD
- infrastrutture self-hosted
- distribuzione di software interno
Perché usare Aptly
I principali vantaggi di Aptly sono:
- Controllo totale sulle versioni distribuite
- Snapshot immutabili per rollback sicuri
- Firma GPG dei repository
- Distribuzione coerente su più server
- Nessuna dipendenza da servizi esterni
È particolarmente indicato quando:
- distribuisci software interno
- gestisci più ambienti (dev, staging, prod)
- vuoi riproducibilità e auditabilità
Installazione di Aptly
Prerequisiti
- Debian / Ubuntu
- Accesso root o sudo
- GPG installato
Installazione
apt update
apt install -y aptly gnupg
Verifica:
aptly version
Configurazione iniziale
Il file di configurazione principale è:
~/.aptly.conf
Esempio minimale:
{
"rootDir": "/opt/aptly",
"downloadConcurrency": 4,
"architectures": ["amd64"],
"dependencyFollowSuggests": false,
"dependencyFollowRecommends": false,
"dependencyFollowAllVariants": false
}
Crea la directory root:
mkdir -p /opt/aptly
Creare un repository locale
Creiamo un repository chiamato internal-apps:
aptly repo create \
-distribution=stable \
-component=main \
internal-apps
Verifica:
aptly repo list
Esempio: aggiungere pacchetti .deb
Supponiamo di avere un pacchetto interno:
myapp_1.0.0_amd64.deb
Aggiungiamolo al repository:
aptly repo add internal-apps myapp_1.0.0_amd64.deb
Controlla il contenuto:
aptly repo show internal-apps
Snapshot: versioning e rollback
Uno dei punti di forza di Aptly è l'uso degli snapshot.
Creiamo uno snapshot:
aptly snapshot create internal-apps-1.0.0 from repo internal-apps
Gli snapshot sono immutabili, perfetti per:
- promozione tra ambienti
- rollback immediato
- audit delle versioni
Pubblicare il repository
Creare una chiave GPG
gpg --full-generate-key
Esporta la chiave pubblica:
gpg --armor --export [email protected] > public.key
Pubblicazione
aptly publish snapshot \
-distribution=stable \
-component=main \
internal-apps-1.0.0
Aptly genererà una struttura APT completa.
Esporre il repository via HTTP
Il modo più semplice è usare Nginx.
Esempio di configurazione:
server {
listen 80;
server_name repo.example.local;
root /opt/aptly/public;
location / {
autoindex on;
}
}
Riavvia Nginx:
systemctl reload nginx
Configurare i client Debian
Sui server client:
curl -fsSL http://repo.example.local/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/internal-repo.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/internal-repo.gpg] http://repo.example.local stable main" | sudo tee /etc/apt/sources.list.d/internal.list
Nota: apt-key è deprecato; l'uso di signed-by è la modalità consigliata.
Aggiorna:
apt update
apt install myapp
Integrazione con CI/CD
Aptly si integra perfettamente con pipeline CI:
- build pacchetto
.deb - upload artefatto
aptly repo add- snapshot
- publish
Questo garantisce una supply chain controllata e riduce il rischio di pacchetti non verificati.
Best practice
- Usa snapshot per ogni release
- Non pubblicare mai direttamente i repo live
- Firma sempre i repository
- Separa ambienti (dev / staging / prod)
- Versiona la configurazione Aptly
Conclusioni
Aptly è uno strumento estremamente potente per chi vuole distribuire software Debian in modo professionale, sicuro e riproducibile.
In ambienti self-hosted, DevOps e enterprise, rappresenta una soluzione solida per costruire una supply chain affidabile, evitando workaround fragili e repository improvvisati.
Nel prossimo articolo potremo approfondire:
- promozione snapshot tra ambienti
- gestione multi-architettura
- hardening del repository
- integrazione con GPG smartcard o HSM
Per una consulenza o una verifica della tua situazione: