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

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

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

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

Что умеет

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

gpg 01

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

Скачивает Gitea с официального зеркала с проверкой GPG и SHA-256, а раннер — с проверкой SHA-256; определяет существующую установку и безопасно обновляет её на месте.

tls 02

HTTPS-профили и adopt

Прямой HTTPS через встроенный ACME или свой сертификат, с автоматическим откатом. gitea adopt берёт под управление установку вручную, не перемещая данные.

ini 03

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

Желаемое состояние — в Git. gtcnsl config apply приводит сервер в соответствие — с diff и бэкапом. config get/set/toggle для точечных изменений.

key 04

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

Генерация, ротация и безопасное хранение секретов Gitea — включая защищённую ротацию SECRET_KEY, которая перешифровывает каждую затронутую запись вместо того, чтобы её «осиротить».

sys 05

Бэкап, восстановление и self-update

Снимает бэкап бинарника и конфига Gitea для восстановления, управляет systemd-юнитами gitea и gitea-runner и поддерживает актуальность самого gtcnsl через self-update — каждый шаг откатывается при сбое.

i/o 06

TUI и CLI

Интерактивный TUI по умолчанию; неинтерактивный CLI для cron и CI-пайплайнов — один и тот же статический бинарник для linux amd64, arm64 и armv7.

// 03

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

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

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

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

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

1
$ gtcnsl gitea install --yes

Устанавливает Gitea, генерирует секреты, пишет app.ini, разворачивает systemd-юнит и запускает его — автоматический откат, если health-check не прошёл.

2
$ gtcnsl runner install --executor=docker --yes

Устанавливает раннер и его юнит gitea-runner с executor-ом Docker. Остаётся остановленным, пока вы его не зарегистрируете.

3
$ gtcnsl runner register --instance https://git.example.com --token <fresh-token> --yes

Регистрирует раннер на вашем инстансе и запускает его. Токен возьмите в Site Admin, Runners, Create new runner.

// 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
бэкап → /etc/gitea/app.ini.bak
3 изменения применены · gitea перезапущен
// 06

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

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

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

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

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

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

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

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

Загрузки Gitea сверяются с GPG-подписями и SHA-256; раннер и сам gtcnsl проверяются через SHA-256 — каждый раз, ещё до того, как что-то коснётся системы.

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

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

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

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

// 08

Статус

v1.x — CLI стабилен и версионируется по SemVer с v1.0.

Готово v1.2
Установка, апгрейд и adopt Gitea и раннера
HTTPS profiles — built-in ACME or your own certificate
Декларативный app.ini с diff и бэкапом
Генерация, ротация и безопасное перешифрование секретов
systemd-юниты, бэкап/восстановление и self-update
TUI и неинтерактивный CLI
В планах later
Управление несколькими хостами по SSH
Миграция БД app.ini (SQLite в PostgreSQL/MySQL)
Инкрементальные бэкапы репозиториев
Поддержка Alpine / OpenRC
Больше поддерживаемых дистрибутивов
// 09

Вопросы

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

Да. gtcnsl gitea adopt берёт установку вручную под управление, не перемещая данные (по умолчанию dry-run), а затем config apply приводит app.ini в соответствие с вашим шаблоном — с diff и бэкапом.

Для установки и операций с сервисами — да, он управляет systemd-юнитами. Команды только на чтение — doctor, config get — нет.

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

Бинарники Gitea сверяются с их GPG-подписью и SHA-256; раннер и self-update самого gtcnsl проверяются через SHA-256 — каждая загрузка, каждый раз.