Перейти к основному содержимому

Запуск tuna как сервис

Фоновый запуск полезен, если вы хотите организовать постоянный доступ извне к службам или панели управления на удалённом компьютере.

Создание и управление сервисами

Создание и управление сервисами доступно во всех поддерживаемых платформах. Для создания работы с сервисами используется команда tuna service или tuna svc.

примечание

Все актуальные флаги, подсказки и примеры можно посмотреть вызвав справку:

tuna service --help
tuna service install --help
tuna service start --help
tuna service restart --help
tuna service stop --help
tuna service uninstall --help

Создание сервиса

к сведению

В Windows нужно выполнять команды в PowerShell от имени администратора, в Linux и FreeBSD потребуется sudo или root пользователь. В macOS сервис создаётся под текущим пользователем и привилегии не нужны.

Команда tuna service install указывает, что нужно зарегистрировать новый сервис. Можно создать несколько сервисов с разными именами, передавая имя через флаг --name или переменную окружения TUNA_SERVICE_NAME, по умолчанию tuna. После -- описывается команда которая будет запускаться в сервисе.

tuna service install -- tuna --config=С:\Users\Administrator\AppData\Local\tuna\tuna.yml http 8080 --subdomain=web 

В примере выше явно передан полный путь к конфигурационному файлу, это может быть необходимо так как сервис создаётся из под администратора, а файл с токеном находится в профиле текущего пользователя. С большей вероятностью это потребуется в Windows, Linux и FreeBSD и не потребуется в macOS. Также вы можете передать токен явно в аргументах:

tuna service install --name=tuna-web -- tuna http 8080 --subdomain=web --token=<tt_ваш_токен>

Для большей безопасности в Linux, FreeBSD и macOS токен будет вырезан из аргументов запуска и передан как переменная окружения, так что вы не увидите токен в списке процессов.

warning

Так как в Windows, Linux и FreeBSD сервис создаётся от привилегированного пользователя, по умолчанию процесс будет также запущен от него, в целях безопасности не рекомендуется запускать tuna от привилегированного пользователя. По этому вы можете указать явно пользователя от имени которого будет запускаться процесс с помощью флага --userили переменную окружения TUNA_SERVICE_INSTALL_USER. В Windows также может потребоваться передать и пароль пользователя с помощью флага --passwordили переменную окружения TUNA_SERVICE_INSTALL_PASSWORD.

tuna service install --user=ubuntu -- tuna http 8080 --subdomain=web --token=<tt_ваш_токен>

Запуск сервиса

Запуск осуществляется командой tuna service start.

Пример с передачей имени:

tuna service start --name=tuna-web

Перезапуск сервиса

Перезапуск осуществляется командой tuna service restart.

Пример с передачей имени:

tuna service restart --name=tuna-web

Проверка статуса сервиса

Проверка статуса осуществляется командой tuna service status.

Пример с передачей имени:

tuna service status --name=tuna-web

Остановка сервиса

Остановка осуществляется командой tuna service stop.

Пример с передачей имени:

tuna service stop --name=tuna-web

Удаление сервиса

Удаление осуществляется командой tuna service uninstall.

Пример с передачей имени:

tuna service uninstall --name=tuna-web

Отладка и поиск проблем

Если сервис не работает или работает некорректно, в первую очередь необходимо проверить журналы сервиса. Tuna представляет лишь верхнеуровневую обвязку для создания и запуска сервиса, способ отладки будет зависеть от вашей системы.

Для управления службой tuna в Windows, можно воспользоваться инструментом Службы (Services). В списке служб найдите tuna (или имя вашей службы). Щелкните правой кнопкой мыши на службу и выберите нужное действие: Запустить, Остановить или Перезапустить.

Для просмотра журналов службы tuna, можно воспользоваться инструментом Просмотр событий (Event Viewer) или PowerShell. В Просмотре событий откройте Windows Logs > Application или System, чтобы найти журналы, связанные с вашей службой.

Просмотр журналов через PowerShell:

Get-EventLog -LogName System -Source tuna

Запуск сервиса в Docker Compose

В качестве альтернативы можно использовать запуск сервиса с Docker Compose

Создайте compose.yml файл с описанием сервиса:

---
name: tuna
services:
web:
image: yuccastream/tuna:latest
command: http 3000 --subdomain=web
restart: always
network_mode: "host"
environment:
- TUNA_TOKEN=<ваш_токен>
Важно

Опция network_mode: "host", аналог --net=host, по умолчанию доступна только в Linux. Чтобы это заработало в Windows и macOS требуется включить эту бета функцию в Docker Desktop. Чтобы включить эту функцию, перейдите на вкладку Features in development в Settings , а затем выберите Enable host networking.

Запуск сервиса:

docker compose up -d

Остановка сервиса:

docker compose down -v

Просмотр журналов:

docker compose -f web