Как поднять свой Git-сервер и не сойти с ума от настройки

02 Jun, 2026

Представьте, что вам нужно быстро развернуть Git-сервер для личных проектов или небольшой команды. Можно пойти проторенным путем: поставить GitLab и отдать ему половину оперативной памяти сервера, либо возиться с Gitea. Но есть вариант для тех, кто любит минимализм и командную строку. Ребята из Charmbracelet (вы наверняка видели их библиотеки для красивых CLI на Go) сделали Soft Serve — Git-сервер, который управляется через SSH и выглядит чертовски стильно.

Я наткнулся на него, когда искал способ хранить конфиги и мелкие скрипты так, чтобы не зависеть от GitHub, но и не раздувать инфраструктуру. Оказалось, что для запуска достаточно одного бинарника.

Что это вообще такое

Soft Serve — это self-hosted Git-сервер, который живет в терминале. У него нет тяжелого веб-интерфейса. Вместо этого вы получаете TUI (Terminal User Interface), доступный прямо по SSH.

A nice rendering of some melting ice cream with the words ‘Charm Soft Serve’ next to it

Главная фишка в том, что сервер работает как единый исполняемый файл. Вы запускаете его, и он тут же готов принимать соединения по 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.

Soft Serve screencast

Как это устроено внутри

Проект написан на Go, что логично для инструментов такого типа. Вся конфигурация после первого запуска ложится в config.yaml. Там можно поменять порты (по умолчанию SSH висит на 23231), настроить таймауты или прикрутить вебхуки.

Кстати, о вебхуках. Soft Serve умеет дергать сторонние сервисы при пушах или изменениях в ветках. Это позволяет вписать его в ваш CI/CD пайплайн. А если встроенной логики не хватает, есть поддержка серверных хуков Git (pre-receive, post-receive и другие).

Кому это пригодится

Я вижу два основных сценария. Первый — личный «чердак» для кода. Если у вас есть пачка скриптов или заметок, которые не хочется светить даже в приватных репозиториях GitHub, Soft Serve на дешевой VPS за пару долларов — идеальный вариант.

Второй сценарий — внутренний инструмент в команде для специфических задач. Например, для хранения тяжелых ассетов через LFS или как зеркало важных внешних репозиториев (функция repo import --mirror тут присутствует).

TUI example showing a diff

Небольшой нюанс с ключами

Есть один момент, который может сбить с толку. Из-за особенностей текущей реализации библиотеки SSH в Go, новые RSA-ключи могут не заработать. Разработчики рекомендуют использовать Ed25519. Впрочем, это сейчас стандарт де-факто, так что вряд ли станет большой проблемой.

Soft Serve — это не замена GitHub для огромных опенсорс-сообществ. Это уютный, быстрый и очень красивый инструмент для тех, кто ценит контроль над своими данными и любит работать в терминале. Если вам надоел оверхед тяжелых систем, просто попробуйте запустить soft serve. Скорее всего, возвращаться к старому не захочется.

С чего начать? Наверное, с SSH на их демо-сервер. Это не требует установки и сразу дает понять, ваш это формат или нет.