LOADING
2169 words
11 minutes
Pangolin — самый простой (но не дешевый) способ открыть доступ к homelab

В случае если вам понравилась эта статья, то можете поддержать автора, став спонсором на Boosty.

Если вы думали, что эта статья будет посвящена забавному млекопитающему панголину, то вы ошиблись.

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

Предисловие

В homelabbing есть одна огромная болевая точка, с которой сталкивается почти каждый, кто поднимает себе домашний сервер. Сначала всё работает «локально»: сервисы крутятся, веб-интерфейсы открываются, всё красиво, ты всем доволен. Вроде бы. А потом хочется зайти к себе извне — и начинается цирк с конями в виде проброса портов, NAT, белых IP, динамического DNS, доменных имён и вечного ощущения, что ты где-то оставил дверь приоткрытой, куда вот-вот побежит весь интернет (кстати, если у тебя паранойя, это не значит что к весь интернет не побежит).

В этот момент на сцену выходит Pangolin.

По сути, это инструмент, который убирает из уравнения самую неприятную часть — открытые порты. Ты не лезешь в настройки роутера, не ковыряешь firewall и не думаешь: какой порт ты забыл закрыть; открыть; отключил ли ты доступ по SSH; что делать в случае компрометации твоих сервисов или «засвета» IP-адреса и так далее. Pangolin просто поднимает защищённый туннель наружу и даёт тебе доступ к сервисам так, будто они уже «снаружи», хотя физически всё остаётся у тебя дома.

И в этом его главный кайф — он снимает когнитивную нагрузку: не нужно держать в голове сетевую топологию; не нужно вспоминать, чем отличается DNAT от SNAT; не нужно переживать, что очередной сервис торчит в интернет без аутентификации или она слабая (а может не слабая, но ты не знаешь, а посоветоваться не с кем; а если есть с кем, то возможно он тебя интеллигентно послал, в смысле промолчал); что зря ты на роутере сэкономил или повелся на рекламу и так далее. С Pangolin ты описываешь, что именно хочешь открыть — вернее, какой сервис или сервер — и Pangolin делает это аккуратно и безопасно.

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

Фактически, Pangolin — замена Cloudflare Tunnels, только без Cloudflare. Это твоё личное приложение. Ведь суть self-hosting именно в этом, правда?

Но, конечно, за комфорт приходится платить. И тут каждый решает сам: либо ты тратишь время и нервы, вручную настраивая сеть и безопасность; тратишь время на изучение вопроса и набивание шишек (без этого никак); либо платишь за инструмент, который это уже сделал за тебя. Pangolin как раз про второй вариант.

Отмечу, что платишь ты не за само приложение — оно для физических лиц бесплатное. Речь про инфраструктуру. Да, можно развернуть приложение у себя на домашнем сервере, но с учётом потенциальных расходов - белый айпи, требований к качеству сети, электропитанию и так далее, не исключено, что аренда VPS будет стоить в итоге столько же, как если бы ты всё разворачивал у себя. Зато злоумышленник в случае компрометации сервера дальше VPS не пройдёт. Так что тут решение исключительно за вами.

В итоге это история не столько про технологии, сколько про удобство. Про тот момент, когда ты хочешь, чтобы всё просто работало, без танцев с бубном и вечных проверок «а точно ли я всё закрыл», открыты ли у меня только порты 80 и 443 (а в зависимости от твоего софта может быть и больше, например если речь о SIP). И если ты уже устал от этой сопутствующей нервотрёпки — скорее всего, ты поймёшь, зачем вообще существует Pangolin.

Особенности приложения

Если копнуть еще глубже, Pangolin интересен не тем, что «работает из коробки», а тем, как именно он это делает. Под капотом — понятный стек современных сетевых подходов, аккуратно собранный в одно целое.

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

Поверх этого используется шифрование — как правило, на базе TLS. То есть трафик не просто «идёт через какой-то канал», а защищён от перехвата. По сути, это похоже на то, как работают VPN или решения вроде Cloudflare Tunnel: у тебя есть доверенный канал, внутри которого уже живут твои HTTP, SSH или любые другие сервисы.

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

Конечно, есть нормальная система аутентификации. Вместо того чтобы надеяться, что «никто не найдёт мой порт» (когда он у тебя 2222 ), Pangolin делает ставку на контроль доступа: кто может подключаться, к чему именно и при каких условиях. Это популярный zero-trust подход.

Плюс ко всему, такие решения обычно завязаны на агентную модель. У тебя есть клиент (агент), который крутится рядом с сервисами, и есть управляющая часть, которая знает, как эти сервисы опубликовать. Благодаря этому можно централизованно управлять доступом и не настраивать каждый контейнер или сервер отдельно.

В итоге Pangolin — приложение, которое одновременно интегрирует обратный прокси Traefik, протокол WireGuard, CrowdSec, а также возможность интеграции с любым известным IdP и IAM-провайдером. И как вишенка на торте — удобный Geo-Blocking, что позволяет нам заблокировать сразу входящие соединения оттуда, откуда мы их не ждем (а это практически ото всюду, кроме страны проживания, ну и еще одной, наверно, может быть, ну ты понял, да?).

По отдельности про все эти приложения я уже неоднократно рассказывал как в статьях, так и в видео на канале. Но ценность Pangolin в том, что тебе не нужно собирать этот конструктор самому из Traefik, WireGuard, Crowdsec, Authelia/Authentik и ещё пары компонентов. Всё уже собрано и работает как единая система.

Цена развертывания сервиса

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

  1. Во-первых, тебе нужен сервер, который будет постоянно доступен из интернета. Это может быть VPS или любой внешний хост с белым IP. Именно туда Pangolin будет поднимать туннели, и именно эта точка станет «входом» в твой homelab. Без этого вся магия просто не сложится. В идеале — аренда VPS.

  2. Дальше — домен. Можно, конечно, жить и без него, но нормальная работа с HTTPS, удобные адреса сервисов и в целом адекватный UX начинаются именно с домена. Плюс тебе придётся настроить DNS так, чтобы он указывал на внешний сервер.

  3. Следующий момент — сертификаты. Pangolin работает через защищённые соединения, поэтому TLS здесь не опция, а необходимый элемент. Хорошая новость в том, что чаще всего это автоматизируется через Let’s Encrypt, и руками почти ничего делать не нужно — главное, чтобы DNS был настроен правильно.

  4. На стороне твоего домашнего сервера всё гораздо проще. Там достаточно запустить агент Pangolin, который установит исходящее соединение. И вот здесь ключевой плюс: никаких открытых портов, никаких изменений в роутере. Главное, чтобы сервер мог выходить в интернет.

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

  6. Конечно, базовая безопасность. Даже если Pangolin сам по себе закрывает много дыр, это не повод запускать всё с дефолтными настройками. Пароли, доступы, ограничения — всё это по-прежнему важно. Zero trust — это не только про инструмент, но и про то, как ты его используешь.

В итоге правильное развёртывание Pangolin — это не про «запустил контейнер, пользуйся и забыл про настройки». Это про связку из внешнего сервера, домена, нормального TLS и аккуратной, точечной настройки доступа. Если это всё есть, дальше он действительно начинает ощущаться как супер-приложение, которое снимает многие проблемы.

Как работает Pangolin

Основные шаги

Объединяйте удалённые сети через коннекторы сайтов. Лёгкие коннекторы Pangolin используют умную маршрутизацию и обход NAT, чтобы любая сеть была доступна из любого места. Создавайте ресурсы, представляющие сервисы или целые диапазоны сети, доступные для удалённого подключения. Ресурсы могут быть публичными или полностью приватными. Авторизованные пользователи могут подключаться к ресурсам через веб-браузер или клиент Pangolin на своём устройстве.

Ключевые концепции

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

Сервер Pangolin

Сервер Pangolin — центральный компонент координации вашей сети. Он хранит конфигурацию, управляет политиками доступа и координирует соединения между клиентами и сайтами.

Сайты (Sites)

Сайты подключают удалённые сети к серверу Pangolin через защищённые туннели.

Ресурсы (Resources)

Ресурсы — это приложения, хосты или диапазоны сети, доступные пользователям.

Клиенты (Clients)

Клиенты позволяют пользователям подключаться к ресурсам через защищённый туннель.

Удалённые узлы (Remote Nodes)

Удалённые узлы — это ваши серверы Pangolin с полной управляемостью и контролем над данными.

Архитектура системы Pangolin

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

Правило для доступа к WebGUI (порт 8006)

Control Plane

Control Plane — это мозг системы, управляющий всеми компонентами.

Gerbil

Gerbil отвечает за WireGuard-туннели.

Newt

Newt — лёгкий клиент для подключения удалённых узлов.

Traefik - обратный прокси

Маршрутизирует входящие запросы.

Badger

Отвечает за аутентификацию и контроль доступа.

Требования к установке и установка Pangolin

Необходимые условия

  • Linux-сервер с root-доступом и публичным IP
  • Домен
  • Email для SSL
  • Открытые порты: 80, 443, 51820, 21820

Процесс подготовки VPS

Базовая настройка безопасности VPS

После получения VPS первым шагом необходимо выполнить базовую настройку безопасности, чтобы минимизировать риски несанкционированного доступа. В первую очередь следует отказаться от работы под пользователем root и создать отдельного пользователя с правами sudo.

Работать под пользователем root небезопасно, поэтому сначала создадим нового пользователя и добавим его в группу sudo:

Terminal window
adduser youruser
usermod -aG sudo youruser

Проверим, что всё работает:

Terminal window
su - youruser
sudo whoami

Настройка SSH (смена порта и отключение root)

Открываем конфигурационный файл SSH:

sudo nano /etc/ssh/sshd_config

Находим и изменяем следующие параметры:

Port 2222 (ставить такой порт это большая ошибка)
PermitRootLogin no

Это:

  • изменит стандартный порт SSH (22 → любой свободный нестандартный порт )
  • полностью запретит вход под root

Отключение входа по паролю (крайне рекомендуется)

Для дополнительной защиты рекомендуется разрешить только вход по SSH-ключам:

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

Terminal window
PasswordAuthentication no

Настройка firewall (UFW)

Установим и включим UFW:

sudo apt update
sudo apt install -y ufw

Разрешим только необходимые порты для работы Pangolin:

sudo ufw allow номерпортадляssh,еслитыневключилдоступтолькопоключам/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 51820/udp
sudo ufw allow 21820/udp

Активируем firewall:

sudo ufw enable
sudo ufw status

Применение изменений SSH

После внесения изменений перезапускаем SSH-сервис:

sudo systemctl restart ssh

Обязательная проверка подключения

Перед тем как завершить текущую SSH-сессию, откройте новое подключение и убедитесь, что всё работает:

ssh youruser@your_ip -p номерпортадляssh,еслитыневключилдоступтолькопоключам

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

Настройка DNS

Базовые DNS-записи

Вам потребуется создать записи типа A (или AAAA для IPv6), указывающие на IP-адрес вашего VPS.

1. Создание wildcard-записи

Создайте wildcard-запись поддомена для вашего домена:

  • Тип: A
  • Имя: *
  • Значение: айпи адрес твоего впс
  • TTL: 300 (или по умолчанию)

Это позволит любому поддомену (например, app.example.com, api.example.com) указывать на ваш VPS.

2. Создание записи для корневого домена (необязательно)

Если вы планируете использовать корневой домен как ресурс:

  • Тип: A
  • Имя: @ (или оставить пустым)
  • Значение: айпи адрес твоего впс
  • TTL: 300 (или по умолчанию)

Эта запись нужна только в том случае, если вы хотите использовать example.com (а не только поддомены).

3. Ожидание распространения DNS

Изменения DNS могут распространяться от 5 минут до 48 часов по всему миру.

Процесс установки

Установка Pangolin с помощью официального скрипта

  1. Скачать установщик Это самая простая процедура. Да, можно все сделать самому, но в итоге это большой ручной труд с неясным результатом, и требующим большее погружение в проблему
  2. Подключитесь к серверу через SSH и выполните команду:
Terminal window
curl -fsSL https://static.pangolin.net/get-installer.sh | bash
  1. Запустить установщик

Выполните установку с root-привилегиями:

sudo ./installer

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

Настройка базовых параметров

  1. Установщик запросит ключевые настройки:
  • Edition: выберите Community Edition или Enterprise Edition
  • Base Domain: укажите корневой домен без поддоменов (например, example.com)
  • Dashboard Domain: нажмите Enter для значения по умолчанию pangolin.example.com или укажите свой домен
  • Let’s Encrypt Email: адрес для SSL и входа администратора
  • Tunneling: установка Gerbil для туннелей (по умолчанию: да). Можно работать без туннелей, как стандартный обратный прокси
  1. Настройка почты (опционально) Функционал электронной почты можно добавить позже. По умолчанию: Нет (рекомендуется при первичной установке) Если включено: укажите SMTP-сервер (host, port, username, password)

  2. Запуск установки Подтвердите запуск установки:

  • Установщик скачает Docker-образы (pangolin, gerbil, traefik)
  • Контейнеры будут запущены автоматически
  • Процесс занимает 2–3 минуты в зависимости от скорости интернета
  1. Установка CrowdSec (опционально) Установщик предложит добавить CrowdSec для дополнительной защиты:
  • По умолчанию: Нет (рекомендуется для начальной установки)
  • При включении: нужно будет управлять конфигурацией CrowdSec вручную

CrowdSec можно установить позже. Базовая установка уже обеспечивает достаточный уровень безопасности.

Настройка после установки

После успешной установки вы увидите сообщение:

Installation complete!

Для завершения первоначальной настройки перейдите по адресу:
`https://pangolin.твойдомен.com/auth/initial-setup`

  1. Доступ к панели управления

    Перейдите по URL, указанному в выводе установщика: https://pangolin.твойдомен.com/auth/initial-setup

    SSL-сертификат будет настроен автоматически. Первичная валидация может занять несколько минут, поэтому возможны предупреждения о безопасности в браузере.


  1. Создание учётной записи администратора

    Введите адрес электронной почты администратора Задайте надёжный пароль Подтвердите почту (если настроена)

    Используйте уникальный и сложный пароль — этот аккаунт имеет полный доступ к системе.


  1. Создание первой организации

    После входа: Укажите название и описание организации Нажмите «Create Organization»

Теперь вы готовы добавлять приложения и настраивать обратный прокси.

Более подробно как устанавливается это приложение у меня в видеоролике, и это тот случай, когда лучше один раз увидеть, чем сто раз прочитать.

Pangolin — самый простой (но не дешевый) способ открыть доступ к homelab
/posts/pangolin/
Author
Stilicho2011
Published at
2026-05-13
License
CC BY 4.0

Some information may be outdated