gtcnsl
EN RU
Статический Go-бинарник · без зависимостей рантайма

Self-hosted Gitea
под управлением одного бинарника.

Устанавливайте, обновляйте и настраивайте Gitea и act_runner — декларативный конфиг, встроенное управление секретами, systemd-юниты. Один проверяемый бинарник, за которым не нужно следить.

Документация Проверка через GPG + SHA-256
$ curl -fsSL https://dl.gtcnsl.ru/latest/gtcnsl-v0.6.3-linux-amd64 -o /usr/local/bin/gtcnsl && chmod +x /usr/local/bin/gtcnsl
Контрольные суммы и подписи проверяются при загрузке.
// 02

Что умеет

Весь жизненный цикл Gitea — декларативно и проверяемо.

gpg 01

Проверенная установка и апгрейд

Скачивает Gitea и act_runner с официального зеркала с проверкой GPG-подписей и SHA-256.

ini 02

Декларативный app.ini

Желаемое состояние — в Git. gtcnsl config apply приводит сервер в соответствие, с diff и бэкапом.

key 03

Управление секретами

Генерация, ротация и безопасное хранение секретов Gitea. Без ручной правки файлов и утечек в истории shell.

sys 04

systemd-юниты

Напрямую управляет юнитами gitea и gitea-runner — start, stop, status, enable.

i/o 05

TUI и CLI

Интерактивный TUI по умолчанию; неинтерактивный CLI для cron и CI-пайплайнов.

arch 06

Мульти-арх

linux amd64, arm64 и armv7. От VPS до Raspberry Pi в шкафу.

// 03

Консоль, а не скрипт

Запустите gtcnsl без аргументов — и получите настоящий терминальный интерфейс: сервисы, дрейф конфига и секреты с одного экрана.

gtcnsl — v0.6.3
СЕРВИСЫ
gitea активен · 1.26.1
gitea-runner активен · 0.2.11
КОНФИГ
app.ini в норме ✓
secrets 3 секрета
ДЕЙСТВИЯ
Обновить Gitea
Применить конфиг
Ротация секретов
Смотреть логи
❯ 
↑/↓ навигация ⏎ выбор q выход
// 04

Быстрый старт

От нуля до работающего Gitea с CI — три команды.

1
$ gtcnsl gitea install --domain git.example.com

Устанавливает Gitea, генерирует секреты, пишет app.ini и запускает systemd-юнит.

2
$ gtcnsl runner install

Устанавливает act_runner и его юнит gitea-runner.

3
$ gtcnsl runner register --instance https://git.example.com

Регистрирует раннер на вашем инстансе. CI работает.

// 05

Декларативно по умолчанию

Держите app.ini в Git. gtcnsl config apply приводит сервер в соответствие — с diff и бэкапом.

app.ini
[server]
DOMAIN = git.example.com
ROOT_URL = https://git.example.com/
SSH_PORT = 2222
[actions]
ENABLED = true
[security]
INSTALL_LOCK = true
gtcnsl config apply
$ gtcnsl config apply
~ [server] SSH_PORT 22 → 2222
+ [actions] ENABLED = true
бэкап → /var/backups/gitea/app.ini.2026-05-30
3 изменения применены · gitea перезапущен
// 06

Работает там, где вы

Один бинарник на дистрибутивах и архитектурах, которые вы реально разворачиваете.

Debian
13
Ubuntu
24.04 LTS
Rocky
9
linux/amd64 linux/arm64 linux/armv7
От облачного VPS до Raspberry Pi в шкафу.
// 07

Почему бинарник, а не скрипт

Для тех, кто относится к своему серверу как к продакшену.

Один статический бинарник

Ни Python, ни Ansible, ни рантайма для установки и версионирования. Положите на сервер и запустите.

Проверяемость

Каждая загрузка сверяется с GPG-подписями и SHA-256 ещё до того, как коснётся системы.

Идемпотентность

Декларативное состояние делает повторный запуск безопасным. Примените тот же конфиг дважды — получите тот же сервер.

Весь жизненный цикл

Установка, апгрейд, настройка и запуск — один инструмент вместо папки хрупких shell-скриптов.

// 08

Статус

v0.x — ранний, но уже работает в продакшен-homelab’ах.

Готово v0.5
Установка и апгрейд Gitea + act_runner
Декларативный app.ini с diff и бэкапом
Генерация и ротация секретов
Управление systemd-юнитами
TUI и неинтерактивный CLI
Дальше v0.6
gtcnsl self-update
Шаблоны конфигов
В планах later
Бэкап и восстановление
Инвентарь нескольких хостов
// 09

Вопросы

Только то, что описано в декларативном конфиге. Всё остальное не трогается, а config apply показывает diff и пишет бэкап перед любым изменением.

Да. Укажите ему ваш текущий app.ini, посмотрите diff и примените только то, что хотите. Никакой миграции «всё или ничего».

Для установки и операций с сервисами — да, он управляет systemd-юнитами. Команды только на чтение (status, diff конфига) — нет.

Нет. Ни аккаунта, ни телеметрии, ни phone-home. Один бинарник и ваш сервер.

GPG-подпись плюс SHA-256 против официального зеркала Gitea — каждый раз.