К содержимому
gtcnsl
EN RU

v1.0.0

2026-07-01 latest ● stable

Что изменилось

Added
  • **`gtcnsl backup` / `backup list` / `restore`.** Снимок бинаря Gitea, `app.ini`, `secrets.ini` и дерева `custom/` в каталог с манифестом под `/var/lib/gtcnsl/backups/`, просмотр списка и восстановление одного из них безопасным потоком снимок → остановка → замена → перезапуск → health-проверка, который откатывается сам, если Gitea не поднимается. `backup --keep N` подчищает старые снимки.
  • **Исполнитель раннера `dind-rootless`.** Запуск Gitea Actions Runner в rootless-контейнере Docker-in-Docker под управлением systemd, без бинаря раннера на хосте (ADR 0022). Выбирается через `runner install --executor=dind-rootless`.
  • **Оппортунистическое обновление подписывающего ключа Gitea.** Когда встроенный релизный ключ близок к истечению, gtcnsl подтягивает свежую копию — с тем же fingerprint — с keys.openpgp.org, иначе откатывается на встроенный ключ, так что верификация загрузок продолжает работать при ежегодном продлении ключа без нового релиза gtcnsl. В обычном случае сети не требуется (ADR 0024).
  • **`gtcnsl doctor` теперь сообщает о включении в автозагрузку** юнитов `gitea` и `gitea-runner`, так что отсутствующий `systemctl enable` всплывает раньше, чем это сделает перезагрузка.
  • **Политика совместимости.** [`COMPATIBILITY.md`](COMPATIBILITY.md) фиксирует публичную поверхность, обещание по SemVer и политику «сначала deprecate, потом удаление».
Fixed
  • **Обновление Gitea на месте теперь действительно перезапускается на новый бинарь.** `gtcnsl gitea install --to <новее>` поверх работающей установки (документированный путь обновления) заменял бинарь, но вызывал обычный `systemctl start` — а это no-op на уже работающем юните: старая Gitea продолжала отвечать, и установка падала на health-проверке, сообщая старую версию. Теперь юнит перезапускается, так что обновление заменяет работающий инстанс. Обнаружено новым контейнерным сценарием приёмки обновления (фейковый менеджер systemd всегда «успешно» стартовал, скрывая проблему от юнит-тестов).
  • **Юниты включаются в автозагрузку.** `gitea` и `gitea-runner` теперь `systemctl enable`-ятся, так что поднимаются после перезагрузки, а не остаются лежать.
  • **Листинг версий использует зеркало `dl.gitea.com`**, а не выведенный из строя эндпоинт API `gitea.com`, который начал возвращать 500 и ломал выбор версии в TUI/CLI.
  • **Обновлён встроенный подписывающий ключ Gitea (Teabot)**, у которого истёк signing-подключ (2026-06-23), из-за чего перестала работать GPG-верификация скачанных бинарей Gitea. Продлён до 2027-06-26; тот же закреплённый fingerprint.

Загрузка

Выберите архитектуру. Прямые ссылки ведут на ассеты релиза.

$ curl -fsSL https://dl.gtcnsl.ru/v1.0.0/gtcnsl-v1.0.0-linux-amd64 -o /usr/local/bin/gtcnsl && chmod +x /usr/local/bin/gtcnsl
i
Проверка
Сверьте с подписанным манифестом сумм, прежде чем что-то запускать. checksums.txt