340.91K

vpn_marzban_recovery_presentation

1.

Пошаговая инструкция
Восстановление VPN-сервиса
Aeza VPS → SSH → Marzban → домен → Telegram-бот → тест пользователей
Aeza
SSH
Marzban
Домен
Бот
Важно: не переустанавливать VPS, сначала проверить статус сервера и сделать резервные копии.
Версия для ручного восстановления без глубокого программирования
1

2.

Что мы восстанавл иваем
Система состоит не из одного элемента: важно проверить всю цепочку.
Провайдер
Aeza: оплата, статус,
IP
Сервер
VPS: Linux, root-доступ
Логика диагностики
Сначала убеждаемся, что сервер жив. Потом
проверяем Marzban. Только после этого
трогаем домен и Telegram-бот.
Панель
Marzban:
пользователи,
подписки
Домен
A-запись, SNI, ссылки
Главный риск
Случайная переустановка VPS может
стереть базу пользователей и настройки.
Поэтому любые действия начинаем с
проверки и backup.
Бот
Telegram: выдача VPN
Результат
Должен открыться dashboard Marzban,
создаться тестовый пользователь и
заработать Telegram-бот.
Контрольная карта восстановления
2

3.

Что известно из записки
Секретные данные в презентацию не выносим: используем их только при входе.
1
Аккаунт Aeza
Вход через почту. В кабинете должен быть VPS, на
котором лежит VPN-сервис.
4
Домен
В записке фигурирует старый домен. Его нужно
найти в настройках и заменить на рабочий домен.
2
SSH-доступ
Подключение по команде вида ssh
root@IP_СЕРВЕРА. При первом входе подтвердить
yes.
5
Telegram-бот
Бот, скорее всего, получает пользователей/ссылки
из Marzban. Проверяется после панели.
3
Marzban
После входа на сервер нужно открыть dashboard
локально через SSH-туннель.
6
Пользователи
Если новый тестовый пользователь работает, а
старые нет — им нужно выдать обновлённые
ссылки.
Пароли, токены и логины не пересылаем в чат и не вставляем в презентацию. Храним отдельно в менеджере паролей.
Расшифровка записки без публикации секретов
3

4.

Прав ил а безопасности перед началом
Цель — восстановить, а не случайно уничтожить рабочую конфигурацию.
Нельзя нажимать
Reinstall / Reset / Delete / Recreate /
Переустановить ОС / Сбросить сервер /
Удалить сервер
Сначала проверить
Оплачен ли VPS, включён ли сервер,
совпадает ли IP, есть ли доступ root по
SSH.
Перед правками
Сделать backup файлов Marzban и только
потом менять домен, конфиги или
настройки бота.
cp /opt/marzban/.env /opt/marzban/.env.bak-$(date +%F -%H%M) 2>/dev/null
cp /var/lib/marzban/xray_config.json /var/lib/marzban/xray_config.json.bak-$(date +%F -%H%M) 2>/dev/null
После восстановления: поменять пароли Aeza, root, Marzban; сохранить IP, домен, расположение бота и резервные копии.
Критически важный блок
4

5.

Шаг 1 . Проверить VPS в Aeza
Пока сервер не активен и не оплачен, дальнейшие действия бессмысленны.
1
Открыть кабинет
Зайти в Aeza через почту, затем перейти в Servers
/ VPS / Cloud servers.
4
Проверить оплату
Если сервер просит оплату — оплатить. Не
удалять и не пересоздавать сервер.
2
Найти нужный сервер
Проверить, что это именно тот VPS, на котором
раньше работал VPN.
5
Скопировать данные
Нужны IP-адрес сервера и пароль root. Пароль не
публиковать.
3
Проверить статус
Должно быть Active / Running / Работает. Если
выключен — включить Start.
6
Зафиксировать
Записать IP, дату оплаты, название VPS и домен,
который будет использоваться.
Кабинет провайдера
5

6.

Шаг 2. Подкл ючить ся к серверу по S S H
Выполняется с компьютера: PowerShell на Windows или Terminal на Mac.
Пример
ssh root@123.123.123.123
ssh root@IP_СЕРВЕРА
Первый вход
На вопрос “Are you sure…” ввести yes и
нажать Enter.
Пароль
Ввести root-пароль. Символы могут не
отображаться — это нормально.
Успех
Если видишь root@server:~# — ты внутри VPS
и можешь выполнять команды.
root@server:~#
Если timeout — сервер выключен, IP неверный или проблема сети. Если Permission denied — неверный пароль или root-вход отключён.
Подключение к VPS
6

7.

Шаг 3. Проверить , установлен л и Marzban
Не меняем настройки, пока не убедимся, что сервис вообще запущен.
Что должно быть видно
В выводе docker ps ищем контейнер с названием вроде
marzban, marzban-marzban-1 или похожее.
marzban --help
docker ps
A
Команда marzban есть
Значит панель установлена штатно. Можно
перезапускать через marzban restart.
B
Команды нет
Нужно искать установку через Docker Compose
или папки /opt/marzban, /var/lib/marzban.
C
Контейнер остановлен
Сначала смотрим docker ps -a, затем запускаем
нужный контейнер или marzban restart.
marzban restart
sleep 30
docker ps
Проверка панели Marzban
7

8.

Шаг 4. Откры ть das hboard Marzban
Админка может быть закрыта наружу, поэтому открываем её через SSH-туннель.
Окно 1
Оставь первое SSH-подключение открытым.
Окно 2
Открой второе окно терминала на компьютере.
ssh -L 8000:127.0.0.1:8000 root@IP_СЕРВЕРА
Дальше
Введи root-пароль. После входа окно просто оставь открытым
— оно держит туннель.
Открыть в браузере
http://127.0.0.1:8000/dashboard/ или
http://localhost:8000/dashboard/
Если страница не открылась: проверь, что туннельное окно не закрыто, Marzban запущен, порт действительно 8000.
Доступ к панели без открытия порта наружу
8

9.

Шаг 5. В ойти в Marzban и проверить пол ь зователей
Основной показатель сохранности — наличие старых пользователей.
1
Войти
Использовать логин и пароль из записки. Не
пересылать их третьим лицам.
2
Открыть Users
3
Проверить, есть ли старые пользователи и
активные подписки.
Если логин не подходит
Создай нового sudo-администратора командой ниже. Это не
должно удалить пользователей.
Не удалять
Ничего массово не удалять и не пересоздавать до
теста.
marzban cli admin create --sudo
Интерпретация
Пользователи есть — база, скорее всего, сохранилась. Пользователей нет — нужно искать backup или проверять, не был ли сервер
переустановлен.
Проверка базы пользователей
9

10.

Шаг 6. Подготов ить рабочий домен
VPN-ссылки должны вести на домен, который реально указывает на текущий VPS.
Не использовать случайный домен
Домен должен принадлежать вам, быть
продлён и не конфликтовать с рабочим
сайтом.
Тип: A
Имя: vpn
Значение: IP_СЕРВЕРА
TTL: 300 или Auto
Лучше поддомен
Например: vpn.example.ru. Так меньше риск
сломать основной сайт.
DNS A-запись
Имя: vpn. Значение: IP VPS. TTL: 300 или
Auto.
ping vpn.ваш-домен.ru
Если ping показывает IP вашего VPS — DNS уже смотрит в правильное место. Если нет — подождать обновления DNS или проверить запись.
Домен и DNS
10

11.

Шаг 7. Найти стары й домен в настройках
Сначала ищем, где прописан старый адрес. Потом делаем backup. Только после этого меняем.
grep -R "СТАРЫЙ_ ДОМЕ Н" -n /opt/marzban /var/lib/marzban 2>/dev/null
Что ищем
Файлы вроде /opt/marzban/.env и
/var/lib/marzban/xray_config.json.
Что не делать
Не заменять все строки вслепую. Сначала
понять, это домен, SNI, host или URL
подписки.
Backup
Копия нужна, чтобы откатиться, если после
изменения что-то перестанет работать.
cp /opt/marzban/.env /opt/marzban/.env.bak-$(date +%F -%H%M) 2>/dev/null
cp /var/lib/marzban/xray_config.json /var/lib/marzban/xray_config.json.bak-$(date +%F -%H%M) 2>/dev/null
Поиск и резервирование конфигов
11

12.

Шаг 8. Заменить домен в Marzban
Безопаснее сначала через интерфейс, через файлы — только если интерфейс не помогает.
1
Через dashboard
Settings / Host Settings / Hosts / Subscription. Найти
поля с host, SNI, subscription URL.
nano /opt/marzban/.env
# Ctrl+W → найти старый домен
# заменить на новый домен
# Ctrl+O → Enter → Ctrl+X
marzban restart
2
Заменить домен
Старый домен заменить на новый рабочий домен или
поддомен.
3
Сохранить
Нажать Save, затем Restart Core / Перезапустить
ядро.
Если правишь файл
Меняй только явный домен/URL. Не трогай токены, пароли,
UUID, порты и случайные строки.
После перезапуска Marzban снова открыть dashboard и убедиться, что пользователи на месте.
Обновление адресов в панели
12

13.

Шаг 9. Создать тестового пол ь зовател я
Тест нужен до рассылки новых ссылок старым пользователям.
1
Users
2
Add user
Если тестовый пользователь работает
Сервис восстановлен. Старым пользователям можно выдать
обновлённые ссылки, если они были привязаны к старому
домену.
3
Скопировать
subscription
4
Импорт в VPN-клиент
Если тест не работает
Проверить DNS, домен в настройках Marzban, перезапуск ядра,
порты, SSL/SNI и логи контейнера.
Не делай массовую замену пользователям, пока тестовый аккаунт не подключился на реальном VPN-клиенте.
Контрольный тест VPN
13

14.

Шаг 1 0. Проверить Telegram-бота
Бот проверяем после того, как Marzban уже работает и тестовый VPN подключается.
В Telegram
Открыть бота и отправить /start.
Проверить, выдаёт ли он ссылку/конфиг.
docker start ИМЯ_КОНТЕЙНЕРА
docker logs --tail=100 ИМЯ_КОНТЕЙНЕРА
docker ps -a
Что искать
Контейнеры с названиями bot, vpn-bot,
telegram, tg, marzban-bot.
systemctl list-units --type= service | grep -Ei "bot|vpn|telegram|marzban"
systemctl restart ИМЯ_СЕРВИСА
journalctl -u ИМЯ_СЕРВИСА -n 100 --no-pager
Если в логах видны токены или пароли — не отправлять их в чат. Нужно прислать только ошибку без секретов.
Диагностика Telegram-бота
14

15.

Шаг 1 1 . Найти конф иг бота, есл и он не отвечает
Частая причина — бот всё ещё смотрит на старый домен или старый API URL.
grep -R "СТАРЫЙ_ДОМЕН|MARZBAN|BOT_TOKEN|TELEGRAM" -n /opt /root 2>/dev/null | head -100
Возможные поля
MARZBAN_URL, PANEL_URL, API_URL,
BOT_TOKEN, ADMIN_ID.
Что менять
Только старый домен/URL панели на новый
домен, если он явно указан в конфиге.
После правки
Сохранить файл и перезапустить контейнер
или systemd-сервис бота.
docker restart ИМЯ_КОНТЕЙНЕРА
# или
systemctl restart ИМЯ_СЕРВИСА
Конфигурация Telegram-бота
15

16.

Б ы страя диагностика ошибок
Симптом → наиболее вероятная причина → первое действие.
Симптом
Вероятная причина
Первое действие
SSH timeout
VPS выключен, IP неверный, сеть/фаервол
Проверить статус VPS и IP в Aeza
Permission denied
Неверный root-пароль или root-вход закрыт
Сверить пароль, проверить доступ в панели
Dashboard не открывается
Нет туннеля, Marzban остановлен, другой порт
Проверить ssh -L, docker ps, marzban restart
Пользователей нет
Возможна переустановка или другая база
Искать backup, не создавать всё заново сразу
Новый работает, старые нет
Старые ссылки ведут на старый домен
Выдать обновлённые subscription-ссылки
Бот молчит
Остановлен контейнер/сервис или старый URL
docker logs / journalctl, проверить конфиг
Справочник по типовым проблемам
16

17.

Ф инал ь ны й чек-л ист восстановления
Идти строго сверху вниз. Не перескакивать к боту, пока не работает Marzban.
1. VPS в Aeza оплачен, включён и IP записан.
2. SSH root@IP открывается, доступ подтверждён.
3. docker ps показывает Marzban, marzban restart проходит без
явной ошибки.
4. Dashboard открыт через http://127.0.0.1:8000/dashboard/.
5. В Marzban видны старые пользователи или создан новый
admin.
6. Новый домен смотрит A-записью на IP VPS.
7. Старый домен найден в настройках, сделан backup, домен
заменён.
8. Restart Core выполнен, тестовый пользователь подключается.
9. Telegram-бот отвечает на /start и выдаёт рабочую ссылку.
10. Пароли, IP, домен, backup и расположение бота сохранены
отдельно.
Финальный порядок действий
17

18.

Что зафиксировать после восстановления
Чтобы следующий сбой решался за 10 минут, а не по рукописной записке.
Доступы
Aeza, root SSH, Marzban admin. Без
публикации в чатах.
Инфраструктура
IP VPS, домен VPN, DNS-зона, путь к
Marzban и боту.
Резервные копии
/opt/marzban, /var/lib/marzban, конфиг бота,
дата последнего backup.
Минимальный регламент
Перед любыми изменениями: backup → одна правка → перезапуск → тестовый пользователь
→ проверка бота → только потом рассылка клиентам.
Готово: дальше можно идти по чек-листу и восстанавливать сервис без
догадок.
Профилактика повторного сбоя
18
English     Русский Rules