Руководства по развёртыванию, секретам, доменам и управлению контейнерами.

Доступ к приложению из интернета

Порт в манифесте, внешний адрес в кабинете и проверка: как приложение открывается снаружи. · обновлено 2026-10-14

Приложение в контейнере по умолчанию доступно только внутри машины. Чтобы открыть его из интернета, нужно опубликовать порт — тогда кабинет покажет готовый адрес, по которому приложение и открывается.

1. Опубликуйте порт в манифесте

Порт задаётся в манифесте приложения — это файл с описанием сборки, который панель отдаёт агенту.

Compose. В docker-compose.yml приложения у нужного сервиса добавьте публикацию:

services:
  web:
    build: .
    ports:
      - "8080:8080"          # внешний:внутренний — приложение слушает 8080 внутри контейнера

Dockerfile. Укажите порт при добавлении приложения: поле «Порт приложения». Панель сама соберёт run_args с публикацией:

{
  "app": "myapp",
  "repo_url": "https://github.com/user/repo.git",
  "branch": "main",
  "dockerfile": "Dockerfile",
  "tag": "apploy/myapp:latest",
  "run_args": ["-p", "8080:8080"]
}

Адрес перед портом не указывайте: -p 8080:8080 публикует порт на всех интерфейсах машины, и приложение открывается по http://<адрес машины>:8080. Запись -p 127.0.0.1:8080:8080 оставляет порт только внутри машины — снаружи он не откроется (панель предупредит об этом при проверке).

Публиковать можно только порты самого приложения: платформа не разрешает монтировать системные каталоги, использовать привилегированный режим и сеть хоста (см. статью о манифестах).

2. Посмотрите адрес в кабинете

После запуска откройте Приложения или дашборд: платформа показывает

  • внешний адрес машины, на которой живут ваши приложения (например 185.133.42.82);
  • порт, который опубликован приложением (например 8080);
  • готовую ссылку вида http://185.133.42.82:8080.

Для подписки машину держит платформа, поэтому адрес может меняться только при переезде — в кабинете всегда актуальный. Для заказанной ВМ адрес видён в её карточке.

3. Проверьте снаружи

  1. Нажмите Проверить с сервера у приложения: платформа пробует порт сама и показывает, отвечает ли TCP и что возвращает HTTP. Так видно результат «с той стороны», а не только со слов агента.
  2. Откройте адрес в браузере с телефона или с другого компьютера — так проверяется доступ из интернета, а не изнутри машины.

Если не открывается

Что видно Причина Что делать
Порт в кабинете не показан контейнер не публикует порт добавьте ports в compose или укажите порт при добавлении приложения
Порт есть, но TCP не отвечает приложение слушает 127.0.0.1 внутри контейнера слушайте 0.0.0.0 (в Django: --bind 0.0.0.0:8080, в Node/Express: app.listen(port, '0.0.0.0'))
В кабинете «порт опубликован только на 127.0.0.1» порт привязан к localhost машины (-p 127.0.0.1:8080:8080) уберите адрес: -p 8080:8080, затем «Перезапуск» или «Развернуть»
Контейнер перезапускается ошибка в приложении или не заданы переменные откройте Логи у приложения
По адресу открывается не то в контейнере несколько сервисов, порт занят другим опубликуйте разные порты: 8081:8080, 8082:3000

Внешний адрес заказанной ВМ

Если у вас своя машина, вы управляете доступом сами: публикация портов в compose или Dockerfile, затем правила файрвола внутри гостевой системы. Платформа не ограничивает ваш файрвол — это ваша машина. Панель показывает публичный адрес и состояние, а что и как открывать наружу — ваше решение.

Свой домен

Первым шагом достаточно адреса и порта. Домен подключается на стороне вашего приложения или вашей машины (обратный прокси: nginx, Caddy, Traefik), и это отдельная задача — она не входит в подписку.