Выберите уровень совместной работы
Forgejo и Gitea — примеры лёгкого forge-программного обеспечения; обычного SSH Git может быть достаточно для небольшого рабочего процесса. Сопоставьте задачи, ревью, хранение пакетов и требования к идентичности с проектом. Проверьте актуальные поддерживаемые версии и лицензии.
Отделите сборки от кузницы
CI-раннер выполняет код, контролируемый проектом, и не должен хранить неограниченные учётные данные forge или хоста. Изолируйте раннеры, ограничивайте область токенов и не запускайте недоверенные задачи под той же привилегированной учётной записью, что и служба репозитория.
Защитите доступ и регистрацию
Отключите публичную регистрацию, если сервис приватный. Используйте отдельные аккаунты, надёжную аутентификацию и тщательно ограниченные ключи развёртывания. Задокументируйте порт SSH и ключ хоста; не приучайте пользователей молча игнорировать предупреждения о ключе хоста.
Создайте резервную копию всего сервиса
Одни только репозитории могут не включать задачи, аккаунты, вложения и конфигурацию. Следуйте единой процедуре резервного копирования платформы и проверьте восстановление с сохранением прав доступа к файлам и секретов приложения.
Контрольный список восстановления forge
Согласованно экспортируйте базу данных и сохраняйте хранилище репозитория, вложения, хранилище больших файлов, если оно включено, конфигурацию и секреты шифрования. После восстановления проверьте клон по предполагаемому маршруту SSH или HTTPS. Держите forge и любого CI-воркера изолированными, чтобы сборка не могла перезаписать собственную конфигурацию сервиса.
Ограничьте права на развёртывание
Ключа развёртывания только на чтение может быть достаточно для сервера, который лишь забирает код. Автоматизации релизов может потребоваться небольшой дополнительный доступ. Предпочитайте отдельные ключи для разных машин, фиксируйте их назначение и удаляйте их при выводе машины из эксплуатации.
Используйте самый простой сервис совместной работы, который подходит
Для нескольких приватных репозиториев может быть достаточно bare Git поверх ограниченного SSH. Forgejo или Gitea добавляют аккаунты, pull-запросы, задачи и опциональные пакеты ценой базы данных, обновлений приложения и большего объёма постоянного состояния. Запишите, какие функции команда действительно будет использовать. Планируйте рост репозиториев, объекты больших файлов, вложения и артефакты сборки отдельно; вычисления CI могут превысить сам фордж.
- Выберите каноническое имя HTTPS и защитите его аккаунт DNS.
- Решите, будет ли регистрация закрытой, по приглашениям или с модерацией.
- Предоставьте службе forge непривилегированную учётную запись и надёжное приватное хранилище.
Официальная документация: Установка контейнера Forgejo
Разделите веб-, SSH- и пути к базе данных
Используйте конфигурацию из исходного проекта для выбранного релиза и зафиксируйте нужную версию образа. Обратный прокси TLS должен достигать внутреннего веб-слушателя; база данных должна быть доступна только forge. Если Git SSH использует порт контейнера, сохраняйте его объявленный хост и внешний порт в соответствии с маппингом. Не заменяйте и не допускайте случайного раскрытия слушателя SSH администратора хоста при изменении forge. Закройте доступ к установке и настройке после создания первоначального владельца.
- Проверьте права владельца постоянного тома перед запуском приложения.
- Используйте пользователя базы данных с доступом только к базе forge.
- Держите CI-раннеры на отдельной границе доверия, особенно для недоверенных репозиториев.
Официальная документация: Сеть и сохранность данных Forgejo в Docker
Проверьте клонирование, отправку и запрещённую операцию
Создайте одноразовый приватный репозиторий и проверьте его клонирование по HTTPS или SSH URL из обычной учётной записи разработчика. Зафиксируйте и отправьте безобидный файл, затем убедитесь, что другой авторизованный читатель может его получить. Неприглашённая учётная запись должна получить отказ в чтении приватного репозитория. Проверьте обработку больших файлов и уведомления по электронной почте, если они включены. Для машин, используемых только для развёртывания, проверьте, что ключ только для чтения может получать данные и не может отправлять; одного успешного прохождения аутентификации недостаточно, чтобы доказать нужную границу разрешений.
# Use the disposable repository URL advertised by your forge:
git clone ssh://[email protected]:2222/team/check.git
# In a clone, inspect which remote is configured:
git remote -vВосстановите обсуждение вместе с репозиторием
Сделайте согласованную резервную копию приложения и базы данных, хранилища репозитория, вложений, данных LFS, конфигурации и необходимых секретов шифрования. Следуйте процедуре резервного копирования установленной версии forge; команды резервного копирования Gitea не являются автоматически взаимозаменяемыми с каждым выпуском Forgejo. Пересоберите в изоляции и проверьте задачу, вложение, вход и клонирование. Если push не работает после переноса, проверьте хост/порт SSH, сопоставление ключей, разрешения хранилища и объявленные URL клонирования, прежде чем глобально менять разрешения репозитория.
Официальная документация: Резервное копирование и восстановление Gitea