Harbor – Installation et exploitation via Docker Compose sur la machine harbor

Table des matières

Pour insérer la table des matières :

Introduction, contexte, définitions et objectifs

Cette documentation décrit l’installation, la configuration et l’exploitation de Harbor sur la machine harbor dans un contexte d’usage interne.

Objectif

Déployer une registry privée d’entreprise permettant : - Hébergement d’images Docker internes - Gestion centralisée des projets - Contrôle d’accès RBAC - Interface web d’administration - Reverse proxy via Nginx Proxy Manager - Isolation via Docker Compose - Persistance des données

Architecture fonctionnelle

  • Machine hôte : harbor
  • Application : Harbor Registry
  • Mode : Docker Compose
  • Fichier principal : /compose/harbor/docker-compose.yml
  • Données : /data/harbor
  • Reverse Proxy : Nginx Proxy Manager
  • Domaine interne : harbor.int.edu-kit.fr

Sécurité

  • Accès strictement interne
  • Reverse proxy HTTPS
  • Administration sécurisée
  • RBAC
  • Support robot accounts

Prérequis

Environnement système

  • Nom d’hôte : harbor
  • OS : Debian / Ubuntu
  • CPU : 2 vCPU
  • RAM : 2 Go
  • Stockage système : 16 Go
  • Stockage :
    • /compose/harbor
    • /data/harbor
  • Réseau :
    • DNS interne
    • HTTPS
    • Accès Docker clients

Dépendances

  • Docker Engine
  • Docker Compose Plugin
  • OpenSSL
  • Nginx Proxy Manager

Installation et configuration

Installation Docker

sudo apt update && sudo apt upgrade -y
sudo apt install docker.io docker-compose-plugin openssl -y

Vérification

docker --version
docker compose version

Création de l’arborescence

sudo mkdir -p /compose/harbor
sudo mkdir -p /data/harbor

Téléchargement Harbor

cd /compose/harbor
wget https://github.com/goharbor/harbor/releases/latest/download/harbor-online-installer.tgz
tar xzf harbor-online-installer.tgz --strip-components=1

Vérification

ls -lah /compose/harbor

Configuration Harbor

Copie du template

cp harbor.yml.tmpl harbor.yml

Édition

nano harbor.yml

Paramètres principaux

hostname: harbor.int.edu-kit.fr

http:
  port: 8080

harbor_admin_password: CHANGER_CE_MOT_DE_PASSE

data_volume: /data/harbor

Explication

  • hostname : domaine interne
  • http.port : port local
  • harbor_admin_password : mot de passe admin
  • data_volume : stockage persistant

Génération Docker Compose

sudo ./install.sh

Résultat attendu

  • Génération de docker-compose.yml
  • Déploiement automatique des services :
    • core
    • portal
    • registry
    • jobservice
    • redis
    • postgresql
    • trivy (si activé)

Emplacement final

/compose/harbor/docker-compose.yml

Vérification

sudo docker ps

Test local

curl http://127.0.0.1:8080

Configuration Nginx Proxy Manager

Proxy Host interne

Domaine

harbor.int.edu-kit.fr

Paramètres

  • Scheme : http
  • Forward Hostname : IP_HARBOR
  • Forward Port : 8080

SSL

  • Certificat interne ou Let’s Encrypt
  • Force SSL
  • HTTP/2

Configuration Docker Client

Créer ou modifier :

sudo nano /etc/docker/daemon.json

Si certificat privé :

{
  "insecure-registries": ["harbor.int.edu-kit.fr"]
}

Redémarrage :

sudo systemctl restart docker

Première connexion

URL

https://harbor.int.edu-kit.fr

Identifiants

  • User : admin
  • Password : défini dans harbor.yml

Action immédiate

  • Changer mot de passe
  • Créer projets
  • Configurer utilisateurs
  • Robot accounts

Commandes Docker utiles

Login

docker login harbor.int.edu-kit.fr

Tag image

docker tag nginx harbor.int.edu-kit.fr/library/nginx:latest

Push

docker push harbor.int.edu-kit.fr/library/nginx:latest

Pull

docker pull harbor.int.edu-kit.fr/library/nginx:latest

Sauvegarde

Données critiques

/data/harbor

Sauvegarde

tar -czf /backup/harbor_$(date +%F).tar.gz /data/harbor

Mise à jour

Téléchargement nouvelle version

cd /compose/harbor
wget https://github.com/goharbor/harbor/releases/latest/download/harbor-online-installer.tgz

Procédure

  • Sauvegarde
  • Extraction
  • Remplacement harbor.yml
  • install.sh

Problèmes rencontré :

Port déjà utilisé

sudo ss -tulpn | grep 8080

Permissions stockage

sudo chown -R 10000:10000 /data/harbor

Reverse proxy inaccessible

  • Vérifier DNS
  • Vérifier SSL
  • Vérifier forwarding NPM

Push refusé

  • Vérifier login
  • Vérifier projet
  • Vérifier permissions

Bonnes pratiques

  • HTTPS obligatoire
  • Sauvegarde quotidienne
  • Restriction IP
  • RBAC strict
  • Trivy activé
  • Rotation des logs
  • Robot accounts par CI/CD

Sources :

  • Documentation officielle Harbor : https://goharbor.io/docs/
  • Releases Harbor : https://github.com/goharbor/harbor/releases
  • Docker Documentation : https://docs.docker.com/
  • Nginx Proxy Manager : https://nginxproxymanager.com/