GitHub всё? Поднимаем собственный Gitea за 5 минут!

Всем привет. На фоне недавних обсуждений возможной блокировки GitHub в России, сейчас, пожалуй, самое время задуматься о собственном хостинге (self-hosting).

Официально: депутат Госдумы Антон Горелкин заявил, что GitHub может стать полностью недоступным в России. Он призвал разработчиков срочно переносить свои проекты на российские платформы и обвинил администрацию GitHub в дискриминации российских пользователей.

Как бы то ни было, нам, разработчикам, всё равно нужно где-то хранить код, делиться проектами с кентами и использовать систему контроля версий.

Недавно я приобрел пару серверов и, чтобы они не простаивали без дела, решил развернуть на одном из них Gitea — легковесную альтернативу GitHub. Ниже представлено краткое руководство по настройке.Что вам понадобится

  • Чистый сервер (высокая мощность не требуется, так как Gitea потребляет около 50 МБ оперативной памяти).
  • Docker и docker-compose.
  • PostgreSQL — мы запустим его в том же Docker-стеке.

    Плюсы Gitea:
  • Полный контроль: вы полностью управляете платформой и сами решаете, кто может регистрироваться, а кто нет.
  • Безопасность: от себя сразу советую отключить открытую регистрацию в настройках, иначе сервер быстро наводнят боты.

Настройка брандмауэра (UFW)

На сервере крайне важно сразу включить фаэрвол. В будущих материалах я отдельно поделюсь личным опытом полной защиты сервера, а пока зададим базовые параметры.

Нам понадобятся следующие порты:

  • 22/tcp — стандартный SSH для управления самим сервером.
  • 443/tcp — для безопасного веб-трафика Nginx (HTTPS).
  • 3000/tcp — для внешнего доступа к веб-интерфейсу Gitea.
  • 2222/tcp — для работы Git по SSH (так как порт 22 уже занят системой).

В следующем блоге мы разберем полноценную защиту сервера от А до Я, а пока просто открываем эти порты.

Создание директории и конфигурационного файла

mkdir gitea && cd gitea

touch docker-compose.yml

Содержимое файла(docker-compose.yml) -

Краткое примечание: конфигурация 2222:22 означает, что внутри контейнера Git слушает порт 22, но для внешних подключений открыт порт 2222. Это сделано для того, чтобы избежать конфликта с SSH-службой самого сервера (которая по умолчанию использует порт 22).

Запуск контейнеров

docker-compose up -d

Подождите 10–20 секунд, пока инициализируется база данных, после чего откройте адрес в браузере: http://IP_ВАШЕГО_СЕРВЕРА:3000

Безопасность: HTTPS и nginx

Открывать доступ к порту 3000 напрямую в интернет небезопасно, поэтому необходимо настроить TLS.

Лучшая практика — использовать nginx в качестве Reverse Proxy перед Gitea и установить Let’s Encrypt.

Пример конфигурации nginx (перенаправление с HTTP на HTTPS): (содержимое конфигурационного файла nginx, настройте под себя и ваш домен) -

Получить SSL-сертификаты можно с помощью утилиты

certbot:bashsudo certbot --nginx -d ://yourdomain.com

Certbot автоматически выпустит сертификат и внесет изменения в конфигурационный файл nginx. После этого Gitea будет доступна по адресу: https://yourdomain.com

Для клонирования репозиториев используйте следующий формат ссылки:ssh://git@ваш_сервер:2222/пользователь/репозиторий.git

Итоги настройки

  • Собственный Git-сервер с веб-интерфейсом, доступом по SSH и базой данных PostgreSQL.
  • Полный контроль над кодом, отсутствие зависимости от сторонних платформ и рисков блокировки.
  • Отсутствие ограничений на количество пользователей и репозиториев.

Теперь вы полностью независимы от GitHub. Для переноса существующих репозиториев достаточно выполнить команду:

git push --mirror
на ваш новый сервер.

Успешного хостинга! Если у вас возникнут вопросы — задавайте их в комментариях.

1