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».