TLS / HTTPS
NORA работает по протоколу HTTP. Терминация TLS выполняется обратным прокси-сервером.
Почему нет встроенного TLS?
Заголовок раздела «Почему нет встроенного TLS?»Это осознанное архитектурное решение:
- Разделение ответственности — NORA управляет артефактами, а не сертификатами. Встраивание TLS означает включение клиентов Let’s Encrypt, логики обновления сертификатов, протокола ACME и поддержки удостоверяющих центров — всё это уже реализовано в проверенных инструментах.
- Простота эксплуатации — сертификаты настраиваются в одном месте (обратный прокси), а не в каждом сервисе отдельно. При истечении сертификата достаточно обновить одну конфигурацию.
- Отраслевой стандарт — Docker Hub, GitHub Container Registry, AWS ECR, Harbor, Nexus — ни один из них не терминирует TLS внутри процесса реестра. Обратный прокси перед реестром — общепринятая практика.
- Простой запуск во внутренней сети — в доверенных сетях (лаборатория, сборочный конвейер) NORA работает сразу без управления сертификатами.
Рабочая среда: обратный прокси с TLS
Заголовок раздела «Рабочая среда: обратный прокси с TLS»Архитектура
Заголовок раздела «Архитектура»Клиент (docker push) → Обратный прокси (HTTPS :443) → NORA (HTTP :4000)Caddy (рекомендуется — автоматический Let’s Encrypt)
Заголовок раздела «Caddy (рекомендуется — автоматический Let’s Encrypt)»registry.example.com { reverse_proxy localhost:4000}Caddy автоматически получает и обновляет сертификаты.
server { listen 443 ssl; server_name registry.example.com;
ssl_certificate /etc/letsencrypt/live/registry.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/registry.example.com/privkey.pem;
# Необходимо для загрузки больших образов client_max_body_size 0;
location / { proxy_pass http://127.0.0.1:4000; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }}Traefik
Заголовок раздела «Traefik»services: traefik: image: traefik:v3 command: - --entrypoints.websecure.address=:443 - --certificatesresolvers.le.acme.tlschallenge=true - --certificatesresolvers.le.acme.email=admin@example.com ports: - 443:443
nora: image: ghcr.io/getnora-io/nora:latest labels: - traefik.http.routers.nora.rule=Host(\`registry.example.com\`) - traefik.http.routers.nora.tls.certresolver=le - traefik.http.services.nora.loadbalancer.server.port=4000Внутренняя сеть: незащищённый реестр
Заголовок раздела «Внутренняя сеть: незащищённый реестр»При работе NORA без TLS во внутренней сети необходимо настроить клиенты Docker для доверия реестру.
Настройка демона Docker
Заголовок раздела «Настройка демона Docker»Отредактируйте /etc/docker/daemon.json на каждом клиенте, которому нужен доступ:
{ insecure-registries: [192.168.1.100:4000]}Перезапустите Docker:
sudo systemctl restart dockerDNS-имя
Заголовок раздела «DNS-имя»При использовании DNS-имени (например, nora.internal:4000) укажите его:
{ insecure-registries: [nora.internal:4000]}Внимание: параметр
insecure-registriesотключает проверку TLS-сертификата для указанного узла. Используйте только в доверенных сетях.
Kubernetes (containerd)
Заголовок раздела «Kubernetes (containerd)»Для узлов Kubernetes с containerd отредактируйте /etc/containerd/config.toml:
[plugins.io.containerd.grpc.v1.cri.registry.configs.nora.internal:4000.tls] insecure_skip_verify = trueПерезапустите containerd:
sudo systemctl restart containerdСобственные сертификаты удостоверяющего центра
Заголовок раздела «Собственные сертификаты удостоверяющего центра»При использовании внутреннего УЦ (например, FreeIPA, корпоративный PKI):
sudo mkdir -p /etc/docker/certs.d/registry.example.com:4000/sudo cp ca.crt /etc/docker/certs.d/registry.example.com:4000/ca.crt# Перезапуск Docker не требуетсяСистемный уровень (Ubuntu/Debian)
Заголовок раздела «Системный уровень (Ubuntu/Debian)»sudo cp ca.crt /usr/local/share/ca-certificates/my-ca.crtsudo update-ca-certificatesСистемный уровень (RHEL/CentOS/Astra/РЕД ОС)
Заголовок раздела «Системный уровень (RHEL/CentOS/Astra/РЕД ОС)»sudo cp ca.crt /etc/pki/ca-trust/source/anchors/my-ca.crtsudo update-ca-trustСм. также
Заголовок раздела «См. также»- Параметры конфигурации — полный справочник
- Аутентификация — htpasswd, токены, роли доступа
- Развёртывание — полное руководство