Мне никогда не нравились тарифы и вообще массовые VPN‑сервисы. Подключения периодически отваливаются, известные адреса быстро распознаются, а сайты начинают выплёвывать капчи и сбрасывать сессии.
Один выходной IP используют тысячи людей. Достаточно одному соседу начудить, чтобы антифрод‑системы вроде Scamalytics подняли Fraud Score и испортили репутацию адреса для всех остальных.
Поэтому уже несколько лет я арендую собственные VPS. Хороший сервер на год можно найти немногим дороже тысячи рублей (если знать где искать). Здесь хотя бы понятно, кто использует адрес и чем на нём занимается.
Настроить один профиль на такой машине несложно. Но потом появляется компьютер, доступ просят родственники и друзья, кому‑то требуется работа с белыми списками, а старые конфиги начинают плодиться.
В какой‑то момент я понял, что уже не настраиваю VPS. Я веду полноценную бухгалтерию подключений, только без зарплаты и отпускных.
Поэтому мне захотелось собрать небольшую панель, которая работает на собственном сервере, не требует подписки и не заставляет открывать терминал каждый раз, когда кому‑то понадобилось добавить телефон.
Так появился Simple Bridge Panel, или SBP (не то, о чём вы подумали). Альтернативная расшифровка Suspiciously Big Pizza тоже считается официальной. У нормального проекта должны быть стандарты.
Simple здесь только для пользователя
С панелями я до этого не работал вообще. Это буквально первая панель в моей жизни. Поэтому слово Simple в названии не означает, что разработка была простой. Оно означает, что простой должна быть жизнь пользователя.
Пользователь нажимает одну кнопку. Где‑то под этой кнопкой проверяются зависимости, права, занятые порты, состояние Docker, принадлежность файлов, возможность отката и ещё пачка вещей, о существовании которых нормальный человек вообще не должен задумываться.
Пользователь добавляет устройство. Где‑то внутри обновляется база, создаётся профиль, применяется runtime конфигурация и проверяется фактическое состояние подключения.
Если интерфейс выглядит просто, это не значит, что внутри всё просто. Это значит, что кто‑то уже пострадал вместо пользователя.
Вот это и есть мой смысл слова Simple.
Что в итоге получилось
Сразу оговорюсь: новых протоколов я не изобретал и универсальную замену существующим панелям не строил. Задача была приземлённее: собрать управление уже существующими решениями в одном месте, где всё нужное устанавливается отдельной кнопкой.
SBP устанавливается на свежий сервер с Ubuntu 24.04 (на других ОС не проверялось) и собирает управление подключениями в одном интерфейсе. Можно поставить Xray или AmneziaWG, создать группы, добавить устройства, назначить срок доступа, взять готовую ссылку или QR‑код и посмотреть примерный трафик за текущий месяц.

Скриншот получился подозрительно длинным не случайно. Как пользователь, я хотел видеть всё важное на одном экране.
Наверху находятся группы и устройства. Ниже состояние сервера, компоненты, служебные профили и управление самой панелью.
У каждой группы есть собственный срок действия, набор устройств и общие маршрутизирующие интеграции. Когда срок заканчивается, панель приводит реальные подключения к заданному состоянию.
Не нужно вспоминать, какие контейнеры, конфиги и таблицы следует проверить вручную. Панель сама разгребает этот зоопарк.
Какие подключения поддерживаются
Сейчас SBP умеет готовить три основных варианта подключения.
Xray TCP
Это VLESS поверх TCP с REALITY и XTLS Vision на порту 443. Долгое время именно этот вариант был у меня самым быстрым. Скорость получалась отличной, но в моей сети соединение могло проработать около получаса, после чего начинались приключения.
При этом в нормальных условиях Xray TCP остаётся очень быстрым и понятным вариантом. Профиль можно сразу импортировать в v2rayN или v2rayNG.
С версиями там, правда, отдельная чехарда. Однажды я решил поставить всё самое новое, после чего v2rayN начал строчить ошибки, а я потратил три дня на выяснение отношений между клиентом, ядром и конфигурацией. С тех пор слово Latest не вызывает у меня прилива энтузиазма.
Поэтому в SBP зафиксирован Xray 26.3.27, а рекомендуемыми клиентами указаны проверенные вместе с ним v2rayN 7.20.4 и v2rayNG 2.2.6. Новее не всегда означает лучше. Обновиться я всегда успею, когда станет понятно, что новая связка действительно работает, а не просто красиво лежит на GitHub.
Преимущества здесь очевидны: порт 443, REALITY, Vision и высокая скорость. Главный недостаток тоже очевиден: транспорт работает поверх TCP, поэтому на нестабильной сети повторные передачи и потери могут заметно влиять на соединение.
Xray XHTTP
Когда обычный Xray начал вести себя нестабильно, я прикрутил XHTTP. Полное название выглядит как Xray VLESS REALITY XHTTP. Ещё пара технологий, и можно официально регистрировать отдельную сексуальную ориентацию.
XHTTP работает в отдельном контейнере, использует собственный порт и никак не смешивается с обычным Xray TCP. Можно установить оба варианта одновременно и спокойно их сравнивать.
Тесты я проводил на одном сервере, примерно в одно время через Cloudflare. XHTTP выдавал почти 200 Мбит, тогда как AmneziaWG на том же соединении останавливался примерно на 120 Мбит.

speed.cloudflare.com Результат получился достаточно наглядным. Скриншот подписывать даже не нужно было.
120 и 200 Мбит не являются паспортными характеристиками протоколов. Это мои результаты на одном VPS, одном клиенте и конкретном интернет‑подключении.
Иногда тест XHTTP не добивал прогон до конца. Очень хочется ткнуть пальцем в TCP и объявить расследование завершённым, но одной серии измерений для этого маловато. Поэтому пока формулировка простая: скорость отличная, а стабильность продолжаю дегустировать.
У XHTTP есть и обратная сторона. Он сложнее обычного TCP варианта, не использует Vision и сильнее зависит от совместимости клиента.
AmneziaWG
AmneziaWG работает через UDP и создаёт полноценный сетевой туннель. В моём случае он стабильно выпускает от 100 до 120 Мбит. Рекордов не ставит, но работает предсказуемо и не пытается внезапно превратить просмотр видео в презентацию PowerPoint.
Профиль можно сразу импортировать в AmneziaVPN. Также SBP умеет выдавать обычный конфигурационный файл.
Главное преимущество AmneziaWG заключается в стабильности и UDP‑транспорте. Главный недостаток заключается ровно там же. Некоторые сети UDP не любят, фильтруют или режут.
На сервере SBP используется amneziawg-go внутри Docker, а не модуль ядра. Поэтому сравнивать результат с лабораторными тестами обычного WireGuard было бы странно.
Ещё немного сетевого зоопарка
Помимо обычных подключений, SBP умеет создавать дополнительные маршруты на базе Whitelist Bypass авторства kulikov0. У меня такой вариант используется через мобильную сеть и вырабатывает до 50 Мбит. Не сахар, конечно, но когда обычные способы перестают работать, внезапно начинаешь очень уважать и эти пятьдесят.
В итоге получается такая перчатка бесконечности, закрывающая все потребности.
Xray TCP нужен для одного сценария. XHTTP закрывает другой. AmneziaWG даёт стабильный UDP‑туннель. Дополнительные маршруты помогают там, где обычное подключение не подходит.
Смысл панели как раз в том, чтобы не собирать всё это вручную каждый раз.
Самое сложное находится не в интерфейсе
Нарисовать кнопки оказалось не самой страшной частью.
Намного интереснее было решить, как веб‑интерфейс сможет управлять systemd, Docker и сетевыми настройками, не работая целиком с правами root.
Я разделил приложение на две части. Обычная панель работает без привилегий. Отдельный локальный агент выполняет только заранее разрешённые операции. Они общаются через локальный Unix‑сокет.
Панель не может отправить агенту произвольную команду оболочки. Каждый вызов описан заранее и проверяет входные данные.
Для любителей залезть под капот
Состояние хранится в SQLite.
Xray TCP, XHTTP и AmneziaWG используют отдельные идентификаторы компонентов, контейнеры, каталоги, порты и пространства учёта трафика.
Обычное изменение устройства не должно перезапускать общий контейнер. Xray получает изменения через runtime API. Для AmneziaWG новая конфигурация применяется через awg syncconf.
Панель различает собственные и найденные на сервере компоненты. Чужой контейнер не становится собственностью SBP только потому, что у него похожее имя.
Удаление группы чистит устройства, профили, трафик и связанные маршрутизирующие ресурсы.
Обновления без археологических раскопок
Отдельный сорт удовольствия представляет обновление приложения, которое имеет права управлять половиной сервера. Просто заменить бинарник можно за пять минут. Сделать так, чтобы при ошибке всё вернулось обратно, временные файлы исчезли, а сервер не превратился в братскую могилу старых версий, уже значительно веселее.
Перед установкой SBP проверяет размер файла и SHA-256. Новая версия проходит проверку работоспособности. Если проверка не пройдена, панель возвращает предыдущую версию.
Временные файлы и данные для отката удаляются после успешной проверки. Постоянное логирование Docker для управляемых контейнеров отключено. Исторический архив трафика не ведётся. В базе остаются данные только за текущий календарный месяц по UTC.
Панель не должна годами откладывать мусор в отдельную папку с философией «вдруг когда‑нибудь пригодится».
Почему только свежий сервер
SBP 1.x рассчитан на свежую Ubuntu 24.04 с архитектурой amd64. Это сознательное ограничение. Автоматически разбирать неизвестный сервер, на котором уже несколько лет живут Docker, собственные правила sysctl, занятые порты и чужие контейнеры, слишком рискованно.
Если панель находит внешний компонент, она не присваивает его себе молча. Лучше честно поддерживать один понятный сценарий, чем пообещать совместимость со всем Linux и однажды снести человеку что‑то важное.
Установка одной командой
curl -fsSL https://raw.githubusercontent.com/silenceremember/sbp-panel/main/install.sh | sudo bash
Установщик предложит стабильный или предварительный релиз и попросит задать пароль администратора. После установки панель открывается по адресу:
https://IP_СЕРВЕРА:9443
По умолчанию используется самоподписанный сертификат. При первом открытии браузер покажет предупреждение.
Кому это вообще нужно
SBP рассчитан на человека, который управляет собственным сервером и хочет выдавать подключения семье, друзьям или небольшой команде.
Здесь один администратор. Нет встроенного биллинга, нескольких административных ролей и поддержки произвольных дистрибутивов Linux.
На момент публикации проект дошёл до стабильной версии 1.2.0. Исходный код опубликован под лицензией Apache 2.0.
GitHub проекта: https://github.com/silenceremember/sbp‑panel
Больше всего мне сейчас интересны результаты установки на свежих VPS. Какой хостинг использовался, хватило ли ресурсов, возникли ли проблемы, где интерфейс оказался непонятным и что пришлось делать вручную.
Только не прикладывайте IP‑адреса, пароли, ключи и реальные конфигурации клиентов. Позаботьтесь о своей безопасности.
Если вы управляете подключениями для семьи, друзей или небольшой команды, расскажите в комментариях, как это устроено у вас. AmneziaVPN, скрипты, таблицы, готовые панели или священный файл с конфигами?

Комментарии (5)

ZhenyaRUS39
25.08.2026 14:12Проясните, пожалуйста, он ставится на нулевую vds и из него уже ставим Amnezia?
Или можно на уже готовую amnezia установить рядом и работать будет?

habrasilence Автор
25.08.2026 14:12Рекомендую ставить SBP на чистый. Существующую Amnezia панель не импортирует и не берёт под управление. Её контейнеры будут определены как внешние, поэтому установка соответствующих компонентов SBP будет заблокирована.
Pre-release SBP сейчас не рекомендую из-за проблемы официального клиента AmneziaVPN под Windows. В стабильной SBP1.3.3используется AmneziaWG 2.0 с клиентом AmneziaVPN4.8.21.0. В pre-release уже есть AmneziaWG 3.1, но с последней версией официального Windows-клиента она пока нормально не работает, а поддержка 2.0 там тоже сломана. Поэтому временно остаёмся на связке1.3.3 + AmneziaVPN 4.8.21.0.
К слову, если у вас всё работает с SBP и текущая версия устраивает, обновляться только ради "чего-то нового" необязательно. Перед обновлением лучше посмотреть changelog. Я сознательно не тащу в панель бесконечный слой legacy-совместимости, чтобы проект оставался небольшим и понятным.
Хм, у меня, кстати, созрела идея: добавить перенос пользователей и групп с одного чистого сервера на другой, если с установкой или обновлением что-то пошло не так. Но это уже довольно большая фича. Ну что ж, будет чем заняться)
Sleuthhound
А чем Вам не угодил например 3x-ui ? В последней версии там завезли AmneziaWG 3.1, а до этого там просто туча всего и вся что связано с xray. И там есть массовое управление несколькими серверами с панелями, да чего только нет. Даже mtproto-proxy
habrasilence Автор
Да ничем, 3x‑ui отличный и гораздо более мощный проект. Просто мне хотелось собрать небольшую панель под свои задачи и заодно разобраться, как всё работает. Насколько я знаю, нужного мне метода работы с белыми списками там сейчас нет. Про AmneziaWG 3.1 в 3x‑ui не знал, спасибо.
Но опять же оговорюсь: заменять 3x‑ui и изображать «технологический прорыв» я не пытался. В этом и смысл SBP: не делать приборную панель самолёта с миллионом кнопок, а оставить только то, что нужно в моём сценарии.
habrasilence Автор
Кстати, после вашего комментария как раз проверил AmneziaWG 3.1. На Windows с актуальным AmneziaVPN он пока не работает: handshake проходит, но трафика нет, а клиент бесконечно подключается. Проблема воспроизводится и у других: https://github.com/amnezia-vpn/amnezia-client/issues/3043