Когда GitHub в очередной раз начал тормозить в момент дедлайна, а GitLab — вносить странные ограничения, я задумалась: а зачем мне вообще внешний хостинг, если у меня есть собственный VPS? Зачем зависеть от чужих политик и API, если можно просто поднять свой Git-сервер и ни от кого не зависеть?
Спойлер: это проще, чем кажется. В этой статье я расскажу, как настроить внутренний Git-сервер — как на Linux, так и на Windows, без лишнего пафоса и с упором на реальные задачи.
Зачем поднимать свой Git-сервер?
- 💼 Контроль — вы сами решаете, где хранятся ваши репозитории;
- 🔒 Безопасность — особенно если работаешь с клиентскими проектами или приватным кодом;
- 🚀 Скорость — локальное подключение, особенно внутри одной VPS-сети, реально быстрее;
- 🛠 Гибкость — автоматизация, свои хуки, CI/CD — всё под рукой;
- 💰 Экономия — нет ограничений на приватные репозитории или команду.
У меня был опыт и с Gitea, и с GitBucket, но сегодня расскажу про самую лёгкую и «чистую» схему — на базе SSH и
git init --bare
Вариант 1: Лёгкий Git-сервер на Linux VPS
1. Устанавливаем Git
Если он ещё не установлен:
sudo apt update sudo apt install git
Проверяем:
git --version
2. Создаём пользователя git
git
sudo adduser git
Это безопаснее, чем работать от root.
3. Добавляем ключ SSH для доступа
С локальной машины:
ssh-copy-id git@<ip-сервера>
Теперь можно заходить без пароля.
4. Создаём «голый» репозиторий
Подключаемся к серверу и создаём папку:
mkdir -p /home/git/myproject.git cd /home/git/myproject.git git init --bare
Это и есть bare git репозиторий — без рабочего дерева, только история и структура.
5. Работаем с репой
На локальной машине:
git remote add origin git@<ip-сервера>:/home/git/myproject.git git push origin master
Вот и всё. У вас теперь свой Git-сервер, без GitHub и сторонних сервисов.
Вариант 2: Git-сервер на Windows
Когда мне нужно было настроить Git сервер на Windows (для локальной сети в офисе), я выбрала Git for Windows + OpenSSH Server.
1. Скачиваем Git for Windows
Установка простая. Во время установки выберите опцию «Run Git from the Windows Command Prompt» и «Use OpenSSH».
2. Добавляем путь до git
в переменные окружения, если не добавился
git
3. Создаём папку и инициализируем bare-репозиторий
cd D:\git-repos mkdir myproject.git cd myproject.git git init --bare
4. Настраиваем SSH-доступ
Тут сложнее, чем на Linux, но можно использовать Win32-OpenSSH. Либо поднять Git over HTTPS с помощью IIS, но это уже другой уровень сложности.
На практике я чаще использую Git server на VPS Linux, а на Windows — только если нужен доступ изнутри локальной сети без Интернета.
Инструменты, которые помогут
- Gitea — лёгкий web-интерфейс, альтернатива GitHub;
- GitBucket — похож на GitLab, но проще;
- Bonobo Git Server — если нужна GUI-админка на Windows;
- — ограничивает доступ к командам на сервере;
git-shell
- Post-receive hooks — для автосборки, деплоя, уведомлений и CI.
Примеры из жизни
У меня есть два VPS — один в Германии, другой в Финляндии. На обоих настроен внутренний Git-сервер, который я использую как staging и production репозитории для личных проектов. Никакого GitHub, никакой зависимости от внешнего API. Всё под контролем.
А ещё один раз я разворачивала Git-сервер прямо на роутере с OpenWRT, потому что заказчик хотел 100% изоляцию — и это тоже сработало!
Создать Git-сервер без GitHub — это не про сложность, а про контроль. Иногда это даже веселее, чем щёлкать мышкой в интерфейсе GitLab. Особенно когда ты знаешь, что в любой момент можешь переключиться между репами, добавить новый хук, автоматизировать деплой — и всё это без чужих ограничений и абонентки.
Если хочешь по-настоящему разобраться в Git — начни с сервера. Он даст тебе совсем другое понимание того, как работает этот инструмент.
Делаем год чуть длиннее
365 дней VPS? А как насчёт 395?