# Postgres туннель

к сведению

Доступно только по [подписке](https://tuna.am/#pricing).

## Обзор

Postgres туннель позволяет предоставить доступ к базе данных PostgreSQL и отслеживать выполняемые SQL запросы в инспекторе.

примечание

Postgres туннели рассчитаны на отладку и работу локально или в тестовых окружениях, не поддерживают подключение через SSL, поэтому нужно использовать `sslmode=disable`. Мы не рекомендуем использовать этот тип туннелей в производственных средах.

## Примеры

примечание

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

```shell
tuna postgres --help

```

Почти для всех флагов есть аналогичные [переменные окружения](https://tuna.am/docs/guides/environment-variables.md).

### Базовый пример

```shell
tuna postgres 5432

```

### С передачей IP-адреса

```shell
tuna postgres 10.0.0.1:5432

```

### С указанием токена

Можно указать специфичный токен через флаг `--token` или переменную окружения `TUNA_TOKEN`. Переопределение происходит в соответствии с политикой [очерёдности конфигурации](https://tuna.am/docs/guides/config-ordering.md).

```shell
tuna postgres 5432 --token=tt_***

```

### С указанием региона для подключения

Можно указать специфичный [регион](https://tuna.am/docs/tunnels/guides/locations.md) через флаг `--location`/`-l` или переменную окружения `TUNA_LOCATION`. Переопределение происходит в соответствии с политикой [очерёдности конфигурации](https://tuna.am/docs/guides/config-ordering.md).

```shell
tuna postgres 5432 --location=nl

```

### Статичный порт

В качестве значения флага `--port`/`-p` может выступать алиас или назначенный порт. Порты можно резервировать в [личном кабинете](https://my.tuna.am/tcp_ports) и после перезапуска туннеля адрес останется прежним. Подробнее о портах читайте в отдельной [инструкции](https://tuna.am/docs/tunnels/ports.md).

```shell
tuna postgres 5432 --port=postgres
tuna postgres 5432 --port=35000

```

### Ограничение доступа по подсетям IP

Вы можете определить белый список [подсетей](https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D1%81%D0%B5%D1%82%D1%8C) в CIDR-формате:

```shell
tuna postgres 5432 --cidr-allow="10.0.0.1/32"

```

Либо запретить доступ из определенных подсетей:

```shell
tuna postgres 5432 --cidr-deny="10.0.0.1/32"

```

Можно комбинировать, например указать широкую сеть и вычесть частные IP:

```shell
tuna postgres 5432 --cidr-allow="10.0.0.1/24" --cidr-deny="10.0.0.33/32"

```

Также можно передавать списки через запятую:

```shell
tuna postgres 5432 --cidr-allow="10.0.0.1/24,192.168.0.1/24" --cidr-deny="10.0.0.33/32,192.168.0.33/32"

```

## Инспектор запросов

В инспекторе запросов можно производить отладку входящих запросов, смотреть заголовки и другую информацию, которая может облегчить работу при разработке приложений. Он управляется флагом `--inspect` или переменной окружения `TUNA_INSPECT`.

### Управление

Инспектор запросов включен по умолчанию и доступен по адресу `http://127.0.0.1:4040`, если порт `4040` занят, то будет выбран следующий по списку свободный. Адрес или порт можно переопределить с помощью переменной окружения `TUNA_INSPECT_ADDR` или параметра `inspectAddr` в [конфигурационном файле](https://tuna.am/docs/guides/config-file.md).

* `TUNA_INSPECT_ADDR=0.0.0.0` - слушать на всех интерфейсах
* `TUNA_INSPECT_ADDR=0.0.0.0:8080` - слушать на всех интерфейсах на порту `8080`, если порт занят, то будет выбран следующий по списку свободный
* `TUNA_INSPECT_ADDR=8080` - слушать на адресе `127.0.0.1` на порту `8080`, если порт занят, то будет выбран следующий по списку свободный

Итоговый адрес будет написан в консоли при запуске:

![cli\_postgres](/docs/img/inspect/cli_postgres.webp)

### Интерфейс

Слева отображается список сессий, а справа вывод команд, которые были выполнены внутри сессий.

![web\_postgres](/docs/img/inspect/web_postgres.webp)
