# Первый туннель за несколько минут

Создаём публичный HTTPS-адрес для сервиса, который уже запускается через Docker.

## Что получится

Предположим, ваш сайт открывается внутри Docker по адресу http://app:80. После настройки он будет доступен по адресу https://my-app.sknet.gitaspen.ru.

На компьютере не нужно открывать порт 80 или 443. Контейнер SKNet сам устанавливает исходящее защищённое соединение.

> **Обратите внимание.** Имя my-app — пример. Служебные и официально выглядящие имена SKNet не выдаёт.

## 1. Создайте туннель

1. **Откройте кабинет.** Войдите через единый аккаунт GitAspen и нажмите «Новый туннель».
2. **Задайте имя.** Короткое имя становится частью адреса: my-app → my-app.sknet.gitaspen.ru.
3. **Выпустите токен.** Секрет показывается один раз. Скопируйте его в .env или менеджер секретов.

## 2. Добавьте контейнер

Добавьте сервис tunnel рядом с приложением. В SKNET_LOCAL указывается внутренний Docker-адрес приложения, а не localhost вашего браузера.

**compose.yml**

```
services:
  app:
    image: nginx:alpine

  tunnel:
    image: sknet/sknet:latest
    command: [client]
    restart: unless-stopped
    environment:
      SKNET_REMOTE: control.sknet.gitaspen.ru:7000
      SKNET_TOKEN: ${SKNET_TOKEN:?Добавьте токен в .env}
      SKNET_TLS: "1"
      SKNET_NAME: my-app
      SKNET_LOCAL: http://app:80
    depends_on:
      - app
```

## 3. Сохраните токен

**.env**

```
SKNET_TOKEN=snet_ваш_секретный_токен
```

> **Осторожно.** Файл .env не добавляют в Git. В репозитории оставляют только .env.example без значения.

## 4. Запустите

**Терминал**

```
docker compose up -d

docker compose logs -f tunnel
```

> **Готово.** Когда в логе появится secure tunnel established, откройте публичный адрес из кабинета.

## Если приложение не в Docker

Контейнер должен уметь обратиться к приложению на хосте. На Windows и macOS обычно подходит host.docker.internal.

**compose.yml**

```
environment:
  SKNET_LOCAL: http://host.docker.internal:3000
```
