Files
obsidian/VPN/Marzban - план действий при блокировке.md

6.7 KiB
Raw Blame History

Marzban — план действий при блокировке

Инфраструктура: VDS Рига 195.135.254.66, панель https://daniilvds.duckdns.org:2083/dashboard/ Логин: admin / Marzban2026!


🚨 Быстрая смена порта

1. Меняем порт в Marzban (xray конфиг)

Через браузер:

https://daniilvds.duckdns.org:2083/dashboard/
→ Core Settings → Xray Config
→ Меняем "port": 8888 на новый (например 9443)
→ Save

Или через API (с любой машины):

TOKEN=$(curl -s -X POST https://daniilvds.duckdns.org:2083/api/admin/token \
  -d "username=admin&password=Marzban2026!" \
  -H "Content-Type: application/x-www-form-urlencoded" | python3 -c "import json,sys; print(json.load(sys.stdin)['access_token'])")

# Получить текущий конфиг
curl -s https://daniilvds.duckdns.org:2083/api/core/config \
  -H "Authorization: Bearer $TOKEN"

# Применить изменённый конфиг (меняешь port в JSON и применяешь)
curl -s -X PUT https://daniilvds.duckdns.org:2083/api/core/config \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ ... новый конфиг ... }'

2. Пробрасываем новый порт в Docker

ssh root@195.135.254.66

# Редактируем compose
nano /opt/marzban/docker-compose.yml
# Меняем "8888:8888" → "9443:9443"

cd /opt/marzban && docker compose up -d marzban

3. Обновляем ключи пользователям

Ключи пользователей обновляются автоматически — порт меняется во всех ссылках.

Заходишь в панель → выбираешь пользователя → копируешь новую ссылку → отправляешь.

Или через API:

curl -s https://daniilvds.duckdns.org:2083/api/user/USERNAME \
  -H "Authorization: Bearer $TOKEN"
# В поле "links" будет актуальная ссылка с новым портом

👥 Управление пользователями

Создать пользователя

curl -s -X POST https://daniilvds.duckdns.org:2083/api/user \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "vasya",
    "proxies": {"vless": {}},
    "inbounds": {"VLESS_REALITY": []}
  }'

Получить ссылку пользователя

curl -s https://daniilvds.duckdns.org:2083/api/user/vasya \
  -H "Authorization: Bearer $TOKEN" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d['links'][0])"

Удалить пользователя (отозвать доступ)

curl -s -X DELETE https://daniilvds.duckdns.org:2083/api/user/vasya \
  -H "Authorization: Bearer $TOKEN"

Список всех пользователей

curl -s "https://daniilvds.duckdns.org:2083/api/users" \
  -H "Authorization: Bearer $TOKEN" | python3 -c "import json,sys; [print(u['username'], u['status']) for u in json.load(sys.stdin)['users']]"

🔌 Добавить новый протокол (inbound)

Через Core Settings → Xray Config в панели добавляешь новый блок в inbounds.

Shadowsocks (простой, хорошо работает через мобильный)

{
  "tag": "SHADOWSOCKS",
  "listen": "0.0.0.0",
  "port": 8388,
  "protocol": "shadowsocks",
  "settings": {
    "clients": [],
    "network": "tcp,udp"
  }
}

VLESS + WebSocket + TLS (обходит DPI через CDN/Cloudflare)

{
  "tag": "VLESS_WS",
  "listen": "0.0.0.0",
  "port": 8889,
  "protocol": "vless",
  "settings": {
    "clients": [],
    "decryption": "none"
  },
  "streamSettings": {
    "network": "ws",
    "security": "none",
    "wsSettings": {
      "path": "/vpn"
    }
  }
}

После добавления inbound — в настройках пользователя выбрать новый inbound.


Устойчивые порты (реже блокируют)

Порт Почему безопасен
443 HTTPS — блокировка убьёт половину интернета
80 HTTP — аналогично
2083 cPanel SSL — используется хостингами
2087 cPanel — аналогично
8443 Альтернативный HTTPS

Переехать на 443:

  1. Остановить Outline/shadowbox: docker stop shadowbox
  2. Сменить порт Marzban на 443 (через панель + compose)

🔄 Полезные команды на сервере

ssh root@195.135.254.66

# Статус контейнеров
cd /opt/marzban && docker compose ps

# Логи Marzban
docker logs marzban-marzban-1 --tail 50

# Логи Caddy (SSL)
docker logs marzban-caddy-1 --tail 20

# Перезапуск Marzban
docker compose restart marzban

# Перезапуск всего стека
docker compose restart

# Обновить образ Marzban
docker compose pull && docker compose up -d

# Занятые порты
ss -tlnp | grep -E "8888|2053|443|80"

🔑 Reality — что делать если начали детектировать

Reality маскируется под настоящий TLS-хендшейк к www.microsoft.com. Если заблокировали:

  1. Сменить dest на другой популярный сайт (например www.google.com:443 или www.apple.com:443)
  2. Сгенерировать новую пару ключей:
    docker exec marzban-marzban-1 xray x25519
    
  3. Обновить privateKey, publicKey, shortIds в Core Settings
  4. Все пользователи получат новые ссылки автоматически (pubkey меняется в ссылке)

📱 Приложения для клиентов

Платформа Приложение Ссылка
iOS Karing https://apps.apple.com/app/karing/id6472431552
Android Hiddify https://play.google.com/store/apps/details?id=app.hiddify.com
Windows Hiddify https://github.com/hiddify/hiddify-app/releases/latest
macOS Hiddify https://github.com/hiddify/hiddify-app/releases/latest

📋 Страница для раздачи ключей

https://vpn.digital-home.site/admin?key=mysecret2026

Вставляешь vless:// ссылку из Marzban → получаешь ссылку на 24 часа для друга.


Обновлено: 01.04.2026