Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| container:harbor:start [2025/12/19 14:20] – sborne | container:harbor:start [2025/12/22 13:05] (aktuell) – sborne | ||
|---|---|---|---|
| Zeile 9: | Zeile 9: | ||
| ---- | ---- | ||
| - | ====== 1 - Installation | + | ====== 1 - Vorbereitungen |
| + | |||
| + | Es sind mehrere vorbereitende Schritte notwendig. | ||
| + | |||
| + | ===== 1.1 - SSL-Zertifikate ===== | ||
| + | |||
| + | Der Harbor bringt selbst keine Zertifikate mit. Diese müssen manuell erstellt oder von Drittanbietern besorgt werden. Eine Methode zum Erstellen eines eigenen Zertifikats ist [[: | ||
| + | |||
| + | ===== 1.2 - Docker ===== | ||
| + | |||
| + | Harbor läuft als Docker-Container. Dieses Programm muss als Voraussetzung installiert werden. Docker kann aus den Repositories installiert werden, sofern die Docker-Repositories eingebunden wurden: | ||
| + | < | ||
| + | |||
| + | ~# apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== 1.3 - Harbor | ||
| Harbor kann von der Seite " | Harbor kann von der Seite " | ||
| - | ===== 1.1 - Herunterladen | + | **Schritt |
| < | < | ||
| Zeile 33: | Zeile 50: | ||
| </ | </ | ||
| - | ===== 1.2 - Archiv entpacken ===== | + | **Schritt |
| < | < | ||
| ~# tar xzvf harbor-offline-installer-v2.14.1.tgz | ~# tar xzvf harbor-offline-installer-v2.14.1.tgz | ||
| - | harbor/ | + | harbor/ |
| - | harbor/ | + | harbor/ |
| - | harbor/ | + | harbor/ |
| - | harbor/ | + | harbor/ |
| - | harbor/ | + | harbor/ |
| harbor/ | harbor/ | ||
| ~# | ~# | ||
| Zeile 47: | Zeile 64: | ||
| </ | </ | ||
| - | ===== 1.3 - Verschlüsselung | + | ===== 1.4 - Zertifikat |
| - | Der Harbor | + | Das zum Server erstellte Zertifikat muss für Harbor |
| - | ==== 1.3.1 - Let' | + | ==== 1.4.1 - Harbor |
| - | [[https://letsencrypt.org/ | + | Für Harbor wird unter "'' |
| - | ==== 1.3.2 - Eigenes Zertifikat ==== | + | **Schritt |
| + | < | ||
| + | ~# mkdir -pv / | ||
| + | mkdir: Verzeichnis '/ | ||
| - | Es wird ein eigenes Zertifikat erstllt. | + | ~# |
| - | **Schritt | + | </ |
| + | |||
| + | **Schritt | ||
| < | < | ||
| + | ~# cp -v slxharbor.fritz.box.crt / | ||
| + | ' | ||
| + | ' | ||
| + | ~# | ||
| - | ~# openssl | + | </ |
| + | |||
| + | ==== 1.4.2 - Docker ==== | ||
| + | |||
| + | Docker interpretiert "'' | ||
| + | |||
| + | **Schritt 1**: Konvertieren der Datei: | ||
| + | < | ||
| + | ~# openssl | ||
| </ | </ | ||
| - | **Schritt 2**: Erstellen | + | **Schritt 2**: Erstellen |
| < | < | ||
| - | ~# openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=DE/ST=Niedersachsen/L=Hannover/O=looper/OU=Personal/CN=Personal Root CA" -key ca.key -out ca.crt | + | ~# mkdir -pv /etc/docker/certs.d/slxharbor.fritz.box |
| + | mkdir: Verzeichnis '/etc/docker' | ||
| + | mkdir: Verzeichnis '/ | ||
| + | mkdir: Verzeichnis '/ | ||
| + | ~# | ||
| </ | </ | ||
| - | **Schritt 3**: Erstellen des privaten Schlüssels "'' | + | **Schritt 3**: Kopieren der Zertifikate: |
| < | < | ||
| - | ~# openssl genrsa | + | ~# cp -v slxharbor.fritz.box.cert / |
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ~# | ||
| </ | </ | ||
| - | **Schritt 4**: Generieren einer Zertifikatsanforderung (CSR): | + | **Schritt 4**: Docker neu starten: |
| < | < | ||
| - | ~# openssl req -sha512 -new -subj "/ | + | ~# systemctl restart docker |
| + | ~# | ||
| </ | </ | ||
| - | **Schritt 5**: Erstellen | + | ====== 2 - YAML-Datei ====== |
| + | |||
| + | Vor der eigentlichen Installation muss die mitgelieferte YAML-Datei noch bearbeitet werden. Dazu muss die Vorlage "'' | ||
| < | < | ||
| - | ~# cat> v3.ext <<-EOF | + | ~# cp -v harbor.yml.tmpl harbor.yml\ |
| - | authorityKeyIdentifier=keyid, | + | ' |
| - | basicConstraints=CA:FALSE | + | ~# |
| - | keyUsage = digitalSignature, | + | |
| - | extendedKeyUsage = serverAuth | + | </code> |
| - | subjectAltName | + | |
| + | Jetzt kann die Datei angepasst werden. Folgende Parameter wurden neu gesetzt: | ||
| + | |||
| + | <code> | ||
| + | hostname: slxharbor.fritz.box | ||
| + | ... | ||
| + | https: | ||
| + | | ||
| + | | ||
| + | ... | ||
| + | harbor_admin_password: | ||
| + | ... | ||
| + | database: | ||
| + | password: ******* | ||
| + | ... | ||
| + | data_volume: | ||
| + | |||
| + | </ | ||
| + | |||
| + | < | ||
| + | ====== 3 - Installation ====== | ||
| + | |||
| + | Jetzt kann das Installationsskript ausgeführt werden: | ||
| + | |||
| + | < | ||
| + | ~# ./ | ||
| + | [Step 0]: checking if docker is installed ... | ||
| + | |||
| + | Note: docker version: 29.1.3 | ||
| + | |||
| + | [Step 1]: checking docker-compose is installed ... | ||
| + | |||
| + | Note: Docker Compose version v5.0.0 | ||
| + | |||
| + | [Step 2]: loading Harbor images ... | ||
| + | Loaded image: goharbor/ | ||
| + | Loaded image: goharbor/ | ||
| + | Loaded image: goharbor/ | ||
| + | Loaded image: goharbor/ | ||
| + | Loaded image: goharbor/ | ||
| + | Loaded image: goharbor/ | ||
| + | Loaded image: goharbor/ | ||
| + | Loaded image: goharbor/ | ||
| + | Loaded image: goharbor/ | ||
| + | Loaded image: goharbor/ | ||
| + | Loaded image: goharbor/ | ||
| + | Loaded image: goharbor/ | ||
| + | |||
| + | [Step 3]: preparing environment ... | ||
| + | |||
| + | [Step 4]: preparing harbor configs ... | ||
| + | prepare base dir is set to / | ||
| + | Clearing the configuration file: / | ||
| + | Clearing the configuration file: / | ||
| + | Clearing the configuration file: / | ||
| + | Generated configuration file: / | ||
| + | Generated configuration file: / | ||
| + | Generated configuration file: / | ||
| + | Generated configuration file: / | ||
| + | Generated configuration file: / | ||
| + | Generated configuration file: / | ||
| + | Generated configuration file: / | ||
| + | Generated configuration file: / | ||
| + | Generated configuration file: / | ||
| + | Generated configuration file: / | ||
| + | Generated configuration file: / | ||
| + | Generated configuration file: / | ||
| + | copy / | ||
| + | ca file / | ||
| + | copy to shared trust ca dir as name storage_ca_bundle.crt ... | ||
| + | copy None to shared trust ca dir as name redis_tls_ca.crt ... | ||
| + | Generated and saved secret to file: / | ||
| + | Successfully called func: create_root_cert | ||
| + | Generated configuration file: / | ||
| + | Clean up the input dir | ||
| + | |||
| + | Note: stopping existing Harbor instance ... | ||
| - | [alt_names] | + | [Step 5]: starting Harbor |
| - | DNS.1=slxharbor.fritz.box | + | [+] up 10/10 |
| - | DNS.2=slxharbor.fritz | + | ✔ Network harbor_harbor |
| - | DNS.3=slxharbor | + | ✔ Container harbor-log |
| - | DNS.4=harbor.fritz.box | + | ✔ Container harbor-db |
| - | DNS.5=harbor | + | ✔ Container registry |
| - | EOF | + | ✔ Container |
| + | ✔ Container registryctl | ||
| + | ✔ Container redis | ||
| + | ✔ Container | ||
| + | ✔ Container harbor-jobservice Created | ||
| + | ✔ Container nginx | ||
| + | ✔ ----Harbor has been installed and started successfully.---- | ||
| ~# | ~# | ||
| </ | </ | ||
| - | **Schritt 6**: Erstellen des Zertifikats "'' | + | ====== 4 - Kontrolle ====== |
| + | |||
| + | Am Ende der Installation wurde angezeigt, dass die Installation erfolgreich war und Harbor gestartet wurde. Dies lässt sich jetzt auf mehrere Arten kontrollieren. | ||
| + | |||
| + | ===== 4.1 - Docker-Container ===== | ||
| + | |||
| + | Es kann geprüft werden, welche Docker-Container gerade laufen: | ||
| < | < | ||
| - | ~# openssl x509 -req -sha512 | + | ~# docker ps\ |
| - | Certificate request self-signature ok | + | CONTAINER ID |
| - | subject=C=DE, | + | 5a9ec57ad6c9 |
| + | b2a1dfeaa584 | ||
| + | 0b74687b2dae | ||
| + | 321d88d3ebcf | ||
| + | e65496140ab3 | ||
| + | 6ebb82ec2e0a | ||
| + | 98b15e84535f | ||
| + | 1ac95fd29a67 | ||
| + | 5254d72818a9 | ||
| ~# | ~# | ||
| </ | </ | ||
| + | ===== 4.2 - Webseite ===== | ||
| + | |||
| + | Auch die Webseite von Harbor sollte jetzt erreichbar sein: [[https:// | ||
| + | |||
| + | {{https:// | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | ====== 5 - Wartung ====== | ||
| + | |||
| + | Die Wartung von Harbor wird zum entsprechenden Zeitpunkt nachgepflegt. | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | ====== 6 - Registrierung einrichten ====== | ||
| + | Am Beispiel von [[https:// | ||
| + | {{https:// | ||
| + | Mit Klick auf "'' | ||
| + | So sollte es dann hinterher aussehen: | ||
| + | {{https:// | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\\\ | ||
| + | \\ | ||
| ''< | ''< | ||