# Локальная ссылка перестала открываться: что такое localhost и почему он гаснет

Что такое localhost простыми словами: почему сайт, который собрал агент, гаснет вместе с окном, зачем номер порта и что делать, если страница не открывается.

URL: https://posts.danashkin.ru/guides/localhost-gasnet-vmeste-s-oknom
Обновлено: 2026-09-25

---

## Коротко

**Главное**

- Адрес вида localhost:3000 ведёт в твой же компьютер. Коллега, открыв ту же ссылку, попадёт в свой компьютер, где твоего сайта нет.
- Сайт по этому адресу показывает программа-сервер, которую запустил агент внутри своего окна. Закрыл окно - программа остановилась, ссылка погасла, а файлы проекта остались на месте.
- Первый запуск долгий, потому что проект сначала скачивает свои библиотеки и собирается. Следующие запуски идут быстрее, если установку и запуск развести.
- Окно открыто, а страница не грузится - почти всегда одна из четырёх причин: сервер упал, номер порта другой, адрес не тот или запущен не тот проект. Всё это видно в последних строках окна.

## Что такое localhost простыми словами?

**Главное**

Localhost - это имя, которым компьютер называет сам себя, за ним стоит адрес 127.0.0.1. Ссылка localhost:3000 значит «этот компьютер, дверь номер 3000». Работает она только там, где открыта.

Localhost - зарезервированное имя, по смыслу «этот компьютер». Когда браузер идёт по такому адресу, запрос не уходит в интернет: он разворачивается внутри твоей же машины и попадает в программу, которая на ней запущена.

Аналогия из офиса - внутренний номер телефона. Добавочный 214 соединяет с бухгалтерией в твоём здании. Если продиктовать «214» партнёру из другой компании, он дозвонится в свою бухгалтерию или никуда.

Со ссылкой так же. Пришлёшь коллеге localhost:3000 - его браузер постучится в его собственный компьютер. Там твоего сайта нет, и он увидит ошибку «не удаётся подключиться».

Именно для этого localhost и придуман: чтобы собирать и смотреть сайт у себя, не выкладывая его в сеть. Поэтому, когда [агент](/concepts/ai-agent) собрал тебе прототип и дал такую ссылку, всё идёт по плану: это репетиция на твоём столе.

## Почему сайт гаснет вместе с окном агента?

**Главное**

Страницу по адресу localhost показывает отдельная программа-сервер. Агент запускает её внутри своей сессии, и она живёт, пока живо окно. Закрыл окно или приложение агента - система останавливает всё, что из него запущено.

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

Когда ты просишь агента «запусти, я посмотрю», он выполняет команду вроде `npm run dev`. Она поднимает сервер разработки, и в окне появляется строка с адресом. Этот сервер - дочерний процесс окна: он запущен изнутри и зависит от него.

Механизм старый, ещё со времён терминалов, подключённых к большим машинам по линии. Когда линия обрывалась, система посылала запущенным с неё программам сигнал «отбой», и они завершались. Закрытое окно терминала сегодня работает так же.

На обучениях этот вопрос звучит почти дословно одинаково: закрыл агента, и ссылка перестала работать. Это ровно то поведение, которое заложено в устройство. Ничего не сломалось, проект лежит в папке целиком.

| Что ты сделал | Что с сервером | Что с проектом |
|---|---|---|
| Закрыл окно или приложение агента | остановился | файлы на месте |
| Закрыл вкладку браузера | работает дальше | файлы на месте |
| Перезагрузил компьютер | остановился | файлы на месте |
| Закрыл крышку ноутбука | засыпает вместе с системой | файлы на месте |

## Порт: номер двери в адресе

**Главное**

Число после двоеточия - номер порта, «двери», за которой ждёт конкретная программа. У одних инструментов по умолчанию 3000, у других 5173. Занята дверь - сервер уйдёт на соседнюю или не запустится.

Порт - это номер, по которому система понимает, какой из запущенных программ отдать запрос. Один компьютер - одно здание, порты - двери в нём. За дверью 3000 может ждать твой сайт, за дверью 5173 - другой проект.

У привычных сайтов номера в адресе нет, потому что он подразумевается. Для обычного веба это 80, для защищённого 443, браузер подставляет их сам. У сервера разработки номер нестандартный, поэтому пишется явно.

Разные инструменты берут разные двери. Next.js по умолчанию открывает сайт на localhost:3000, Vite - на localhost:5173. Какой инструмент под капотом у твоего проекта, агент скажет одной фразой.

Главное правило про порты: одну дверь может занимать только одна программа. Если номер уже отдан другому процессу, система откажет новому. Дальше зависит от инструмента. Vite, например, сам пробует следующий свободный номер и пишет новый адрес в окне. Отсюда частая ловушка: вчера сайт жил на 5173, сегодня на 5174, а в закладке браузера старый адрес.

## Почему первый запуск идёт минуты, а следующие - секунды?

**Главное**

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

Долгий первый запуск - это установка, а не сам запуск. Проект, который собрал агент, стоит на десятках чужих готовых библиотек: для интерфейса, для базы, для работы с датами. При первом запуске они скачиваются из интернета в папку проекта, потом код собирается в то, что понимает браузер.

Дальше библиотеки уже лежат на диске, и запуск сводится к подъёму сервера. Это похоже на переезд в новый офис: в первый день завозишь мебель, а потом просто открываешь дверь утром.

На обучениях был показательный случай: запуск рабочего прототипа по одной команде каждый раз занимал около пяти минут. Сам проект при этом был в порядке и уже приносил пользу в работе. В такой ситуации первым делом стоит проверить, не ставит ли команда запуска всё заново каждый раз. Если ставит, хватает одной просьбы к агенту: вынеси установку в отдельную команду, которую я запускаю только после обновлений, а обычный запуск пусть просто поднимает сервер.

**Фраза для агента**

«Разведи установку и запуск. Установку я буду делать только после твоих изменений в зависимостях. Обычный запуск должен только поднимать сервер и печатать адрес. Объясни, какая команда за что отвечает».

## Окно открыто, а страница не открывается: четыре причины

**Главное**

Если окно живо, а браузер пишет «не удаётся подключиться», смотри в последние строки окна. Там видно одно из четырёх: сервер упал с ошибкой, он слушает другой порт, ты открыл не тот адрес или запущен не тот проект.

Открытое окно ещё не значит, что сервер жив. Программа могла упасть через секунду после старта, а окно осталось висеть с её последними словами. Поэтому первым делом читаем, что написано внизу окна, а не перезапускаем всё подряд.

| Что видишь в окне | Что это значит | Что делать |
|---|---|---|
| Красный текст, слово error, строка вида «at ...» | сервер упал с ошибкой | скопировать текст целиком и отдать агенту |
| Адрес с другим номером, например 5174 вместо 5173 | прежний порт занят, сервер ушёл на соседний | открыть новый адрес из окна |
| Адрес тот, но в браузере открыт другой | опечатка или старая закладка | скопировать адрес из окна, не набирать руками |
| Сайт открылся, но чужой или старый | запущен другой проект из соседней папки | спросить агента, из какой папки идёт запуск |

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

Про само умение читать окно я подробно писал в материале про [терминал для непрограммиста](/guides/terminal-dlya-neprogrammista). Хватает двух-трёх последних строк.

## Сообщение агенту: три факта вместо «не работает»

**Главное**

Агент чинит запуск быстро, если получает факты: какой адрес ты открывал, что пишет браузер и что написано в последних строках окна. Слова «ссылка не открывается» без этого - гадание.

Хорошее сообщение про упавший запуск собирается за минуту.

1. **Скопируй адрес из браузера**

   Целиком, с номером порта. Так агент сразу увидит, совпадает ли он с тем, на котором поднят сервер.

2. **Перепиши, что показывает браузер**

   «Не удаётся подключиться», белая страница, страница с ошибкой - это три разных диагноза.

3. **Скопируй последние строки окна**

   Текстом, а не пересказом. Если там ошибка, она почти всегда называет причину.

4. **Попроси проверить, что запущено**

   «Проверь, какие серверы сейчас работают на этом компьютере и из каких папок». Агент это видит за пару секунд.

Почему пересказ ошибки ломает починку и какие строки копировать, я разбирал в материале про то, [как принести агенту ошибку](/guides/kak-prinesti-agentu-oshibku). Там же про секреты, которые иногда уезжают в чат вместе с логом.

## Как запускать проект без окна агента?

**Главное**

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

Держать открытым окно агента ради того, чтобы смотреть на свой сайт, неудобно. Выход простой: попросить агента один раз сделать тебе кнопку.

На Mac это может быть файл, который открывается двойным щелчком и сам поднимает сервер. На Windows - такой же ярлык. Внутри та же команда, что запускал агент, только запускаешь её ты, в отдельном окне. Правило прежнее: сервер живёт, пока открыто это окно.

Я видел на разборах проектов типичную сцену: человек открывает свой прототип, чтобы показать его, а страница не грузится. Проект цел, просто сервер закрылся вместе с прошлой сессией агента. Одна просьба «подними снова» возвращает всё на место, а ярлык снимает этот вопрос насовсем.

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

## Чем локальный запуск отличается от выкладки в интернет?

**Главное**

Локальный запуск - это сайт для одного зрителя на время, пока включён компьютер. Выкладка - это копия проекта на сервере в интернете, с постоянным адресом, который открывается у любого и работает круглосуточно.

Ярлык решает проблему «чтобы посмотреть самому». Показать сайт коллеге или клиенту он не поможет: адрес по-прежнему ведёт в твой компьютер. Постоянную ссылку даёт только выкладка на сервер, её называют деплоем.

Что меняется при переезде, где жить продукту и что делать с персональными данными, я разбирал в материале о том, что делать, когда [прототип готов и пора выкладывать](/guides/prototip-gotov-chto-dalshe-deploy-152fz).

Если твой проект - бот или сервис, который должен работать и ночью, пригодится разбор про то, как [отвязать бота от включённого ноутбука](/guides/otvyazat-bota-ot-vklyuchennogo-noutbuka). А ответ на частый соседний вопрос «нужен ли агент готовому приложению» - в статье про то, [работает ли приложение без Claude](/guides/nuzhen-li-claude-gotovomu-prilozheniyu).

## Частые вопросы

**Главное**

Что спрашивают чаще всего: можно ли открыть localhost с телефона, можно ли переслать ссылку коллеге, не пропадёт ли проект при закрытии окна и что такое 127.0.0.1.

### Частые вопросы

**Можно ли открыть localhost с телефона?**

Нет. На телефоне localhost означает сам телефон, а там твой сервер не запущен. Посмотреть с другого устройства можно после выкладки в интернет или через отдельную настройку локальной сети, которую стоит делать вместе с агентом.

**Можно ли отправить ссылку localhost коллеге?**

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

**Не пропадёт ли проект, если закрыть окно агента?**

Нет. Останавливается только программа-сервер. Файлы проекта остаются в папке, и следующий запуск поднимет тот же сайт.

**Что такое 127.0.0.1?**

Это цифровой адрес того же localhost, «этот компьютер». Ссылки 127.0.0.1:3000 и localhost:3000 ведут в одно место.

## Главный вывод

**Главное**

Localhost - это твой компьютер, порт - дверь в нём, а сайт показывает программа-сервер, которая живёт, пока открыто окно. Гаснущая ссылка - нормальное устройство локального запуска, а постоянный адрес даёт только выкладка.

Локальная ссылка работает, пока работают три вещи: компьютер, окно с сервером и нужная дверь. Погасла одна - погасла ссылка, а проект остался на месте.

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

А твой проект сейчас живёт только на localhost или уже выложен в интернет?

### Источники

- [Localhost - зарезервированное имя «этот компьютер» и адрес 127.0.0.1, Википедия](https://ru.wikipedia.org/wiki/Localhost)
- [Порт (компьютерные сети) - номер, по которому система отдаёт запрос нужной программе, Википедия](https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D1%82_%28%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D1%8B%D0%B5_%D1%81%D0%B5%D1%82%D0%B8%29)
- [Port - порты по умолчанию для HTTP (80) и HTTPS (443), MDN](https://developer.mozilla.org/en-US/docs/Glossary/Port)
- [What is a web server - что такое веб-сервер и как он отдаёт страницы, MDN](https://developer.mozilla.org/en-US/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_web_server)
- [SIGHUP - сигнал процессу при закрытии управляющего терминала, Википедия](https://en.wikipedia.org/wiki/SIGHUP)
- [Getting Started: Installation - сервер разработки Next.js на localhost:3000, Next.js](https://nextjs.org/docs/app/getting-started/installation)
- [Server Options - порт 5173 по умолчанию и переход на следующий свободный, Vite](https://vite.dev/config/server-options)
