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

systemd-юниты

gtcnsl ставит и связывает два systemd-юнита. В повседневной работе ими можно рулить обычным systemctl — вот что это за юниты и какая команда gtcnsl владеет каждым.

Актуально для v1.3.0

Два юнита

Юнит Пользователь Запускает Рабочий каталог
gitea.service git /usr/local/bin/gitea web --config /etc/gitea/app.ini /var/lib/gitea
gitea-runner.service gitea-runner /usr/local/bin/gitea-runner daemon (получает --config <WorkDir>/config.yaml, как только этот файл появляется) /var/lib/gitea-runner

Оба файла юнитов пишутся в /etc/systemd/system/ и подхватываются через daemon-reload. gtcnsl включает каждый юнит в автозагрузку только после того, как сервис поднят и здоров (см. ниже) — не в момент записи. Они рестартятся при падении и идут с хардненингом (NoNewPrivileges, PrivateTmp, ProtectSystem=strict, поднятые лимиты файлов/процессов).

i
Флаг --config у раннера только добавляется, никогда не убирается
gitea-runner daemon вообще не читает никакой конфиг-файл, пока ему явно не передан --config. runner register/reconfigure при первом запуске генерируют базовый /var/lib/gitea-runner/config.yaml (никогда не перезаписывая уже существующий), а ExecStart юнита gitea-runner.service подхватывает --config только после того, как этот файл точно есть на диске — так что повторный запуск runner install на старой установке добавляет флаг, как только config.yaml появляется, и никогда не указывает на ещё не существующий файл.

Какая команда gtcnsl владеет каждым

  • gtcnsl gitea install — разворачивает, включает и запускает gitea.service.
  • gtcnsl runner install — разворачивает gitea-runner.service, но оставляет остановленным и пока не включённым.
  • gtcnsl runner register / runner reconfigure — генерируют config.yaml, если его ещё нет, затем запускают и включают gitea-runner.service (после прохождения health-check).
  • gtcnsl runner config generate [--force] — (пере)генерирует config.yaml по запросу, независимо от register/reconfigure.
  • gtcnsl config apply / set / toggle и gtcnsl secrets rotate — рестартят gitea.service в рамках своего цикла применения.

Управление через systemctl

sudo systemctl status gitea
sudo systemctl restart gitea
sudo systemctl status gitea-runner

# следить за логами
sudo journalctl -u gitea -f
sudo journalctl -u gitea-runner -f
i
Проверить оба сразу
gtcnsl doctor сообщает, активен ли каждый юнит (и предупреждает, а не падает, если один лежит) вместе с остальными проверками хоста.
!
Не правьте app.ini вручную под работающим сервисом
Прямая правка /etc/gitea/app.ini пропускает бэкап, diff и откат. Используйте gtcnsl config, чтобы плохое изменение не могло заклинить gitea.service.

Дальше

Чтобы перевести Gitea или сам gtcnsl на новую версию — см. «Апгрейды и self-update».