Self-hosted Gitea
под управлением одного бинарника.
Устанавливайте, обновляйте и настраивайте Gitea и act_runner — декларативный конфиг, встроенное управление секретами, systemd-юниты. Один проверяемый бинарник, за которым не нужно следить.
$ curl -fsSL https://dl.gtcnsl.ru/latest/gtcnsl-v0.6.3-linux-amd64 -o /usr/local/bin/gtcnsl && chmod +x /usr/local/bin/gtcnsl
Что умеет
Весь жизненный цикл Gitea — декларативно и проверяемо.
Проверенная установка и апгрейд
Скачивает Gitea и act_runner с официального зеркала с проверкой GPG-подписей и SHA-256.
Декларативный app.ini
Желаемое состояние — в Git. gtcnsl config apply приводит сервер в соответствие, с diff и бэкапом.
Управление секретами
Генерация, ротация и безопасное хранение секретов Gitea. Без ручной правки файлов и утечек в истории shell.
systemd-юниты
Напрямую управляет юнитами gitea и gitea-runner — start, stop, status, enable.
TUI и CLI
Интерактивный TUI по умолчанию; неинтерактивный CLI для cron и CI-пайплайнов.
Мульти-арх
linux amd64, arm64 и armv7. От VPS до Raspberry Pi в шкафу.
Консоль, а не скрипт
Запустите gtcnsl без аргументов — и получите настоящий терминальный интерфейс: сервисы, дрейф конфига и секреты с одного экрана.
Быстрый старт
От нуля до работающего Gitea с CI — три команды.
gtcnsl gitea install --domain git.example.com
Устанавливает Gitea, генерирует секреты, пишет app.ini и запускает systemd-юнит.
gtcnsl runner install
Устанавливает act_runner и его юнит gitea-runner.
gtcnsl runner register --instance https://git.example.com
Регистрирует раннер на вашем инстансе. CI работает.
Декларативно по умолчанию
Держите app.ini в Git. gtcnsl config apply приводит сервер в соответствие — с diff и бэкапом.
[server]DOMAIN = git.example.comROOT_URL = https://git.example.com/SSH_PORT = 2222[actions]ENABLED = true[security]INSTALL_LOCK = true
$ gtcnsl config apply~ [server] SSH_PORT 22 → 2222+ [actions] ENABLED = trueбэкап → /var/backups/gitea/app.ini.2026-05-303 изменения применены · gitea перезапущен
Работает там, где вы
Один бинарник на дистрибутивах и архитектурах, которые вы реально разворачиваете.
Почему бинарник, а не скрипт
Для тех, кто относится к своему серверу как к продакшену.
Один статический бинарник
Ни Python, ни Ansible, ни рантайма для установки и версионирования. Положите на сервер и запустите.
Проверяемость
Каждая загрузка сверяется с GPG-подписями и SHA-256 ещё до того, как коснётся системы.
Идемпотентность
Декларативное состояние делает повторный запуск безопасным. Примените тот же конфиг дважды — получите тот же сервер.
Весь жизненный цикл
Установка, апгрейд, настройка и запуск — один инструмент вместо папки хрупких shell-скриптов.
Статус
v0.x — ранний, но уже работает в продакшен-homelab’ах.
Вопросы
Только то, что описано в декларативном конфиге. Всё остальное не трогается, а config apply показывает diff и пишет бэкап перед любым изменением.
Да. Укажите ему ваш текущий app.ini, посмотрите diff и примените только то, что хотите. Никакой миграции «всё или ничего».
Для установки и операций с сервисами — да, он управляет systemd-юнитами. Команды только на чтение (status, diff конфига) — нет.
Нет. Ни аккаунта, ни телеметрии, ни phone-home. Один бинарник и ваш сервер.
GPG-подпись плюс SHA-256 против официального зеркала Gitea — каждый раз.