Публикация локального хоста в Интернет с использованием PageKite на Ubuntu

В этом пособии мы расскажем, как открыть доступ к локальному хосту в Интернете с использованием PageKit на Ubuntu. Обычно, для получения удаленного доступа к вашему домашнему веб-серверу требуется настройка динамического DNS, так как Интернет-провайдер не предоставляет статический публичный IP-адрес. Однако, в некоторых странах провайдеры не назначают даже динамический публичный IP каждому клиенту, и многие пользователи делят один и тот же адрес. В таких ситуациях динамический DNS не поможет, и здесь вступает в дело PageKite.

PageKite — это открытая система обратного прокси с туннелированием, позволяющая обходить NAT, файрволы и предоставлять доступ к локальным веб — и SSH-серверам из публичного Интернета. Если вы разработчик или используете собственные сервисы, например NextCloud в домашней сети, PageKite поможет настроить удалённый доступ к ним через Интернет. Программа написана на Python, что позволяет её запуск на множестве различных устройств.

Важно отметить: когда ваш веб-сервер или SSH-сервер становится доступным в Интернете, он также подвергается риску хакерских атак.

Pagekite позволяет пользователям организовать доступ к своим локальным веб-серверам через Интернет, даже если они находятся за межсетевым экраном или NAT. Эта технология создаёт безопасный туннель, который связывает ваш сервер с уникальным доменным именем, обеспечивая доступ к ресурсам на вашем устройстве из любой точки мира.

  1. Обычно ваши службы, представляющие один или несколько HTTP-серверов, функционируют на локальном компьютере.
  2. Вы используете pagekite в качестве фонового соединителя на этом же устройстве.
  3. Еще один экземпляр pagekite функционирует в качестве внешнего реле на сервере с публичным IP-адресом, размещённом в «облаке».
  4. Задний pagekite устанавливает соединение с передним и формирует туннель для указанных служб.
  5. Пользователи, как правило, с помощью веб-браузеров, обращаются к переднему узлу для получения услуг. Передний реле пересылает запрос через соответствующий туннель, после чего задний узел отправляет его на реальный сервер. Ответы возвращаются тем же маршрутом.

Создание собственного переднего реле требует определенных затрат, однако разработчики PageKite предлагают возможность бесплатного использования аккаунта в течение 31 дня, чтобы вы могли его протестировать. В этом материале мы рассмотрим, как использовать PageKite с бесплатным аккаунтом. Данное руководство сосредоточено исключительно на экспонировании локального веб-сервера. Темы, связанные с экспонированием локального SSH-сервера, будут рассмотрены в другом руководстве.

Публикация локального хоста в Интернет с использованием PageKite на Ubuntu

Сначала необходимо установить веб-сервер, например, Apache, на вашем локальном компьютере с операционной системой Linux. Если вы используете дистрибутивы Linux, основанные на Debian или Ubuntu, введите следующую команду для установки сервера Apache.

sudo apt install apache2

Запустите сервер для веб-приложений.

sudo systemctl start apache2

Теперь Apache работает на порту 80. Мы применяем PageKite, чтобы сделать его доступным в Интернете. Установите PageKit на своем компьютере под управлением Linux, воспользовавшись следующей командой.

Debian версий 8 и 9, а также Ubuntu 16.04 и 18.04, Raspbian и его производные.

sudo apt install pagekite

После этого введите следующую команду, заменив «name» на нужный вам поддомен.

Читайте также:  Всеобъемлющее руководство по структуре каталогов в Linux для глубокого понимания файловой системы

pagekite name.pagekite. me

В начале он уточнит, хотите ли вы воспользоваться бесплатным сервисом PageKite.net. Так как у вас пока нет собственного сервера PageKite, выберите Y.

Руководство по использованию Pagekite

После этого PageKit предложит вам создать учетную запись на сайте PageKite.net, указав ваш адрес электронной почты.

Pagekite для Ubuntu

Информация о вашей учетной записи, включая пароль, будет отправлена на указанный вами электронный адрес. Пожалуйста, проверьте почту и нажмите на ссылку в полученном письме для активации вашей учетной записи. После этого введите Y, чтобы продолжить и сохранить ваши настройки.

Откройте доступ к локальному хосту через интернет.

Теперь PageKite будет интегрирован с фронтендом.

Вы сможете подключиться к своему локальному веб-серверу через доменное имя.

имя.pagekite.me

https://имя.pagekite.me

Учебное пособие по PageKite: как настроить обратный прокси через туннелирование.

Для прекращения работы PageKite нажмите Ctrl+C в окне терминала. Если вы хотите запустить PageKite в фоновом режиме, примените параметр —daemonize.

pagekite --daemonize name.pagekite.me

Чтобы прекратить работу демонизированного PageKite, выполните

pkill pagekite

Вы можете установить пароль для своей веб-страницы, применив базовую аутентификацию HTTP, как это показано ниже.

pagekite name.pagekite. me +пароль/username=pass

Pagekite.net предоставляет платным пользователям возможность использовать индивидуальные доменные имена путем настройки записи CNAME. Подробные инструкции доступны на их официальном сайте.

Запуск собственного сервера PageKite: шаги и рекомендации

Бесплатная пробная версия pagekite.net имеет множество ограничений. Тем не менее, есть возможность запустить свой собственный сервер PageKite, который также называют фронтэндом, на публичном Linux VPS (виртуальном частном сервере). Хотя это потребует затрат, создание собственного сервера PageKite действительно оправдывает расходы. Если вы решите воспользоваться услугами PageKite.net, то за 5 долларов в месяц вы получите всего 4 ГБ трафика.

цены на pagekite

При покупке VPS на базе Linux от TurnkeyInternet и развертывании собственного сервера PageKite вы можете наслаждаться гигабитным сетевым портом и неограниченным трафиком всего за 4,99 USD в месяц. Более того, на вашем VPS также есть возможность реализовать множество других увлекательных проектов, например, настроить свой собственный VPN.

VPS от Turnkey Internet

Для регистрации доменного имени вам понадобится его приобрести. Хотя вы, возможно, слышали о GoDaddy, более выгодным вариантом будет покупка доменных имен у Namecheap. У них более низкие цены, а также предоставляется бесплатная защита whois.

Представим, что вы приобрели VPS и зарегистрировали доменное имя. Теперь давайте разберёмся, как запустить сервер Pagekite на переднем плане. Сначала установите операционную систему Ubuntu 18.04 на ваш VPS через панель управления Linode. После этого подключитесь к вашему VPS с помощью SSH и выполните установку Pagekite, используя указанные команды.

sudo apt update sudo apt install pagekite

На ресурсе pagekite.net представлены руководства по установке RPM-пакетов для CentOS. После завершения установки pagekite конфигурационные файлы располагаются в директории /etc/pagekite. d/. Необходимо внести изменения в файл 20_frontends. rc.

sudo nano /etc/pagekite. d/20_frontends. rc

Закомментируйте строку, обозначенную как defaults, так как мы не собираемся применять сервис pagekite.net. После этого добавьте указанные строки в конце файла. Не забудьте заменить kite. your-domain.com на ваше доменное имя, а your-secret-key на выбранный вами секретный ключ. В качестве примера я использую свое доменное имя kite. csmage.com.

isfrontend runas=nobody:nogroup ports=80,443 protos=http, https domain=http, https:kite.your-domain.com:your-secret-key

Сохраните файл и закройте его. После этого запустите сервер Pagekite, воспользовавшись приведенной ниже командой, указав файл конфигурации. Поскольку для функционирования сервера Pagekite требуются TCP-порты 80 и 443, необходимо предварительно использовать команду sudo. Также убедитесь, что на вашем VPS не работают другие процессы, использующие эти два порта.

Читайте также:  Два метода обновления Ubuntu 18.04/19.04 до версии 19.10 (через графический интерфейс и терминал)

sudo pagekite --optfile=/etc/pagekite.d/20_frontends.rc

Для запуска сервера Pagekite в фоновом режиме примените параметр —daemonize.

sudo pagekite --optfile=/etc/pagekite.d/20_frontends.rc --daemonize

В вашем DNS-менеджере добавьте поддомен для pagekite с A-записью, которая будет ссылаться на IP-адрес вашего VPS, как указано ниже.

A kite.your-domain.com 12.34.56.78

Сформируйте службу Systemd для сервера PageKite

Файл службы systemd по умолчанию, расположенный по адресу /lib/systemd/system/pagekite.service, предназначен для работы в роли клиента. Мы можем создать отдельный файл службы systemd для сервера PageKite.

sudo nano /etc/systemd/system/pagekite.service

Скопируйте указанные строки и вставьте их в документ.

[Unit] Description=PageKite After=network. target [Service] Type=simple ExecStart=/usr/bin/pagekite --clean --optdir=/etc/pagekite. d/ TimeoutStopSec=5 KillMode=mixed PermissionsStartOnly=true Restart=on-abnormal RestartSec=2s LimitNOFILE=65536 WorkingDirectory=/tmp # Hardening SystemCallFilter=~@clock @debug @cpu-emulation @debug @keyring @module @mount @obsolete @raw-io @reboot @swap NoNewPrivileges=yes PrivateDevices=yes PrivateTmp=yes ProtectHome=yes ProtectSystem=strict ProtectKernelModules=yes ProtectKernelTunables=yes [Install] WantedBy=multi-user. target

Сохраните файл и закройте его. После этого перезапустите systemd, чтобы изменения начали действовать.

sudo systemctl daemon-reload

Теперь откройте документ 10_account. rc.

sudo nano /etc/pagekite. d/10_account. rc

Это конфигурационный файл, который применяется клиентом PageKite. Служба systemd PageKite будет последовательно обрабатывать каждый. rc файл, находящийся в папке /etc/pagekite.d/, в алфавитном порядке. Поэтому необходимо закомментировать всё содержимое этого файла. После этого можно завершить работу демонизированного сервера pagekite.

sudo pkill pagekite

Перезапустите его, используя команду systemctl.

sudo systemctl start pagekite

Для активации автоматического запуска при загрузке операционной системы выполните следующее.

sudo systemctl enable pagekite

Для того чтобы остановить автоматический запуск, выполните следующие действия:

sudo systemctl disable pagekite

Убедитесь в его состоянии.

systemctl status pagekite

Конфигурация клиента Pagekite для работы с вашим личным сервером

Отредактируйте файл 10_account. rc на своем локальном компьютере, где установлен клиент Pagekite.

sudo nano /etc/pagekite. d/10_account. rc

Измените значения kitename и kitesecret на имя вашего домена и секретный ключ, которые вы указали на сервере Pagekite. Также закомментируйте последнюю строку.

Сохраните файл и закройте его. После этого внесите изменения в файл 20_frontends.rc.

sudo nano /etc/pagekite. d/20_frontends. rc

Закомментируйте строку с параметрами по умолчанию. После этого вставьте следующую строку.

frontend = ваш-IP-сервера-pagekite:80

запустить фронтенд pagekite

Сохраните файл и закройте его. Затем измените имя файла 80_httpd. rc. sample на 80_httpd. rc.

sudo mv /etc/pagekite.d/80_httpd.rc.sample /etc/pagekite.d/80_httpd.rc

Перезапустите службу Pagekite на вашем компьютере.

sudo systemctl restart pagekite

Теперь ваш локальный клиент Pagekite успешно соединён с вашим персональным сервером Pagekite. Для проверки деталей подключения выполните:

sudo systemctl status pagekite

Теперь ваш локальный веб-сервер можно использовать через Интернет. Если связь с сервером Pagekite будет прервана, служба попытается восстановить соединение.

как пользоваться pagekite

Обратите внимание: при выполнении команды pagekite name. pagekite. me на своем локальном устройстве будет задействован файл конфигурации пользователя.~/.pagekite. rc, изначально использующий сервис pagekite.net.

Некоторое количество виртуальных хостов

В данном разделе описывается процесс настройки нескольких виртуальных хостов Apache, чтобы они были доступны в Интернете через вашу домашнюю сеть. Начнем с создания двух примеров виртуальных хостов Apache.

sudo nano /etc/apache2/sites-available/site1.csmage.com.conf

Содержание данного документа:

Сервер: site1.csmage.com, корневая директория: /var/www/site1.csmage.com/

Сформируйте каталог основного документа.

sudo mkdir /var/www/site1.csmage.com/

После этого создайте файл с именем index. html.

Читайте также:  Будущее Red OS - планы развития и новые возможности

echo "Это сайт №1." | sudo tee /var/www/site1.csmage.com/index. html

sudo nano /etc/apache2/sites-available/site2.csmage.com.conf

Содержание данного документа:

ServerName site2.csmage.com
DocumentRoot /var/www/site2.csmage.com/

Сформируйте каталог основного документа.

sudo mkdir /var/www/site2.csmage.com/

После этого создайте файл с именем index. html.

echo "Это сайт №2." | sudo tee /var/www/site2.csmage.com/index. html

Активируйте эти два виртуальных хоста.

sudo a2ensite site1.csmage.com sudo a2ensite site2.csmage.com

Перезапустите веб-сервер Apache, чтобы обновления начали действовать.

sudo systemctl reload apache2

Измените файл 20_frontends. rc на сервере PageKite.

sudo nano /etc/pagekite. d/20_frontends. rc

Добавьте два определения для доменов, как указано ниже.

domain=http, https:site1.csmage.com:секретный-ключ domain=http, https:site2.csmage.com:секретный-ключ

Сохраните файл и закройте его. После этого перезапустите PageKite.

sudo systemctl restart pagekite

Измените файл 80_httpd. rc на своем локальном устройстве.

sudo nano /etc/pagekite. d/80_httpd. rc

  • Веб-бэкенд представляет собой серверную часть веб-приложения, отвечающую за обработку данных, управление логикой приложения и взаимодействие с базами данных.
  • Бэкенд — это компонент системы, который выполняет все операции на стороне сервера, включая обработку запросов от клиента и предоставление необходимой информации для отображения на клиентской стороне.

service_on = http:site1.csmage.com : localhost:80 : секретный-ключ service_on = http://site2.csmage.com:80 : localhost секретный-ключ

Сохраните файл и закройте его. После этого перезапустите PageKite.

sudo systemctl restart pagekite

В конечном итоге добавьте DNS A запись для каждого из поддоменов. Теперь, если я зайду на http://site1.csmage.com, я получу

Если я зайду на http://site2.csmage.com, мне станет доступно…

Как видно, Pagekite успешно обработал каждый HTTP-запрос. Если у вас возникают проблемы, убедитесь, что ваши секретные ключи правильные, и проверьте наличие опечаток в файле конфигурации.

Как активировать HTTPS

TLS можно завершить как на бэкенде, так и на фронтенде. Первый подход является более простым и удобным. В этой инструкции я расскажу, как установить TLS-сертификат на локальном компьютере. Мы можем получить бесплатный TLS-сертификат от Let’s Encrypt для каждого поддомена. Сначала необходимо установить клиент Let’s Encrypt (certbot) и плагин для Apache на ваш локальный компьютер.

sudo apt install certbot python3-certbot-apache

Затем получите и установите TLS-сертификат для каждого из поддоменов, используя следующие команды.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --must-staple --email ваш-адрес-электронной-почты - d site1.your-domain.com sudo certbot --apache --accept-tos --enable-redirect --hsts --ocsp-stapling --require-staple --email ваш-адрес-электронной-почты - d site2.your-domain.com

  • —согласие-с-условиями : Принятие условий обслуживания.
  • —переадресация : Перенаправление HTTP на HTTPS
  • —hsts: Активировать заголовок для строгой транспортной безопасности.
  • —staple-ocsp : Активировать OCSP стейплинг.
  • —must-staple: Применяет расширение OCSP Must Staple к сертификату.

После успешного получения и установки сертификатов измените файл 80_httpd. rc на вашем локальном компьютере.

sudo nano /etc/pagekite. d/80_httpd. rc

Добавьте два определения для HTTPS в файл конфигурации, как указано ниже. Имейте в виду, что запросы HTTPS будут направляться на порт 443 на localhost.

service_on = https://site1.your-domain.com localhost:443 your-secret-key service_on = https://site2.your-domain.com localhost:443 your-secret-key

Сохраните изменения в файле и закройте его. После этого перезапустите клиент pagekite.

sudo systemctl restart pagekite

Теперь мои сайты автоматически используют HTTPS.

Автоматическое обновление сертификата TLS

Пакет certbot для Debian включает в себя предустановленное задание cron (/etc/cron. d/certbot) и таймер systemd (/lib/systemd/system/certbot. timer) для автоматического обновления TLS-сертификата. Таким образом, вам не потребуется самостоятельно настраивать задание cron или таймер systemd. Таймер активирует certbot.service дважды в сутки. Чтобы проверить его состояние, используйте:

systemctl status certbot.timer

Если задание cron certbot заметит существование таймера systemd, оно не выполнит команду обновления. Надеюсь, данный гайд по PageKite оказался полезным для вас в процессе открытия localhost в интернете с помощью PageKite на Ubuntu.