Архитектура
Одна панель — master.
Остальные 3X-UI панели — nodes.
Master получает статус и управляет выбранными inbound на нодах.
Подготовь node
На node:
- Обнови 3X-UI до совместимой версии.
- Настрой HTTPS.
- Создай отдельный API token для master.
- Проверь доступность панели с master.
Добавь node
```constructor id="3xui-node" NAME={{NODE_NAME|de-fra-1}} SCHEME=https ADDRESS={{NODE_DOMAIN}} PORT={{NODE_PANEL_PORT}} BASE_PATH={{NODE_BASE_PATH}} API_TOKEN={{NODE_API_TOKEN}}
TLS verify при нормальном сертификате оставляй включённым.
### Inbound Sync
Сначала синхронизируй один тестовый inbound.
После проверки расширяй sync.
### Heartbeat
Node должен стать `online`.
Проверка:
```constructor id="3xui-node-curl"
curl -I https://{{NODE_DOMAIN}}/{{NODE_BASE_PATH}}
На node:
x-ui status | cat
journalctl -u x-ui -n 100 --no-pager
SQLite или PostgreSQL
Проверь backend:
grep -E '^XUI_DB_TYPE=|^XUI_DB_DSN=' /etc/default/x-ui 2>/dev/null
SQLite:
/etc/x-ui/x-ui.db
При большом числе клиентов или сложной multi-node архитектуре можно перейти на PostgreSQL.
Backup перед миграцией
mkdir -p /root/3xui-backups
sqlite3 /etc/x-ui/x-ui.db ".backup '/root/3xui-backups/pre-pg-$(date +%Y%m%d-%H%M%S).db'"
Миграция
```constructor id="3xui-pg-migrate" x-ui migrate-db --dsn "{{POSTGRES_DSN}}"
После успешной миграции настрой:
```constructor id="3xui-pg-env"
XUI_DB_TYPE=postgres
XUI_DB_DSN={{POSTGRES_DSN}}
в /etc/default/x-ui, затем:
systemctl restart x-ui
x-ui status | cat
Исходный SQLite не удаляй, пока не проверены inbounds, clients, subscriptions, API и runtime Xray.