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
на ваш новый сервер.
Успешного хостинга! Если у вас возникнут вопросы — задавайте их в комментариях.