Installer Harbor (registre d'artefacts)
Ce guide vous explique comment installer et configurer Harbor sur un serveur Ubuntu 24.04 LTS. Harbor est un registre d'artefacts cloud-native de rĂ©fĂ©rence (projet CNCF graduated) : il permet de stocker des artefacts au format OCI (Open Container Initiative). Vous pouvez y hĂ©berger vos builds Docker (images de conteneurs), vos charts Helm pour Kubernetes, ainsi que les SBOM (Software Bill of Materials) et, depuis les versions rĂ©centes, les artefacts IA/ML. Harbor intĂšgre Trivy pour le scan de vulnĂ©rabilitĂ©s, le RBAC, lâOIDC/LDAP et la rĂ©plication entre registres.
Le dĂ©ploiement dĂ©crit ici utilise lâinstalleur officiel (Docker Compose) sur une VM ou un serveur dĂ©diĂ©, avec HTTPS et certificats Let's Encrypt.
Commander un serveurâ
Pour héberger votre instance Harbor, HostMyServers propose plusieurs offres adaptées :
- VPS Performance - Idéal pour un registre de test ou petit volume
- VPS NVMe - Excellent rapport qualité/prix
- Serveurs dédiés Eco - Pour de nombreux projets ou images
- Serveurs dédiés Performance - Performance maximale
PrĂ©requisâ
- AccĂšs SSH root ou utilisateur avec sudo
- SystĂšme Ubuntu 24.04 LTS 64 bits
- Docker (moteur 20.10.10+) et Docker Compose (v2 ou v1.18+)
- Un nom de domaine (ex.
harbor.votredomaine.com) avec un enregistrement A pointant vers lâIP du serveur - Ports 80 (HTTP, pour Certbot ou redirection) et 443 (HTTPS) accessibles
Configuration requiseâ
| Composant | Minimum | Recommandé |
|---|---|---|
| RAM | 4 Go | 8 Go |
| CPU | 2 cĆurs | 4 cĆurs |
| Stockage | 40 Go | 160 Go |
| Réseau | 100 Mbps | 1 Gbps |
En production, configurez toujours HTTPS avec des certificats valides (Let's Encrypt ou PKI dâentreprise). Harbor dĂ©prĂ©cie progressivement le HTTP.
Connexion au serveurâ
Connectez-vous en SSH Ă votre serveur :
ssh utilisateur@adresse_ip_serveur
Mise Ă jour du systĂšmeâ
Mettez Ă jour les paquets avant de commencer :
sudo apt update
sudo apt upgrade -y
Installation de Docker et Docker Composeâ
Harbor sâappuie sur Docker et Docker Compose. Si ce nâest pas dĂ©jĂ fait, installez-les :
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "${VERSION_CODENAME:-$VERSION}") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Vérifiez :
docker --version
docker compose version
Obtenir les certificats TLS (Let's Encrypt)â
Harbor doit ĂȘtre configurĂ© avec un certificat et une clĂ© privĂ©e. Obtenez-les avec Certbot avant dâinstaller Harbor (port 80 doit ĂȘtre libre) :
sudo apt install -y certbot
sudo certbot certonly --standalone -d harbor.votredomaine.com -m votre-email@exemple.com --agree-tos --non-interactive
Les fichiers seront dans /etc/letsencrypt/live/harbor.votredomaine.com/ : fullchain.pem (certificat) et privkey.pem (clĂ© privĂ©e). Notez ces chemins pour lâĂ©tape suivante.
Certbot renouvelle automatiquement les certificats. AprĂšs renouvellement, redĂ©marrez les conteneurs Harbor pour quâils rechargent les certificats : cd /opt/harbor && sudo docker compose down && sudo docker compose up -d.
TĂ©lĂ©chargement et extraction de Harborâ
Harbor propose un installeur offline (contenant les images) ou online (tĂ©lĂ©charge les images au premier lancement). Nous utilisons lâinstalleur offline pour plus de fiabilitĂ©.
Consultez les releases Harbor sur GitHub pour la derniĂšre version stable (ex. v2.14.2). Adaptez lâURL et le nom du fichier si besoin :
cd /opt
sudo wget https://github.com/goharbor/harbor/releases/download/v2.14.2/harbor-offline-installer-v2.14.2.tgz
sudo tar xzvf harbor-offline-installer-v2.14.2.tgz
cd harbor
Configuration de Harborâ
Copiez le fichier de configuration modÚle et éditez-le :
sudo cp harbor.yml.tmpl harbor.yml
sudo nano harbor.yml
ParamĂštres essentiels Ă modifier (remplacez les valeurs par les vĂŽtres) :
# Nom d'hĂŽte ou domaine (jamais localhost)
hostname: harbor.votredomaine.com
# HTTPS (obligatoire en production)
https:
port: 443
certificate: /etc/letsencrypt/live/harbor.votredomaine.com/fullchain.pem
private_key: /etc/letsencrypt/live/harbor.votredomaine.com/privkey.pem
# Mot de passe admin (à changer impérativement)
harbor_admin_password: VotreMotDePasseSecurise
# Répertoire de données
data_volume: /data/harbor
# Scan de vulnérabilités avec Trivy (recommandé)
trivy:
ignore_unfixed: false
security_check: vuln,config,secret
skip_update: false
insecure: false
| ParamĂštre | Description |
|---|---|
hostname | Domaine ou FQDN utilisé pour accéder à Harbor (doit correspondre au certificat) |
https.certificate / private_key | Chemins vers le certificat et la clé TLS |
harbor_admin_password | Mot de passe du compte admin (Ă changer au premier accĂšs) |
data_volume | Répertoire de stockage des données Harbor |
trivy.* | Options du scanner Trivy (CVE, config, secrets) |
Le mot de passe par défaut dans le template est Harbor12345. Remplacez-le par un mot de passe fort avant le premier démarrage.
Lancement de lâinstallationâ
Lancez le script dâinstallation avec lâoption Trivy pour activer le scan de vulnĂ©rabilitĂ©s sur les images :
sudo ./install.sh --with-trivy
Le script vérifie les prérequis, prépare les fichiers Docker Compose et démarre les conteneurs. à la fin, vous devriez voir :
â ----Harbor has been installed and started successfully.----
Pare-feuâ
Ouvrez les ports HTTP et HTTPS si nécessaire :
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
AccĂšs Ă Harborâ
- Ouvrez un navigateur et allez Ă :
https://harbor.votredomaine.com - Connectez-vous avec les identifiants par défaut : admin / mot de passe défini dans
harbor_admin_password - Changez immĂ©diatement le mot de passe admin : Administration â Utilisateurs â modifier le compte admin
- Créez un projet (ex.
monprojet) pour y pousser vos images
Pousser une image vers Harborâ
Depuis une machine oĂč Docker est installĂ© et qui peut joindre votre Harbor :
# Connexion au registre
docker login harbor.votredomaine.com
# Saisir : admin et le mot de passe
# Taguer une image (remplacer par votre projet et votre image)
docker tag nginx:alpine harbor.votredomaine.com/monprojet/nginx:alpine
# Pousser l'image
docker push harbor.votredomaine.com/monprojet/nginx:alpine
Dans lâinterface Harbor, lâimage apparaĂźt dans le projet. Si Trivy est activĂ©, un scan peut ĂȘtre lancĂ© automatiquement ou manuellement pour afficher les vulnĂ©rabilitĂ©s (CVE).
Harbor supporte aussi le stockage de charts Helm (format OCI). AprĂšs avoir configurĂ© Helm avec votre registre Harbor, vous pouvez pousser et tirer des charts avec helm push / helm pull depuis le mĂȘme projet. Ainsi, un mĂȘme registre OCI peut centraliser vos images Docker et vos charts Helm pour Kubernetes.
Gestion et arrĂȘt de Harborâ
Les conteneurs sont gérés par Docker Compose dans /opt/harbor :
cd /opt/harbor
# Voir les conteneurs
sudo docker compose ps
# ArrĂȘter Harbor
sudo docker compose down
# Redémarrer Harbor
sudo docker compose up -d
En cas de problĂšmeâ
La page Harbor ne sâaffiche pas ou erreur HTTPSâ
- Vérifiez que le hostname dans
harbor.ymlcorrespond exactement au domaine utilisé dans le navigateur et au nom commun du certificat. - Vérifiez les chemins des certificats :
sudo ls -la /etc/letsencrypt/live/harbor.votredomaine.com/ - Consultez les logs :
cd /opt/harbor && sudo docker compose logs -f proxy
Les conteneurs ne dĂ©marrent pasâ
- Vérifiez les logs :
cd /opt/harbor && sudo docker compose logs - VĂ©rifiez lâespace disque :
df -h(Harbor et les images nĂ©cessitent de lâespace) - VĂ©rifiez que les ports 80 et 443 ne sont pas utilisĂ©s par un autre service :
ss -tlnp | grep -E ':80|:443'
Docker login Ă©choue (x509, certificat)â
- En développement, vous pouvez ajouter le registre en insecure dans
/etc/docker/daemon.json(non recommandé en production). - En production, assurez-vous que le certificat Let's Encrypt est valide et que le client Docker fait bien confiance au CA (souvent le cas avec Let's Encrypt).