Skip to main content

Установка Harbor (реестр артефактов)

В этом руководстве описано, как установить и настроить Harbor на сервере Ubuntu 24.04 LTS. Harbor — ведущий облачный реестр артефактов (проект CNCF graduated): он позволяет хранить артефакты в формате OCI (Open Container Initiative). Вы можете размещать сборки Docker (образы контейнеров), чарты Helm для Kubernetes, а также SBOM (Software Bill of Materials) и в последних версиях артефакты ИИ/ML. Harbor интегрирует Trivy для сканирования уязвимостей, RBAC, OIDC/LDAP и репликацию между реестрами.

Описываемая установка использует официальный установщик (Docker Compose) на ВМ или выделенном сервере с HTTPS и сертификатами Let's Encrypt.

Заказать сервер

Для размещения экземпляра Harbor HostMyServers предлагает несколько подходящих вариантов:

Предварительные требования

  • SSH-доступ от root или пользователя с sudo
  • Система Ubuntu 24.04 LTS 64 бит
  • Docker (движок 20.10.10+) и Docker Compose (v2 или v1.18+)
  • Доменное имя (например, harbor.вашдомен.com) с записью A, указывающей на IP сервера
  • Доступны порты 80 (HTTP, для Certbot или редиректа) и 443 (HTTPS)

Требуемая конфигурация

КомпонентМинимумРекомендуется
ОЗУ4 ГБ8 ГБ
CPU2 ядра4 ядра
Хранилище40 ГБ160 ГБ
Сеть100 Мбит/с1 Гбит/с
HTTPS в продакшене

В продакшене всегда настраивайте HTTPS с действительными сертификатами (Let's Encrypt или корпоративная PKI). Harbor постепенно отказывается от HTTP.

Подключение к серверу

Подключитесь по SSH к серверу:

ssh пользователь@ip_адрес_сервера

Обновление системы

Обновите пакеты перед началом:

sudo apt update
sudo apt upgrade -y

Установка Docker и Docker Compose

Harbor использует Docker и Docker Compose. Если ещё не установлены:

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

Проверка:

docker --version
docker compose version

Получение TLS-сертификатов (Let's Encrypt)

Harbor должен быть настроен с сертификатом и закрытым ключом. Получите их с помощью Certbot до установки Harbor (порт 80 должен быть свободен):

sudo apt install -y certbot
sudo certbot certonly --standalone -d harbor.вашдомен.com -m ваш-email@пример.com --agree-tos --non-interactive

Файлы будут в /etc/letsencrypt/live/harbor.вашдомен.com/: fullchain.pem (сертификат) и privkey.pem (закрытый ключ). Запомните эти пути для следующего шага.

Продление

Certbot автоматически продлевает сертификаты. После продления перезапустите контейнеры Harbor для перезагрузки сертификатов: cd /opt/harbor && sudo docker compose down && sudo docker compose up -d.

Загрузка и распаковка Harbor

Harbor предоставляет офлайн-установщик (включает образы) или онлайн (загружает образы при первом запуске). Используем офлайн-установщик для надёжности.

Проверьте релизы Harbor на GitHub для последней стабильной версии (например, v2.14.2). При необходимости измените URL и имя файла:

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

Настройка Harbor

Скопируйте шаблон конфигурации и отредактируйте его:

sudo cp harbor.yml.tmpl harbor.yml
sudo nano harbor.yml

Основные параметры для изменения (замените своими значениями):

# Имя хоста или домен (никогда localhost)
hostname: harbor.вашдомен.com

# HTTPS (обязательно в продакшене)
https:
port: 443
certificate: /etc/letsencrypt/live/harbor.вашдомен.com/fullchain.pem
private_key: /etc/letsencrypt/live/harbor.вашдомен.com/privkey.pem

# Пароль администратора (сменить при первом входе)
harbor_admin_password: ВашНадежныйПароль

# Каталог данных
data_volume: /data/harbor

# Сканирование уязвимостей с Trivy (рекомендуется)
trivy:
ignore_unfixed: false
security_check: vuln,config,secret
skip_update: false
insecure: false
ПараметрОписание
hostnameДомен или FQDN для доступа к Harbor (должен совпадать с сертификатом)
https.certificate / private_keyПути к сертификату и TLS-ключу
harbor_admin_passwordПароль учётной записи admin (сменить при первом входе)
data_volumeКаталог хранения данных Harbor
trivy.*Параметры сканера Trivy (CVE, config, secrets)
Пароль администратора

Пароль по умолчанию в шаблоне — Harbor12345. Замените его на надёжный пароль перед первым запуском.

Запуск установки

Запустите скрипт установки с опцией Trivy для включения сканирования уязвимостей образов:

sudo ./install.sh --with-trivy

Скрипт проверяет предварительные требования, подготавливает файлы Docker Compose и запускает контейнеры. В конце должно отобразиться:

✔ ----Harbor has been installed and started successfully.----

Файрвол

При необходимости откройте порты HTTP и HTTPS:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

Доступ к Harbor

  1. Откройте браузер и перейдите по адресу: https://harbor.вашдомен.com
  2. Войдите с учётными данными по умолчанию: admin / пароль, заданный в harbor_admin_password
  3. Немедленно смените пароль администратора: АдминистрированиеПользователи → изменить учётную запись admin
  4. Создайте проект (например, мойпроект) для загрузки образов

Загрузка образа в Harbor

С машины с установленным Docker, которая может подключиться к вашему Harbor:

# Вход в реестр
docker login harbor.вашдомен.com
# Введите: admin и пароль

# Тегирование образа (замените на свой проект и образ)
docker tag nginx:alpine harbor.вашдомен.com/мойпроект/nginx:alpine

# Загрузка образа
docker push harbor.вашдомен.com/мойпроект/nginx:alpine

Образ отображается в проекте в интерфейсе Harbor. Если Trivy включён, сканирование может выполняться автоматически или вручную для отображения уязвимостей (CVE).

Harbor также поддерживает хранение чартов Helm (формат OCI). После настройки Helm с вашим реестром Harbor вы можете загружать и скачивать чарты с помощью helm push / helm pull из того же проекта. Таким образом, один реестр OCI может централизовать ваши образы Docker и чарты Helm для Kubernetes.

Управление и остановка Harbor

Контейнеры управляются Docker Compose в /opt/harbor:

cd /opt/harbor

# Список контейнеров
sudo docker compose ps

# Остановка Harbor
sudo docker compose down

# Перезапуск Harbor
sudo docker compose up -d

Устранение неполадок

Страница Harbor не загружается или ошибка HTTPS

  • Убедитесь, что hostname в harbor.yml точно совпадает с доменом в браузере и общим именем сертификата.
  • Проверьте пути к сертификатам: sudo ls -la /etc/letsencrypt/live/harbor.вашдомен.com/
  • Просмотрите логи: cd /opt/harbor && sudo docker compose logs -f proxy

Контейнеры не запускаются

  • Проверьте логи: cd /opt/harbor && sudo docker compose logs
  • Проверьте место на диске: df -h (Harbor и образы требуют места)
  • Убедитесь, что порты 80 и 443 не заняты другим сервисом: ss -tlnp | grep -E ':80|:443'

Docker login не удаётся (x509, сертификат)

  • В разработке можно добавить реестр как insecure в /etc/docker/daemon.json (не рекомендуется в продакшене).
  • В продакшене убедитесь, что сертификат Let's Encrypt действителен и клиент Docker доверяет ЦС (обычно так с Let's Encrypt).

Ссылки