Конфигурационный файл
Часть основных настроек можно задать через конфигурационный файл в yaml формате.
Путь по умолчанию
В Windows обычно файл хранится по пути - $env:USERPROFILE\AppData\Local\tuna\tuna.yml,
в Unix-подобных операционных системах (macOS, Linux, FreeBSD) - ${HOME}/.config/tuna/tuna.yml.
Сохранение основных настроек
Сессия, полученная командой tuna login, хранится не в этом файле, а в системном хранилище ключей (подробнее — в разделе Авторизация). В файл попадает только API-ключ.
Сохранить API-ключ:
tuna config save-api-key <ваш_api_key>
То же самое делает tuna login --with-api-key, но читает ключ из стандартного ввода, и он не остаётся в истории оболочки.
С tuna-cli 0.39 tuna config save-token и tuna config save-location устарели и скрыты из справки. Поле token в файле пока работает, но CLI предупреждает о замене: войдите через tuna login или сохраните API-ключ. Поле location нужно только для имён, зарезервированных в зонах ru и nl, — подробнее в разделе Регионы.
Поле inspectAddr больше не читается: CLI предупредит о нём в логе. Адрес инспектора задаётся переменной TUNA_INSPECT_ADDR, порт — флагом --inspect-port, подробнее — на странице инспектора.
Пример файла
Пример основных настроек:
---
version: "1"
apiKey: tak_***
Использование иного пути к файлу
Можно явно указывать путь к файлу с помощью флага --config:
tuna --config /tmp/tuna.yml http 8080
Или через переменную окружения TUNA_CONFIG:
export TUNA_CONFIG=/tmp/tuna.yml
tuna http 8080
Множественный запуск туннелей
В файле может храниться описание для множественного запуска туннелей, пример:
---
tunnels:
web:
tags: [frontend, ui]
commandLine: tuna http localhost:5173 --subdomain=web
php:
tags: [backend, php, api]
commandLine: tuna http 8080 --subdomain=api
python:
tags: [backend, python, api]
commandLine: tuna http 9000 --subdomain=new-api
postgres:
tags: db
commandLine: tuna tcp 5432 --port=postgres
mysql:
tags: db
commandLine: tuna tcp 3306 --port=mysql
Политики трафика
В файле может храниться описание правил для политик трафика, пример:
---
rules:
- name: robots.txt
expressions:
- hasPrefix(req.URL.Path, "/robots.txt")
actions:
- name: шаг 1
type: custom_response
config:
statusCode: 200
content: |
User-agent: *
Disallow: /
headers:
content-type: "text/plain"
- name: Мок для банков
expressions:
- hasPrefix(req.URL.Path, "/banks")
actions:
- type: custom_response
config:
statusCode: 403
content: |
Запрещено
headers:
content-type: "text/plain; charset=utf-8"
- expressions:
- hasPrefix(req.URL.Path, "/v1")
actions:
- type: reverse_proxy
config:
url: "http://127.0.0.1:7070"
Проверка корректности синтаксиса
tuna config check