Делаем локальный сервер доступным всему интернету
При разработке веб проекта (не важно на PHP, Django, Flask) бывают случаи когда необходимо быстро продемонстрировать его работу заказчику для уточнения деталей, а так как обычно разработка происходит на локальном компьютере разработчика, то необходимо предварительно выложить проект на удаленный сервер.
Было бы удобней просто дать заказчику временную ссылку, которая даст доступ к проекту запущенному локально у разработчика. Для этих целей есть инструмент ngrok, как его использовать описано в этой заметке.
Установка ngrok на Windows
ngrok доступен под все основные операционные системы, скачать его можно с https://ngrok.com/download. Под Windows доступна как установка через менеджер пакетов Chocolatey, так через скачивания zip архива.
После скачивания архива (содержащего всего один файл) его нужно просто распаковать. На этом собственно установка завершена.
Регистрируемся тут https://dashboard.ngrok.com/login и получаем токен.
Далее в командной строке Windows перейдем в папку с ngrok.exe и выполним команду:
Как пользоваться ngrok
Например, мы разрабатываем проект на Джанго используя тестовый сервер и хотим показать проект заказчику, как нам это сделать?
Запустим тестовый сервер python manage.py runserver , теперь проект доступен нам по адресу http://127.0.0.1:8000/
Далее в командной строке Windows перейдем в папку с ngrok.exe и выполним следующую команду:
ngrok http 8000
8000 — это порт на котором у нас запущен тестовый сервер Django.
В результате получаем такой вывод:

http://f1ff-109-63-232-90.ngrok.io/ это адрес по которому наш локальный сервер доступен в интернете.
Наш тестовый сервер будет доступен по этому адресу до тех пор, пока мы не закроем окно консоли или не нажмем в ней Ctrl + C. После этого, чтобы сервер стал доступен вновь извне с помощью ссылки, нужно заново запустить ngrok.
Попробуем перейти по полученному адресу и уже увидим страницу Джанго, осталось только убрать эту ошибку:

Для этого в файле settings.py нашего проекта поправим директиву ALLOWED_HOSTS:
Перезапускаем сервер Django и теперь все ок:
Вот таким образом мы можем продемонстрировать процесс разработки заказчику.
Заключение
Описанное выше это не все, что можно сделать с помощью ngrok, например мы можем сделать доступ извне к нашей локально запущенной Postgresql (например на порту 5432). Для этого достаточно команды:
Сделайте свой локальный хост доступным в Интернете
Самая легкодоступная и непосредственная среда, к которой у вас есть доступ, — это ваш собственный компьютер. С Localtunnel легко поделиться веб-службой на локальном ПК без необходимости возиться с настройками DNS и брандмауэра. Он назначит вам уникальный общедоступный URL-адрес, который будет передавать все запросы на ваш веб-сервер.
Почему Localtunnel?
Вы можете спросить, почему вы хотите использовать Localtunnel. Например, Amazon нужен запрос на ваш веб-сервер, и вы не можете просто использовать свой локальный хост. Ему нужен источник веб-сайта и разрешенные обратные URL-адреса. Источник — это комбинация протокола, доменного имени и порта (например: https://www.example.com). Разрешенные источники должны использовать протокол HTTPS. Если ваш веб-сайт будет совершать HTTPS-вызовы для входа в систему с помощью Amazon, тогда появятся разрешенные URL-адреса возврата. URL-адрес возврата включает протокол, домен, путь и строку запроса. Протокол возврата URL должен быть HTTPS. Например: https://www.example.com/login.php.
Настраивать
Вот простое изложение того, как использовать Localtunnel:
- Установите Localtunnel глобально (требуется NodeJS)
npm install -g localtunnel
- Запустите веб-сервер на некотором локальном порту (при условии, что ваши локальные файлы доступны через https://localhost)
- Получите случайный URL-адрес (вы также можете использовать настраиваемые субдомены, упомянутые позже в статье), которым вы можете поделиться с кем угодно.
Для доступа к WordPress перейдите к URL-адресу вашего туннеля, затем укажите имя каталога WordPress и добавьте /wp-admin
Функции
Вот список функций, которые предоставляет Localtunnel:
- Безопасный https для всех туннелей
- Покажите свою работу кому угодно
- Используйте API для тестирования веб-хуков
- Проверьте свой пользовательский интерфейс в облачных браузерах
Использование собственного субдомена
Одной из замечательных особенностей Localtunnel является то, что вы можете использовать собственный поддомен без необходимости платить за него. Вот как это использовать:
lt -p|—port 80 -s|—subdomain yoursubdomain
Возможные проблемы
Проблема с петлей перенаправления
Если вы хотите использовать WordPress с этим Localtunnel, вы можете столкнуться с некоторыми проблемами, например, циклом перенаправления, который не позволит вам открыть свой сайт WordPress в качестве администратора.
Чтобы решить эту проблему, вам нужно настроить свой код в файле wp_config.php. Просто добавьте этот код в ваш файл wp_config.php:
если ($_SERVER[‘HTTP_X_FORWARDED_PROTO’] == ‘https’)
Это должно решить проблему, и теперь вы можете использовать Localtunnel на своем сайте WordPress без каких-либо дополнительных проблем.
Ваш поддомен больше не работает
Возможно, ваш поддомен не будет работать, и он даст вам случайный поддомен, а мы этого не хотим. Проблема в том, что их серверы еще не полностью закрыли туннель. Это может быть проблема, которую вы вызываете из-за неправильного закрытия туннеля, поэтому, если это проблема, вам просто нужно подождать несколько минут, и сервер закроет туннель с вашим поддоменом, а затем вы сможете открыть другой с помощью тот же субдомен.
Список аргументов Localtunnel
Это список всех аргументов в Localtunnel:

Вывод
Localtunnel — отличный инструмент, позволяющий сделать ваш локальный сервер доступным из Интернета. Он очень прост в использовании и практически не вызывает проблем. Localtunnel очень безопасен и, что самое приятное, абсолютно бесплатен.
Как сделать локальный веб-сервер доступным в Интернете
Предлагаемое решение будет актуально для тех, у кого Интернет-провайдер не продоставляет выделенный внешний IP или просто блокирует все входящие подключения. Выполнив ряд несложных действий мы получим веб-сервер доступный из Интернета хоть и на небольшой скорости, но зато по статичному доменному имени.
Идея заключается в том, чтобы воспользовавшись сервисом gogoNET получить бесплатный внешний IPv6 адрес с доменом, и далее обращаться к нему через IPv6 — IPv4 шлюз сервиса SixXS.
Пошаговая инструкция
1. Регистрируемся в gogoNET и скачиваем gogoCLIENT. Обратите внимание, что на скачивание доступны 2 версии gogoCLIENT — Home Access и Basic, соответственно со встроенным Apache и без него.
2. Создаём аккаунт в freenet6, он будет необходим для получения доступа к расширенным функциям gogoCLIENT.
3. Запускаем gogoCLIENT, прописываем Server Address: amsterdam.freenet6.net, логин и пароль соответственно от аккаунта в freenet6. Если вы скачали gogoCLIENT Home Access, тогда для активации встроенного веб-сервера необходимо поставить галку во вкладке HomeWeb.
4. Во вкладке Status смотрим Local Endpoint Address — это ваш выделенный IPv6 адрес, и Delegated User Domain — это ваш IPv6 домен, надо понимать, что он будет доступен только клиентам подключенным к IPv6.
5. Для того, чтобы выделенный вам домен стал доступен в IPv4 необходимо добавить к нему постфикс .net.ipv4.sixxs.org, таким образом получив домен вида USERNAME.broker.freenet6.net.ipv4.sixxs.org
6. Если вы используете Basic версию, тогда далее вам следует произвести настройку веб-сервера на полученный домен USERNAME.broker.freenet6.net и внутренний IPv6 адрес. Проверить активность и доступность веб-сервера можно воспользовавшись сканером портов для IPv6 введя туда адрес USERNAME.broker.freenet6.net
Как уже было сказано, при всём этом вы не получите высокую скорость соединения т.к. в предложенном решении подразумевается двойное туннелирование, однако при использовании gogoCLIENT приятным бонусом станет доступность всей IPv6 части Интернета.
Статья Делаем локальный сайт (на localhost) доступным для других компьютеров
Эта статья для тех, у кого есть сайт на локальном сервере и кто хочет сделать его доступным с других компьютеров. Кстати, если у вас ещё нет локального сервера, то вы с лёгкостью его поставите по этой инструкции. Подразумевается, что ваш сервер установлен по указанной инструкции, если это не так, то файлы могут находится в других директориях.
- внутри квартиры (всегда);
- внутри локальной домашней сети (почти всегда);
- для всех пользователей Интернета (не всегда).
Разница в вероятностях (всегда-иногда) заключается в вашем IP. Если он статический, то всё делается довольно легко. Как делать локальный сервер при динамическом IP в этой статье не описывается.
Внутри своей квартиры вы сами задаёте политику присвоения адресов — например, Wi-Fi роутер может раздавать устройствам произвольные, динамические IP адреса; и можно настроить роутер и устройства так, что всем им будут присвоены определённые статические адреса.
Домашние локальные сети, как правило, организовываются региональными провайдерами. Внутри этих сетей все пользователи, обычно, имеют два IP: один — локальный (статический, который пользователь вписывает при настройки комьпютера или сетевого оборудования) второй — динамический который присваивается при доступе в Интернет.
Локальные адреса, в основном, имеют такой вид (вместо нулей должны быть другие цифры):
Открываем файл C:ServerbinApache24confhttpd.conf и ищем там строчку
Сохраняем файл и перезапускаем сервер. На самом деле — всё!
Пробуем доступ к серверу набрав в строке браузера свой IP (я набираю http://192.168.43.90/ ), как и следовало ожидать — доступа нет, но причина очевидна: файервол. Его нужно настроить должным образом, но для нашего тестирования я его просто отключаю.
Теперь всё впорядке и ваш сайт доступен по адресу http://192.168.43.90/ с любого устройства, находящегося в вашей домашней или городской сети. На следующем скриншоте, я зашёл на локальный сервер с телефона:
24 часа в сутки
Если у вас статичный IP для интернет соединений (у некоторых Интернет провайдеров можно подключить эту услугу за отдельные деньги), то вы можете сделать из своего компьютера самый настоящий хостинг-сервер! Понятное дело, что компьютер должен быть включен 24 часа в сутки, иначе на ваш сайт невозможно будет попасть.
Внутри локальной (домашней) сети вы можете придумать имя своему сайту и попросить ваших друзей и всех тех, кто будет заходить на него внести изменения в файл
C:WindowsSystem32Driversetchosts
Каждому из них нужно будет добавить туда строчку:
ваш_IP ваш_сайт
например
192.168.43.90 alexblog.local
После этого набирая в адресной строке браузера http://alexblog.local они будут попадать на ваш сайт.
Зачем все эти сложности?
Открытие доступа к локальному серверу может быть полезным по ряду причин, правда, обычно они довольно специфические. Те, кто этим занимаются, знают для чего они это делают. Сейчас, когда не нужно платить за трафик (но нужно платить за электричество), гораздо разумнее разместить свой сайт (доступ к которому вы хотите открыть для всех) на хостинге.
Более того, открывая доступ к своему localhost нужно подумать о безопасности. В данной статье я этот вопрос не затрагиваю, но могу вас заверить, что Apache, запущенный от имени администратора (а именно так он у большинства на локахосте и запущен), через скрипты PHP (или уязвимости в них), может «путешествовать» по каталогам дисков. Т.е., по крайне мере теоретически, злоумышленник через уязвимости в вашем сайте может скачать файлы с вашего компьютера или удалить файлы, например, в директории Windows. Если заботиться о безопасности локального сервера является слишком сложным занятием для вас, то ответ очевиден — хостинг.