Aller au contenu principal

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 :

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​

ComposantMinimumRecommandé
RAM4 Go8 Go
CPU2 cƓurs4 cƓurs
Stockage40 Go160 Go
Réseau100 Mbps1 Gbps
HTTPS en production

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.

Renouvellement

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ĂštreDescription
hostnameDomaine ou FQDN utilisé pour accéder à Harbor (doit correspondre au certificat)
https.certificate / private_keyChemins vers le certificat et la clé TLS
harbor_admin_passwordMot de passe du compte admin (Ă  changer au premier accĂšs)
data_volumeRépertoire de stockage des données Harbor
trivy.*Options du scanner Trivy (CVE, config, secrets)
Mot de passe admin

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​

  1. Ouvrez un navigateur et allez Ă  : https://harbor.votredomaine.com
  2. Connectez-vous avec les identifiants par défaut : admin / mot de passe défini dans harbor_admin_password
  3. Changez immĂ©diatement le mot de passe admin : Administration → Utilisateurs → modifier le compte admin
  4. 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.yml correspond 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).

RĂ©fĂ©rences​