Сервис запущен, а снаружи порт мёртв. Это самый частый технический тикет, и в большинстве случаев лечение занимает одну команду. Пройдите чеклист сверху вниз, и сломанное звено найдётся.

Сначала поймём, что значит «закрыт»

Соединение с портом умирает в одном из трёх мест: приложение не слушает, файрвол сервера отбрасывает пакет, либо клиент вообще не долетает до сервера. Чеклист ниже разделяет эти случаи.

Шаг 1: слушает ли кто-нибудь?

ss -tlnp | grep :8080

Пустой вывод означает, что приложение просто не слушает порт. Смотрите его конфиг и логи; файрвол невиновен.

Вывод вида 127.0.0.1:8080 означает, что приложение слушает только localhost и никогда не примет внешнее соединение. Поменяйте адрес привязки на 0.0.0.0 (или IP сервера) в конфиге приложения и перезапустите его.

Шаг 2: проверка с самого сервера

curl -v http://127.0.0.1:8080/

Если не работает и так, проблема в приложении, точка. Если локально работает, а снаружи нет, идём дальше.

Шаг 3: какой файрвол на самом деле активен?

Современные дистрибутивы возят разные инструменты, часто два сразу. Проверьте все; побеждает тот, где есть правила:

sudo ufw status verbose            # Ubuntu/Debian
sudo firewall-cmd --list-all       # AlmaLinux/Rocky
sudo iptables -L -n | head -30
sudo nft list ruleset | head -30

Шаг 4: открыть порт в правильном инструменте

# ufw
sudo ufw allow 8080/tcp

# firewalld
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

Шаг 5: проверка из другой сети

nc -vz ip.вашего.сервера 8080

Проверяйте с машины вне сервера и желательно не из офисного Wi-Fi: корпоративные сети любят резать нестандартные порты на своей стороне.

Классические ловушки из тикетов

  • Docker публикует порты сам: контейнер без -p 8080:8080 недостижим ниоткуда, что бы ни говорил файрвол.
  • Приложение перезапустили, а порт держит старый процесс. ss -tlnp показывает PID; убедитесь, что это тот процесс, о котором вы думаете.
  • Исходящий порт 25 - особый случай на большинстве хостингов, включая наш: он ограничен по умолчанию как антиспам-мера. Нужна отправка почты - используйте релей на 2525/587 или напишите в поддержку.
  • Проверка «снаружи» через VPN, который заводит вас обратно в ту же сеть, ничего не доказывает. Для чистого теста подойдёт мобильный интернет.
Прошли весь список, а порт снаружи всё ещё мёртв при живом локальном? Теперь это тикет в поддержку: приложите выводы шагов 1 и 3, дальше разберёмся мы.