docs: Marzban — план действий при блокировке VPN
This commit is contained in:
219
VPN/Marzban - план действий при блокировке.md
Normal file
219
VPN/Marzban - план действий при блокировке.md
Normal file
@@ -0,0 +1,219 @@
|
|||||||
|
# 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 (с любой машины):
|
||||||
|
```bash
|
||||||
|
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
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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:
|
||||||
|
```bash
|
||||||
|
curl -s https://daniilvds.duckdns.org:2083/api/user/USERNAME \
|
||||||
|
-H "Authorization: Bearer $TOKEN"
|
||||||
|
# В поле "links" будет актуальная ссылка с новым портом
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 👥 Управление пользователями
|
||||||
|
|
||||||
|
### Создать пользователя
|
||||||
|
```bash
|
||||||
|
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": []}
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Получить ссылку пользователя
|
||||||
|
```bash
|
||||||
|
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])"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Удалить пользователя (отозвать доступ)
|
||||||
|
```bash
|
||||||
|
curl -s -X DELETE https://daniilvds.duckdns.org:2083/api/user/vasya \
|
||||||
|
-H "Authorization: Bearer $TOKEN"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Список всех пользователей
|
||||||
|
```bash
|
||||||
|
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 (простой, хорошо работает через мобильный)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"tag": "SHADOWSOCKS",
|
||||||
|
"listen": "0.0.0.0",
|
||||||
|
"port": 8388,
|
||||||
|
"protocol": "shadowsocks",
|
||||||
|
"settings": {
|
||||||
|
"clients": [],
|
||||||
|
"network": "tcp,udp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### VLESS + WebSocket + TLS (обходит DPI через CDN/Cloudflare)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"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)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Полезные команды на сервере
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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. Сгенерировать новую пару ключей:
|
||||||
|
```bash
|
||||||
|
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*
|
||||||
Reference in New Issue
Block a user