13 KiB
My Point VPN
Intro
Предоставляет интерфейс чат бота в телеграмм посредством которого позволяет разворачивать 3x-ui на своем сервере и выпускать ключи.
Базово конфигурируется 3x-ui на создание vless подключений с tls+reality маскировкой трафика. Настраивается dns, подписка и базовая безопасность сервера. Пользователь может прикрутить прокси на выход или включить cf_warp прокси. По каждому серверу дает базовую статистику у ручки управления.
Если вам нужен приватный доступ в интернет, передайте сервер боту и он настроит вам его. Выглядит это так: пользователь заводит аккаунт хостинг провайдера, арендует сервер, ему выдают ip и пароль root, он передает их боту, оный настраивает сервер, теперь пользователь может выпускать ключи vless и подключаться к интернету безопасно и приватно.
- статистика сервера:
- сколько трафика пропустил
- сколько пользователей
- можно добавить пользователя
- статистика по пользователю:
- онлайн?
- сколько трафика пропустил
- можно удалить пользователя
Серверу можно настроить:
- прокси на выходе (cf или свои)
- домен (можно спрятать за cf, сертификат получим у certbot)
Окружение
- Linux Mint 22
- Python 3.12.3
- PyCharm 2026.2.1
Интерфейс чата
Переход в главное меню должен быть реализован кнопкой в клавиатуре. /start и кнопка "главное меню" должны выполняться одним методом.
Сейчас у пользователя нет данных и это его первое сообщение, поэтому система показывает ему сообщение заглушку.
--->
/start
<---
привет. выбери действие
[ФАК][добавить сервер][помощь]
Пользователь нажимает на кнопку добавления сервера и переходит в меню добавления сервера.
Меню добавления сервера
--->
добавить сервер
<---
Сервер: -
Сервер маскировки: -
Домен: -
Cloudflare: -
Прокси: -
[домен][cloudflare][прокси][маскировка]
[отмена][установить][сервер][помощь]
--->
сервер/маскировка
<---
отправь данные для подключения к серверу
`ip:root_password`
[отмена]
После получения данных выполняется процесс настройки сервера. Этот процесс занимает время, поэтому выполняется в фоне.
--->
127.0.0.1:toor
<---
Сервер: 127.0.0.1 - $(uname -a)
Домен: -
Cloudflare: -
Прокси: -
[домен][cloudflare][прокси]
[отмена][установить][сервер]
--->
cloudflare
<---
Если вы спрятали домен за клаудом, то нужно включить опцию тут.
[включить][отмена]
--->
включить
<---
Сервер: 127.0.0.1 - $(uname -a)
Домен: -
Cloudflare: Да
Прокси: -
[домен][cloudflare][прокси]
[отмена][установить][сервер]
--->
прокси
<---
Можно указать свои или включить cf_warp.
[cf_warp][отмена][удалить]
--->
http://127.0.0.1:9050
<---
Сервер: 127.0.0.1 - $(uname -a)
Домен: -
Cloudflare: Да
Прокси: 127.0.0.1:9050
[домен][cloudflare][прокси]
[отмена][установить][сервер]
--->
установить
<---
Запускаю установку сервера. Отправлю уведомление когда все будет готово.
А по окончании генерируется уведомление.
--->
<---
сервер ip - проименован как `NAME`, готов к работе.
[меню сервера]
Меню
Пользователь опять отправляет /start это нормально, так он получает главное меню с перечислением его серверов.
--->
/start
<---
server_name 0Mb/0Mb 0/0
[ФАК][добавить сервер][помощь][управление сервером]
Чтобы перейти к управлению сервером нужно вот такой квест пройти, надо все эти id в копируемый pre сунуть.
--->
управление сервером
<---
Пришлите server_name
[отмена]
Меню управления сервером
--->
меню сервера
<---
Сервер: NAME
Состояние: активен
Ключи: 0/0
Домен: -
Прокси: -
[Вернуть][Переустановить]
[Домен][Прокси][Cloudflare]
[Клиенты]
Ключи отображаются онлайн/оффлайн.
Возврат сервера связан с отключением его от платформы. Доступы к серверу изымаются, ставится новый пароль рута, а данные остаются как есть. Просто отдаем сервер назад.
--->
Вернуть
<---
Сервер будет освобожден из-под моего контроля,
будет установлен случайный пароль рута,
мои доступы будут убраны, данные на сервере сохранены.
Будет отправлено уведомление с новым паролем. Продолжить?
[Да][Нет]
Возможно потребуется переустановка после сброса сервера. Бывает такое когда это нужно. Обычно после сброса сервера задается новый пароль.
--->
Переустановить
<---
Будет произведена повторная установка всех компонентов.
Вызывайте эту функцию, только после того, как в панеле управления
сервером в аккаунте хостинг провайдера вызовите переустановку сервера.
Если уверены, то пришлите новый пароль сервера.
[Отмена][Использовать старый]
Меню управления доменом. После установки выпускаются ссл сертификаты, а если домена нет, то сертификат выпускаем на ip.
--->
Домен
<---
Сейчас установлен: -
Доменное имя лучше подходит для маскировки вашей точки доступа.
[установить][отключить]
Прокси полезно ставить. Есть 2 варианта, когда пользователь покупает прокси и задает их тут, или когда активирует cf_warp.
--->
Прокси
<---
Сейчас установлено: -
Позволяют маскировать ip адрес вашей точки доступа от сайтов,
которые посещаются.
X -> Cloudflare <> MyPoint <> PROXY <- Web
X через домен видит ip от cloudflare, а web сайты видят ip прокси,
это позволяет вашей точке доступа оставаться инкогнито.
[установить][отключить]
--->
установить
<---
пришли прокси в формате `protocol://username:password@host:port` или нажми кнопку.
[cloudflare warp][отмена]
Еще одна полезная возможность это скрытие ip за cloudflare. И для этого тоже будет меню.
--->
Cloudflare
<---
Сейчас активировано: Нет
Позволяет защитить ip адрес вашей точки доступа от клиентов,
которые к ней подключаются.
X -> Cloudflare <> MyPoint <> PROXY <- Web
[установить][отключить]
Меню управления клиентами
--->
Клиенты
<---
id 0/0Mb On
[добавить][удалить][получить ключ]
--->
удалить
<---
Чтобы удалить клиента пришлите его id
[отмена]
--->
добавить
<---
если хотите, можете сами установить id
[сгенерируй]
Далее пользователь либо отправляет текст, который будет использован как id для нового клиента, либо сгенерирует новый уникальный id и вернет ключ.
Настройка сервера
Чтобы сервера были в безопасности их следует правильно настроить. От пользователя ожидается на вход девственный сервер с только что установленной операционной системой.
- Конфигурирование ssh
- Смена пароля рута
- Конфигурирование nftables
- Обновление операционной системы
- Установка 3x-ui
- Выпуск сертификата
- Настройка vless+tls+reality
- Настройка прокси
Функционал бота
Добавление сервера
Сервер добавляется после установки ОС. Для бота требуется, чтобы ОС была debian-13. Свежий сервер:
- открыт публично 22 порт ssh
- имеет ip
- рут может войти по ssh используя пароль
Алгоритм действий для нового сервера, чтобы включить его в работу.
- Заходим на сервер по паролю
- прописываем ему свой ключ
- меняем пароль, но сохраняем оба
- Выполняем обновление системы
apt update -y && apt dist-upgrade -y - Настраиваем ssh
- отключаем вход по паролю
- жестко фиксируем авторизацию только по ключам
- меняем порт
- сохраняем конфиг sshd, перезапускаем сервис, проверяем коннект
- Настраиваем nftables
Система общается с сервером только через авторизацию по ssh ключам. Когда пользовать захочет вернуть сервер себе, следует:
- Откатываем настройки ssh
- Сбросить nftables
- Удалить файл /root/.ssh/authorized_keys
- Отдать ip:password
После базовой настройки нового сервера можно его специализировать. Этим занимается пакет serverus, который умеет готовить специализированные сервера под определенный вид задач.
Пакет также занимается и настройкой серверов базово. И позволяет сделать из сервера прокси или панель 3x-ui. Для наших целей требуется оба и в интерфейсе добавления сервера есть пункт "Сервер маскировки" - это сервер из которого нужно сделать прозрачный прокси. В App заводим модель в которой объединяем эти 2 сервера в единую систему. Так как кнопка "Вернуть" вернет оба сервера и они связаны настройками маршрутизации.
# TODO: дописать документацию