Multiple Tunnel Startup
In projects where you need to publish multiple services, you may need to run several tunnels at once.
All current flags, hints, and examples can be viewed by calling help:
tuna start --help
Configuration
You can describe all tunnels in the global configuration file or a local one (only for the tunnels section).
If a local file named .tuna.yml is found in the current directory, it overrides the tunnels section from the global one.
This way you can create a .tuna.yml in the root of the repository and it will immediately work for all developers on the team.
The path to the local file can be overridden using the --tunnels-file flag or the TUNA_START_TUNNELS_FILE environment variable for the tuna start command.
tuna start --tunnels-file=/your/path/.tuna.yml web
Example configuration describing the launch of four tunnels:
---
tunnels:
web:
commandLine: tuna http localhost:5173 --subdomain=web
tags: [frontend, ui]
api:
commandLine: tuna http 8080 --subdomain=api
tags: [backend, api]
postgres:
commandLine: tuna tcp 5432 --port=postgres
tags: backend
redis:
commandLine: tuna tcp 6379 --port=redis
tags: frontend
What each service consists of using the first as an example:
web:
commandLine: tuna http localhost:5173 --subdomain=web
tags: [frontend, ui]
web- tunnel name, must be unique in the list of all tunnelscommandLine- command to create the tunneltags- optional field, can contain a string or a list of strings. Tags can be used to run a subset of tunnels.
Running
The tuna start command is responsible for running, you can separate the launch depending on your needs.
By service name
Run tunnel only for the api service:
tuna start api
Run tunnel only for api and postgres:
tuna start api postgres
The name can also be passed in the TUNA_START environment variable:
export TUNA_START="api"
tuna start
By tag
Run all tunnels with the frontend tag:
tuna start --tags=frontend
Run all tunnels with the frontend or backend tag:
tuna start --tags=frontend,backend
Tags can also be passed in the TUNA_START_TAGS environment variable:
export TUNA_START_TAGS="frontend"
tuna start
All at once
Run all described tunnels:
tuna start --all
Or with the TUNA_START_ALL environment variable:
export TUNA_START_ALL=true
tuna start