Skip to content
gtcnsl
EN RU

Releases

Every tagged build of gtcnsl, with verified downloads for each architecture.

// Latest release
v1.6.0 latest
2026-08-10

Install the latest in one command

What changed →
$ curl -fsSL https://dl.gtcnsl.com/v1.6.0/gtcnsl-v1.6.0-linux-amd64 -o /usr/local/bin/gtcnsl && chmod +x /usr/local/bin/gtcnsl
Every asset is verified with SHA-256 checksums.
v1.6.0 2026-08-10
latest
  • Gitea Actions Runner 3.x is a validated target: v3.1.0 passed the full container matrix, including the dind-rootless image and the new ≥ 3.0 single-process `.runner` lock.
  • `runner register --force` over a live daemon is safe again — the service is stopped before the old registration is dropped, so the ≥ 3.0 `.runner.lock` can no longer leave the host unregistered.
  • Baseline `config.yaml` generation follows the upstream rename: `config generate` on runner ≥ 3.1.0, the deprecated `generate-config` on older binaries — chosen automatically per installed version.
  • The upgrade guide documents the three Runner 3.x changes that live in your workflows, not in gtcnsl: cache v2 on by default, `container.options` host flags requiring privileged mode, and the `ACTIONS_ALLOW_UNSECURE_COMMANDS` opt-in.
v1.5.0 2026-08-06
  • openSUSE Leap 16 joins the supported matrix as the first zypper-based family — `internal/pkgmgr` gained `FamilySUSE`, with the explicit `zypper refresh` its disabled-autorefresh default repos require.
  • Alpine Linux joins the supported matrix in a host-mode-only MVP, running on a new OpenRC backend behind the init-agnostic `service.Manager` abstraction — container-based runner executors refuse cleanly rather than failing partway through.
  • Downloads no longer hang forever: a 30s stall-watchdog retries a wedged connection (up to 3 attempts) with byte-range resume, and download/version-discovery clients are now forced onto HTTP/1.1 after a Cloudflare-fronted HTTP/2 wedge caused a real production incident.
  • The TUI's operation screen now shows a live spinner and percentage progress instead of silence, and Esc on a running operation is honest — offering to cancel it or hide the screen — instead of pretending to leave while it keeps running underneath.
v1.4.0 2026-08-04
  • `gtcnsl` with no arguments now opens onto a live dashboard — Gitea/runner install status and config state at a glance — instead of a bare menu.
  • Five new distributions join the supported matrix in one release — AlmaLinux 9/10, Rocky 10, Ubuntu 22.04 LTS and 26.04 LTS — growing the tested container matrix from three images to eight, behind a new `pkgmgr.Family` dispatch that makes the next one a two-line change.
  • TUI screenshots on the marketing site are now produced from byte-for-byte golden captures of the real terminal, so the site can no longer silently drift from what `gtcnsl` actually renders.
v1.3.2 2026-07-23
  • HTTPS installs set LOCAL_ROOT_URL — fixes ssh pushes on Gitea 1.27+
  • Backups work on runner-only hosts
v1.3.1 2026-07-23
  • The release workflow now guards its own inputs
v1.3.0 2026-07-18
  • Gitea 1.27.x and Runner 2.x are officially supported, verified end to end — and `secrets rotate SECRET_KEY --reencrypt` now refuses to run against any Gitea minor gtcnsl hasn't re-verified its crypto against.
  • Safe `SECRET_KEY` rotation now covers `SECRET_KEY_URI`-configured instances too: gtcnsl resolves the key exactly the way Gitea does at boot, and rotation keeps the URI-backed file in sync instead of silently diverging from it.
  • `gtcnsl runner adopt` brings an existing Gitea Actions Runner under management without ever re-registering it — the runner twin of `gitea adopt`.
  • Runner state — `.runner`, `config.yaml`, its systemd unit — now travels with `gtcnsl backup`/`restore`, so losing the file no longer means a fresh registration token.
  • First-class `gtcnsl gitea upgrade`/`runner upgrade` commands, and a failed Gitea upgrade now restores the previous binary automatically instead of leaving the host without one.
  • Runner registration tokens no longer have to sit in process argv: `runner register`/`reconfigure --token-file <path>` reads the token from a file instead.
v1.2.1 2026-07-12
  • Download progress no longer floods ssh sessions, CI logs or the TUI: throttled at the source, plain sparse lines on non-terminals, one in-place-updating line in the TUI.
v1.2.0 2026-07-12
  • Safe `SECRET_KEY` rotation: `secrets rotate SECRET_KEY --reencrypt` migrates every encrypted database row — Actions secrets, 2FA seeds, webhook auth headers, LDAP bind passwords — to the new key, with a backup and automatic rollback. The rotation Gitea itself has never shipped (go-gitea/gitea#16832).
  • Safety guard: a plain `secrets rotate SECRET_KEY` now hard-stops before touching anything instead of silently orphaning encrypted data, and `--dry-run` previews exactly what a migration would touch.
  • `doctor` now warns when `SECRET_KEY` is empty — Gitea then encrypts with a public default baked into its own source, so the data is effectively unprotected.
v1.1.2 2026-07-08
  • Fixed: health checks work on sign-in-only instances (`REQUIRE_SIGNIN_VIEW`) — liveness now uses the unauthenticated `/api/healthz` endpoint.
v1.1.1 2026-07-08
  • Fixed: health checks against installs with built-in Let's Encrypt no longer fail falsely — `secrets rotate`, `config apply` and in-place upgrades work on ACME hosts again.
v1.1.0 2026-07-08
  • Point `gitea install` at a host that already runs Gitea and it upgrades in place — live paths detected, data never moved, a hand-written unit preserved byte-for-byte.
  • `gtcnsl gitea adopt` brings a hand-rolled install under management without moving any data: secrets out of `app.ini`, permissions tightened, a template for the declarative loop.
  • Serving profiles at install time: HTTP behind a proxy (default), direct HTTPS with built-in Let's Encrypt, or your own certificate.
  • `gtcnsl gitea enable-https` switches a live HTTP install to HTTPS — and rolls back to the working config automatically if anything fails.
  • Doctor now catches the classic time bomb: an https config on :443 whose unit can't actually bind the port.
v1.0.0 2026-07-02
  • First stable release — the CLI and on-disk layout are now covered by a SemVer compatibility guarantee (COMPATIBILITY.md).
  • `gtcnsl backup` / `restore` — snapshot your Gitea install and roll back with a safe, self-undoing flow.
  • `dind-rootless` runner executor — run the Actions runner in a rootless container, no host binary.
  • Signing-key self-refresh keeps download verification working across the Gitea key's yearly renewal.
  • Fixed: in-place `gitea install --to` upgrades now restart onto the new binary.
v0.6.3 2026-05-30
  • Reliable release mirroring to the download host
v0.6.1 2026-05-30
  • Fixes the release workflow's download-host mirror step