VPSРейтинг
Self-hosted23 августа 2026 · 18 мин

Pangolin на VPS: доступ к домашним сервисам без белого IP

Дома крутится Jellyfin, Home Assistant или NAS, но зайти к ним снаружи нельзя: белого IP нет, порты не пробрасываются. Самый дешёвый VPS решает это за полчаса — он становится вашей входной дверью, а домашняя машина сама тянется к нему изнутри.

Задача: попасть домой снаружи

Ситуация знакомая любому, кто держит что-то дома. На старом ноутбуке или мини-ПК работает медиасервер, умный дом и файловое хранилище. Дома всё открывается по адресу вроде 192.168.1.50:8096. А из кафе, с работы или с телефона в дороге — никак.

Классический ответ — «пробросить порт на роутере». Он всё чаще не работает, и причина в том, что публичных IPv4-адресов на всех не хватает. Провайдеры выдают абонентам не собственный адрес, а один общий на сотни квартир — эта схема называется CGNAT (Carrier-Grade NAT), а в разговоре — «серый IP». Ваш роутер получает адрес из внутренней сети провайдера, и пробрасывать на нём нечего: снаружи к этому адресу никто обратиться не может. У мобильных операторов так практически всегда.

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

Идея Pangolin в одном предложении

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

Pangolin делает проект Fossorial. К августу 2026 у репозитория около 22 400 звёзд на GitHub, актуальная версия — 1.21.1 от 30 июля 2026, коммиты идут почти каждый день. Западные обзоры последнего года пишут про него как про замену Cloudflare Tunnel, и для нашей темы это самый честный случай из возможных: без арендованного сервера Pangolin просто не имеет смысла — весь его смысл в том, что у сервера есть белый IP, а у вас нет.

Все команды, названия пунктов интерфейса и цифры ниже проверены на реально развёрнутой установке версии 1.21.1 с коннектором Newt 1.16.0.

Как это устроено

Схема состоит из двух половин. На VPS живёт сам Pangolin: панель управления, прокси и менеджер туннелей. На домашней машине — крошечная программа Newt (коннектор). Newt первым делом сам звонит на сервер, и дальше весь обмен идёт по уже открытому им каналу.

Путь запроса от посетителя до домашнего сервиса
браузер
  │  https://jellyfin.example.com
  ▼
VPS (белый IP)
  ├─ Traefik            принимает 443, выдаёт сертификат Let's Encrypt
  ├─ Pangolin           проверяет, пустить ли этого посетителя
  └─ Gerbil             держит WireGuard-туннели
        ▲
        │  туннель поднят изнутри дома, входящих портов дома нет
        ▼
домашняя машина
  └─ Newt  ──►  127.0.0.1:8096  (Jellyfin)

Под капотом — обычный WireGuard, но в пользовательском режиме: собирать модуль ядра на домашней машине не нужно, Newt поднимает сетевой стек внутри себя. Прокси на сервере — Traefik 3.7, сертификаты он получает от Let's Encrypt сам.

В интерфейсе вы встретите три слова. Их стоит развести сразу, иначе всё остальное путается:

ТерминЧто это на самом деле
Site (сайт)Одна сеть, подключённая к Pangolin: ваш дом, дача, офис. На каждую такую сеть ставится один Newt. Слово неудачное — к веб-сайтам отношения не имеет.
Resource (ресурс)Один сервис внутри этой сети, который вы открываете: Jellyfin, Home Assistant, роутер. Публичный ресурс открывается в браузере по адресу, приватный — только с клиентом Pangolin.
Target (цель)Куда именно Newt должен постучаться внутри домашней сети: адрес и порт, вроде 127.0.0.1:8096.

Важная деталь про безопасность

Сам факт, что туннель поднят, ничего не открывает. Пока вы не создали ресурс, Newt не пропускает ни одного пакета в домашнюю сеть. Это принципиальное отличие от VPN, где подключившийся сразу видит всю подсеть. Второй бонус: снаружи виден только адрес VPS — ваш домашний IP не попадает ни в DNS, ни в заголовки, ни к сканерам.

С чем сравнивать и когда Pangolin не нужен

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

РешениеСильная сторонаГде ломается
Cloudflare TunnelБесплатно, сервер не нужен, защита от DDoS в комплектеЛимит 100 МБ на загружаемый файл, правила против раздачи видео, весь трафик расшифровывается у Cloudflare, домен обязан жить на их DNS
Tailscale / HeadscaleПрямые соединения между устройствами, минимум трафика через серверКлиент нужен на каждом устройстве — поделиться ссылкой с чужим ноутбуком или телевизором не выйдет
WireGuard + Nginx рукамиМаксимальный контроль, минимальный расход памятиКаждый новый сервис — правка конфига, отдельный certbot, авторизацию делать самому
PangolinНовый сервис добавляется за минуту в панели, сертификат и страница входа появляются сами, лимитов на файлы нетНужен свой VPS и домен, весь трафик идёт через сервер, сервер надо обновлять и охранять самому

Когда Pangolin ставить не надо

  • Всё уже и так на VPS. Если сервисы живут на том же сервере с белым IP, туннель не нужен — берите Traefik или Caddy.
  • Нужен доступ только себе, с двух своих устройств. Обычного WireGuard хватит, и он проще.
  • Один-единственный сервис и он не про файлы. Cloudflare Tunnel справится бесплатно.

Что понадобится

ЧтоПодробности
VPS1–2 vCPU, 2 ГБ памяти, 20 ГБ диска, Ubuntu 22.04 или 24.04, белый IPv4. На 1 ГБ памяти тоже работает, но добавьте swap.
ДоменЛюбой, с доступом к настройкам DNS. Нужна возможность создать wildcard-запись *.
ПортыНа VPS открыть 80/TCP, 443/TCP, 51820/UDP и 21820/UDP. Дома — ничего.
Домашняя машинаЛюбая, которая работает круглосуточно: мини-ПК, NAS, Raspberry Pi. Newt есть под Linux, Windows и macOS, под x86 и ARM.

Про «2 ГБ» стоит пояснить, потому что цифра кажется завышенной. Мы замерили на живой установке в простое:

docker stats --no-stream, свежая установка без нагрузки
NAME       MEM USAGE
pangolin   252 МБ
traefik    21 МБ
gerbil     4,6 МБ

То есть в покое стек занимает меньше 300 МБ — влезет и в гигабайт. Два гигабайта рекомендуют с запасом на пики при обновлении и на всплески трафика. Диска образы занимают около 1,5 ГБ (сам Pangolin — 1,21 ГБ, Traefik — 194 МБ, Gerbil — 39 МБ), плюс сам Docker; на 10 ГБ будет тесно, 20 ГБ — спокойно.

А вот на что смотреть действительно внимательно — это канал и лимит трафика. Через VPS пойдёт всё: и страницы Home Assistant, и фильмы из Jellyfin. Скорость вашего домашнего интернета тут не поможет — потолком станет порт сервера.

Шаг 1. DNS: одна запись на все будущие сервисы

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

ТипИмяЗначение
A*IP вашего VPS

Звёздочка означает «любой поддомен». Благодаря ей и панель pangolin.example.com, и все будущие jellyfin.example.com, ha.example.com заработают сразу — возвращаться в панель регистратора больше не придётся. Отдельная запись для самого example.com нужна, только если вы хотите отдавать что-то по «голому» домену без поддомена.

Через несколько минут проверьте, что запись видна снаружи. Команда спрашивает напрямую у публичного DNS Google, минуя кэш вашего провайдера:

на любой машине с dig; в Ubuntu пакет dnsutils
dig +short pangolin.example.com @8.8.8.8

В ответ должен прийти IP вашего сервера. Пустой ответ — записи ещё не разошлись, подождите. Обычно это минуты, но регламент допускает до 48 часов.

Если регистратор не умеет wildcard — не беда. Создавайте обычные A-записи вручную: pangolin для панели и по одной на каждый сервис. Работать будет так же, просто добавление нового сервиса станет двухшаговым.

Шаг 2. Подготовка сервера

Заходим на VPS по SSH и ставим Docker — Pangolin целиком живёт в контейнерах. Официальный скрипт сам определит версию Ubuntu и подключит нужный репозиторий:

на VPS
sudo apt update && sudo apt upgrade -y
curl -fsSL https://get.docker.com | sudo sh

Проверить, что всё встало: sudo docker compose version должна ответить номером версии.

Теперь файрвол. Открываем ровно четыре порта плюс SSH:

ufw: сначала SSH, иначе можно потерять доступ к серверу
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 51820/udp
sudo ufw allow 21820/udp
sudo ufw enable
sudo ufw status

На ufw enable система переспросит, что соединение по SSH может прерваться — отвечайте y: правило для SSH мы добавили первой строкой.

Зачем каждый из них: 80— по нему Let's Encrypt проверяет, что домен ваш, без него сертификата не будет; 443 — весь пользовательский трафик; 51820/UDP — туннели от домашних машин; 21820/UDP — туннели от клиентских устройств, если позже захотите приватные ресурсы.

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

И маленькая честность про ufw: Docker публикует порты в обход его правил, так что эти четыре были бы открыты и без него. Правила всё равно нужны — они закрывают всё остальное, что вы могли случайно запустить на сервере.

Шаг 3. Установка Pangolin

У проекта есть официальный установщик — небольшая программа, которая задаёт несколько вопросов и собирает готовый docker-compose.yml. Первая команда скачивает её в текущий каталог, вторая запускает:

на VPS, из домашнего каталога
cd ~
curl -fsSL https://static.pangolin.net/get-installer.sh | bash
sudo ./installer

Установщик просит, чтобы на портах 80 и 443 ничего не слушало. На чистом сервере так и есть; если вы раньше ставили туда Nginx или Apache — остановите их перед запуском.

Дальше — диалог: вопросы задаются по одному. В текстовых полях просто печатаете и жмёте Enter, в вопросах «да/нет» — клавиши y и n (подсказка с вариантами всё время висит внизу экрана). Вот все вопросы версии 1.21.1 по порядку и что отвечать:

ВопросОтвет
Enter the installation directory (default: /opt/pangolin)Enter — примет /opt/pangolin и предложит создать каталог, отвечайте y
Do you want to install the Enterprise version of Pangolin?n — Community Edition, всё из этой статьи в ней есть
Do you want to use PostgreSQL (not recommended for most users)?n — для одного дома хватит встроенной SQLite, и сама программа помечает этот вариант как «не рекомендуется большинству»
Enter your base domain (no subdomain e.g. example.com)example.com — именно корневой домен, без поддомена
Enter the domain for the Pangolin dashboardEnter — предложит pangolin.example.com
Enter email for Let's Encrypt certificatesВаша рабочая почта. Туда придут письма об истекающих сертификатах
Do you want to use Gerbil to allow tunneled connectionsyобязательно. Без Gerbil не будет туннелей, а значит и всего сценария
Enable email functionality (SMTP)n — почту можно подключить потом, для старта не нужна
Is your server IPv6 capable?y, если у сервера есть IPv6-адрес, иначе n
Do you want to download the MaxMind GeoLite2 Country and ASN databases?n — базы нужны только для блокировок по странам, добавляются позже
Would you like to install and start the containers?y

Скачивание образов занимает 2–3 минуты (сам Pangolin весит 1,2 ГБ, на медленном канале дольше). После этого проверяем, что все три контейнера поднялись:

все команды Pangolin выполняются из каталога установки
cd /opt/pangolin
sudo docker compose ps

Должны быть pangolin (со статусом healthy), gerbil и traefik. Рядом лежит каталог config — в нём настройки, база и сертификаты. Это единственное, что нужно бэкапить.

Шаг 4. Первый вход

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

из /opt/pangolin
sudo docker compose logs pangolin | grep -A 2 'SETUP TOKEN'
ожидаемый вывод
pangolin  | === SETUP TOKEN GENERATED ===
pangolin  | Token: 2ba5d63wkc64w3ihkmmaj1bdjbpetv7o
pangolin  | Use this token on the initial setup page

Открываем в браузере https://pangolin.example.com/auth/initial-setup, вставляем код, задаём почту и пароль администратора. Если браузер ругается на сертификат — не пугайтесь и подождите пару минут: Traefik запрашивает сертификат в фоне, первый выпуск занимает до минуты-двух. Код одноразовый и после создания администратора перестаёт работать.

Дальше Pangolin попросит создать организацию — это просто контейнер для ваших сайтов и ресурсов. Назовите как угодно, например Home.

Интерфейс переключается на русский — иконка профиля в правом верхнем углу, там же где выбор темы, пункт «Русский». Перевод местами машинный: например, «Newt Site» превратилось в «Новый сайт», а «Credentials» — в «Полномочия». Если что-то читается странно, сверьтесь с английскими названиями из этой статьи.

Шаг 5. Подключаем домашнюю машину

В панели идём в раздел Sites и нажимаем Add Site. Выбираем тип Newt Site (Recommended), придумываем имя — например Home — и создаём. Соседний вариант Local Site нужен для другого случая: когда сервис крутится на самом VPS, рядом с Pangolin, и туннель ему не нужен. Pangolin сразу покажет экран с готовой командой: в ней уже подставлены идентификатор сайта, секрет и адрес вашего сервера. Скопируйте её, она понадобится через минуту.

Теперь переходим на домашнюю машину. Ставим Newt — официальный скрипт сам определит архитектуру и положит программу в /usr/local/bin/newt:

на домашней машине
curl -fsSL https://static.pangolin.net/get-newt.sh | bash
newt --version

Можно сразу вставить скопированную из панели команду и убедиться, что всё работает. В выводе должно появиться Tunnel connection to server established successfully!, а сайт в панели — стать зелёным. После этого останавливаем её по Ctrl+C и делаем так, чтобы Newt запускался сам.

Ключи кладём в отдельный файл, чтобы они не светились в списке процессов:

на домашней машине
sudo install -d -m 0755 /etc/newt
sudo nano /etc/newt/newt.env
sudo chmod 600 /etc/newt/newt.env
/etc/newt/newt.env — значения взять из панели Pangolin
NEWT_ID=31frd0uzbjvp721
NEWT_SECRET=h51mmlknrvrwv8s4r1i210azhumt6isgbpyavxodibx1k2d6
PANGOLIN_ENDPOINT=https://pangolin.example.com

Теперь служба systemd. Она поднимет Newt при загрузке и перезапустит, если он упадёт:

sudo nano /etc/systemd/system/newt.service
[Unit]
Description=Newt
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=root
Group=root
EnvironmentFile=/etc/newt/newt.env
ExecStart=/usr/local/bin/newt
Restart=always
RestartSec=2
UMask=0077
PrivateTmp=true

[Install]
WantedBy=multi-user.target
включаем и проверяем
sudo systemctl daemon-reload
sudo systemctl enable --now newt
sudo systemctl status newt
sudo journalctl -u newt -f

В журнале ищем те же строки: Websocket connected и Tunnel connection to server established successfully! Обратите внимание, что команда ExecStart идёт без единого аргумента — Newt читает NEWT_ID, NEWT_SECRET и PANGOLIN_ENDPOINT из файла окружения сам. Мы проверили и приоритеты: переменные окружения перекрывают то, что Newt сохранил в свой файл настроек, так что при смене ключей достаточно поправить newt.env и выполнить sudo systemctl restart newt.

А если дома всё в Docker?

Newt можно запустить и контейнером (образ fosrl/newt), но тогда придётся думать о сетях: из контейнера не видно 127.0.0.1 хоста, а соседние контейнеры видно только по имени и только в общей docker-сети. Установка бинарником через systemd избавляет от этой возни: адреса вроде 127.0.0.1:8096 и 192.168.1.50:80 работают сразу и одинаково.

Шаг 6. Первый сервис наружу

Возьмём для примера Jellyfin, который слушает дома на порту 8096. В панели: Resources Add Resource → публичный ресурс типа HTTPS Resource. Заполняем:

  • NameJellyfin, это просто подпись в списке
  • Subdomainjellyfin, Domain example.com. Получится адрес jellyfin.example.com

Создаём и переходим к разделу Targets — это ответ на вопрос «куда стучаться внутри дома». Добавляем одну цель: SiteHome, Methodhttp, Host127.0.0.1, Port8096. Кнопка Add Target.

Через несколько секунд в журнале Newt появится строка вида Started tcp proxy to 127.0.0.1:8096, а адрес https://jellyfin.example.com начнёт открываться. Method здесь — это протокол не наружу, а внутрь: у подавляющего большинства домашних сервисов это http, потому что своего сертификата у них нет.

Что вы увидите при первом открытии

Не Jellyfin, а страницу входа Pangolin — и это правильно. У нового HTTPS-ресурса по умолчанию включён вход через учётную запись Pangolin: мы проверили, запрос без авторизации разворачивают на страницу входа ещё до того, как он дойдёт до дома. Войдите своей учёткой администратора — дальше откроется сам сервис.

Дальше всё повторяется: каждый новый сервис — это ещё один ресурс и ещё один target, минута работы. Кроме HTTPS Pangolin умеет отдавать и другие типы: SSH, RDP и VNC прямо в браузере — терминал или рабочий стол открываются вкладкой, ничего ставить на устройство не нужно, — а также сырые TCP и UDP для того, что вообще не про веб. У последних есть нюанс: они занимают порт на самом VPS, и этот порт придётся отдельно открыть в ufw и в панели хостера.

Кого пускать: варианты входа

Всё это настраивается в самом ресурсе. Выбирать нужно по тому, кто будет заходить:

  • Учётные записи Pangolin — включено по умолчанию. Заводите пользователей и раздаёте им доступ к конкретным ресурсам. Подходит для семьи.
  • PIN или пароль на ресурс — самый быстрый способ пустить человека без заведения учётки. Годится для того, чтобы показать что-то знакомому.
  • Код на почту — вы разрешаете список адресов (можно маской вида *@company.ru), человек вводит свою почту и получает одноразовый код. Требует настроенного SMTP.
  • Одноразовые ссылки — ссылка со сроком жизни, после которого доступ пропадает. Удобно, чтобы отдать файл или показать панель на час.
  • Внешний вход по OIDC — если у вас уже есть свой сервер входа, вроде Authelia, Keycloak или Google. Мы отдельно проверили: в бесплатной Community Edition создание OIDC-провайдера не заблокировано.
  • Совсем без входа — вход можно отключить, если сервис публичный по смыслу: личный блог, галерея для друзей. Для панелей управления так делать не стоит.

Поверх этого работают правила: разрешить или запретить по IP, по стране, по пути в адресе. Блокировка по странам требует тех самых баз MaxMind, от которых мы отказались при установке, — их можно докачать позже, перезапустив установщик.

Что бесплатно, а что нет

Pangolin выпускают в двух редакциях. Community Edition — то, что лежит на GitHub под лицензией AGPL-3; именно её ставит установщик, если ответить n на вопрос про Enterprise. Ограничений на количество сайтов, ресурсов и пользователей в ней нет, и всё описанное в этой статье работает в ней целиком.

Enterprise Edition — отдельный docker-образ (тег с приставкой ee-) плюс лицензионный ключ. Он бесплатен для личного использования и для компаний с годовой выручкой меньше 100 000 $, но ключ нужно получить в личном кабинете на сайте проекта. Отдельно существует облачный Pangolin, где сервер держат сами разработчики, — но это ровно то, от чего мы уходим, арендуя свой VPS.

Практический вывод простой: для дома берите Community и не думайте о лицензиях. Часть корпоративных пунктов при этом видна в интерфейсе, но не работает. Если это раздражает, допишите одну строку в уже существующий блок flags файла /opt/pangolin/config/config.yml — и они исчезнут:

/opt/pangolin/config/config.yml
flags:
    disable_enterprise_features: true
    require_email_verification: false
    disable_signup_without_invite: true
    disable_user_create_org: false
    allow_raw_resources: true
применить
cd /opt/pangolin && sudo docker compose restart pangolin

Три вещи, которые стоит сделать сразу

Бэкап каталога config

Вся установка — это /opt/pangolin/config: настройки, база SQLite, сертификаты, ключи туннелей. Потеряете каталог — придётся заново создавать сайты и ресурсы и прописывать новые ключи в Newt на всех машинах. Простейший вариант — архив перед каждым обновлением:

на VPS
sudo tar czf ~/pangolin-config-$(date +%F).tar.gz -C /opt/pangolin config

Архив лучше сразу увозить с сервера — как это автоматизировать, разобрано в статье про бэкапы через restic и rclone.

Отключить отправку статистики

По умолчанию Pangolin шлёт разработчикам обезличенную статистику: количество сайтов, ресурсов и пользователей, версия, объём трафика. Личных данных там нет, но если не хотите — правится одной строкой в /opt/pangolin/config/config.yml:

/opt/pangolin/config/config.yml — было true
app:
    dashboard_url: "https://pangolin.example.com"
    log_level: "info"
    telemetry:
        anonymous_usage: false
применить
cd /opt/pangolin && sudo docker compose restart pangolin

Что получилось, видно в логе: вместо предложения помочь проекту появится строка Analytics usage statistics collection is disabled. Перезапуск занимает секунд десять, туннели после него поднимаются сами.

Знать, как обновляться

Обновление ручное: правите номера версий в docker-compose.yml и перезапускаете. Перед этим — обязательно бэкап, потому что миграции базы необратимы и откатиться на старую версию просто так не выйдет.

из /opt/pangolin
sudo tar czf ~/pangolin-config-$(date +%F).tar.gz -C /opt/pangolin config
sudo docker compose down
sudo nano docker-compose.yml        # поднять теги fosrl/pangolin и fosrl/gerbil
sudo docker compose pull
sudo docker compose up -d
sudo docker compose logs -f pangolin

Останавливать стек целиком через down здесь не перестраховка. Контейнер Traefik живёт в сетевом пространстве Gerbil, и мы проверили, что бывает, если пересоздать только Gerbil: Traefik остаётся в статусе Up, но сайт перестаёт отвечать совсем. Лечится пересозданием Traefik, но проще сразу поднимать стек целиком.

Актуальные номера — на странице релизов проекта. Плагин авторизации Badger живёт отдельно, его версия задаётся в config/traefik/traefik_config.yml — если в заметках к релизу просят поднять и её, правьте там же. Перескакивать сразу через несколько минорных версий разработчики не советуют: обновляйтесь по порядку. Newt на домашних машинах обновляется отдельно — тем же скриптом установки, после чего sudo systemctl restart newt.

Частые проблемы

Браузер ругается на сертификат, и это не проходит

Значит Let's Encrypt не выдал сертификат. Смотрим причину в логах прокси: sudo docker compose logs traefik | grep -i acme. Три частые причины: закрытый порт 80 (проверку домена делают именно по нему), DNS-запись ещё не разошлась или ведёт на другой IP, либо вы упёрлись в лимит Let's Encrypt — их 50 сертификатов на домен в неделю тратятся быстро, если много раз переустанавливать. Проверьте DNS командой dig +short pangolin.example.com @8.8.8.8.

Панель отвечает «404 page not found»

Это ответ самого Traefik: он не нашёл ни одного маршрута для того имени, которое вы открыли. Почти всегда — несовпадение домена. Мы наступили на это при проверке: домен панели прописан в двух файлах, в config/config.yml и в config/traefik/dynamic_config.yml. Если меняете адрес панели руками, правьте оба, а потом sudo docker compose restart traefik. Проще всего вообще не менять домен после установки.

Сайт в панели остаётся серым, туннель не поднимается

Смотрим журнал на домашней машине: sudo journalctl -u newt -n 50. Если нет даже строки Websocket connected — Newt не достучался до сервера: проверьте адрес в PANGOLIN_ENDPOINT (он пишется целиком, вместе с https://) и то, что панель вообще открывается. Если websocket есть, а туннеля нет — не проходит UDP на 51820: почти всегда порт забыли открыть в панели хостера. Команда newt --show-config покажет, какие значения Newt реально использует и откуда он их взял.

Ресурс открывается, но вместо сервиса — страница входа

Так и задумано: у нового HTTPS-ресурса вход включён по умолчанию. Либо войдите своей учётной записью, либо выключите проверку в настройках ресурса, либо поставьте PIN. Отдельная тонкость: мобильные приложения сервисов (Jellyfin, Immich, Home Assistant) страницу входа в браузере пройти не могут — для них либо выключают проверку на ресурсе, оставляя защиту самому сервису, либо используют токен доступа, который Pangolin умеет принимать заголовком.

Страницы открываются, но «тяжёлые» запросы подвисают

Классический признак проблемы с MTU — размером пакета. Newt по умолчанию берёт осторожные 1280 байт, и обычно этого хватает, но на некоторых мобильных и PPPoE-каналах нужно ещё меньше. Добавьте в /etc/newt/newt.env строку MTU=1200 и перезапустите службу — имя переменной именно такое, мы проверили. Если не помогло, дело не в MTU, а в скорости канала VPS.

Коротко: порядок действий

  1. VPS от 2 ГБ памяти с белым IP, домен со своей DNS-панелью
  2. A-запись * на IP сервера, проверить через dig ... @8.8.8.8
  3. На VPS: Docker из get.docker.com, ufw с портами 80, 443, 51820/udp, 21820/udp
  4. Те же порты открыть в сетевом экране хостера, если он есть
  5. curl -fsSL https://static.pangolin.net/get-installer.sh | bash и sudo ./installer
  6. Достать setup token из логов, создать администратора и организацию
  7. Sites → Add Site → Newt Site, скопировать команду
  8. Дома: установить Newt, вынести ключи в /etc/newt/newt.env, поднять службу systemd
  9. Resources → Add Resource → HTTPS, добавить target на адрес и порт сервиса
  10. Настроить вход, отключить телеметрию, положить config в бэкап

Если не подошло: sudo docker compose down в /opt/pangolin останавливает всё, а каталог config остаётся на месте — можно вернуться позже. Удалить совсем — стереть каталог /opt/pangolin целиком.

Pangolin нужен сервер с белым IP — и больше почти ничего. Подойдёт самый простой тариф

Дешёвые VPS 2026 →