Свой registry рядом с git — удобно: один SSO/аккаунт, один backup-контур, образы рядом с исходниками. Ниже — рабочая схема для Gitea/Forgejo (у меня Forgejo на git.evgn.ru, логика та же) 📦

Что получите #

docker login git.example.com
docker tag myapp:1.0 git.example.com/evgeny/myapp:1.0
docker push git.example.com/evgeny/myapp:1.0

Образ живёт как package у пользователя/орг, не как «магический docker hub».

Конфиг сервера #

В app.ini (имена секций могут чуть отличаться по версии — сверяйте docs вашей):

[packages]
ENABLED = true

[registry]
ENABLED = true

Каталог данных packages должен быть на диске с местом и бэкапом (часто рядом с data/ инстанса). Права — на пользователя, от которого крутится Gitea/Forgejo.

После правки — restart сервиса.

HTTPS обязателен для docker #

Docker не любит plain HTTP registry (нужен insecure-registries — лучше не надо). Схема:

клиент → NPM/Caddy/nginx (TLS) → gitea:3000

На proxy: достаточно большие client_max_body_size / proxy_request_buffering для слоёв.

Права и логин #

  1. В UI: пользователь с правом write на package / repo (зависит от версии и settings org).
  2. Personal access token с scope write:package / read:package (названия scope смотрите в UI).
echo "$TOKEN" | docker login git.example.com -u evgeny --password-stdin

Типичные ошибки:

СимптомЧто проверить
401 Unauthorizedтокен, срок, scope
deniedправа на owner/package
http: server gave HTTP response to HTTPS clientTLS / wrong URL
timeout на pushbody size на proxy, место на диске

Push / pull #

docker build -t git.example.com/evgeny/myapp:1.0 .
docker push git.example.com/evgeny/myapp:1.0
docker pull git.example.com/evgeny/myapp:1.0

В CI — тот же login через secrets, не кладите token в Dockerfile.

Обслуживание #

  • Ретеншн тегов: не копите :latest + 500 SHA без политики.
  • Бэкап каталога packages вместе с метаданными инстанса.
  • Мониторинг диска: registry растёт незаметно.

Итог #

Packages + TLS + token с минимальным scope + pin тегов в compose. Этого достаточно, чтобы не тащить отдельный Harbor «на три домашних образа» 🚢