Как поднять свой Git-сервер и не сойти с ума от настройки
Представьте, что вам нужно быстро развернуть Git-сервер для личных проектов или небольшой команды. Можно пойти проторенным путем: поставить GitLab и отдать ему половину оперативной памяти сервера, либо возиться с Gitea. Но есть вариант для тех, кто любит минимализм и командную строку. Ребята из Charmbracelet (вы наверняка видели их библиотеки для красивых CLI на Go) сделали Soft Serve — Git-сервер, который управляется через SSH и выглядит чертовски стильно.
Я наткнулся на него, когда искал способ хранить конфиги и мелкие скрипты так, чтобы не зависеть от GitHub, но и не раздувать инфраструктуру. Оказалось, что для запуска достаточно одного бинарника.
Что это вообще такое
Soft Serve — это self-hosted Git-сервер, который живет в терминале. У него нет тяжелого веб-интерфейса. Вместо этого вы получаете TUI (Terminal User Interface), доступный прямо по SSH.

Главная фишка в том, что сервер работает как единый исполняемый файл. Вы запускаете его, и он тут же готов принимать соединения по SSH, HTTP или нативному протоколу Git. При этом управление репозиториями, пользователями и правами доступа происходит без правки бесконечных конфигов на сервере — всё делается через SSH-команды.
Пощупать перед установкой
Разработчики сделали крутую штуку: можно зайти на их демо-сервер и посмотреть, как это выглядит вживую. Просто введите в терминале:
ssh git.charm.sh
Вы попадете в интерактивное меню, где можно бродить по репозиториям, смотреть коммиты и даже читать код с подсветкой синтаксиса. Если не хочется заходить в интерфейс, можно выдернуть конкретный файл командой:
ssh git.charm.sh repo blob soft-serve cmd/soft/main.go -c -l
Флаг -c включит цвета, а -l — номера строк. Это реально удобно, когда нужно быстро подсмотреть кусок кода в чужом проекте, не клонируя его целиком.
Три вещи, которые меня зацепили
Во-первых, создание репозиториев на лету. Вам не нужно заходить в админку. Достаточно добавить ваш сервер как remote и сделать push:
git remote add origin ssh://my-server:23231/my-new-repo
git push origin main
Soft Serve поймет, что такого репозитория еще нет, создаст его и примет ваши данные. Если вы привыкли к GitHub, эта автоматизация кажется магией.
Во-вторых, работа с LFS. Часто self-hosted решения спотыкаются на больших бинарных файлах. Здесь поддержка Git LFS идет из коробки и для HTTP, и для SSH.
В-третьих, гибкая настройка через обычный SSH. Добавление коллаборатора выглядит так:
ssh -p 23231 localhost repo collab add my-project ivan read-only
Никаких баз данных вручную править не надо. Хотя, если захочется, проект умеет работать и с SQLite, и с Postgres.
Как это устроено внутри
Проект написан на Go, что логично для инструментов такого типа. Вся конфигурация после первого запуска ложится в config.yaml. Там можно поменять порты (по умолчанию SSH висит на 23231), настроить таймауты или прикрутить вебхуки.
Кстати, о вебхуках. Soft Serve умеет дергать сторонние сервисы при пушах или изменениях в ветках. Это позволяет вписать его в ваш CI/CD пайплайн. А если встроенной логики не хватает, есть поддержка серверных хуков Git (pre-receive, post-receive и другие).
Кому это пригодится
Я вижу два основных сценария. Первый — личный «чердак» для кода. Если у вас есть пачка скриптов или заметок, которые не хочется светить даже в приватных репозиториях GitHub, Soft Serve на дешевой VPS за пару долларов — идеальный вариант.
Второй сценарий — внутренний инструмент в команде для специфических задач. Например, для хранения тяжелых ассетов через LFS или как зеркало важных внешних репозиториев (функция repo import --mirror тут присутствует).
Небольшой нюанс с ключами
Есть один момент, который может сбить с толку. Из-за особенностей текущей реализации библиотеки SSH в Go, новые RSA-ключи могут не заработать. Разработчики рекомендуют использовать Ed25519. Впрочем, это сейчас стандарт де-факто, так что вряд ли станет большой проблемой.
Soft Serve — это не замена GitHub для огромных опенсорс-сообществ. Это уютный, быстрый и очень красивый инструмент для тех, кто ценит контроль над своими данными и любит работать в терминале. Если вам надоел оверхед тяжелых систем, просто попробуйте запустить soft serve. Скорее всего, возвращаться к старому не захочется.
С чего начать? Наверное, с SSH на их демо-сервер. Это не требует установки и сразу дает понять, ваш это формат или нет.
