Перейти к основному содержимому

Полезные команды

Сборник команд для повседневной эксплуатации XLADA. Если не сказано иное, примеры выполняются на сервере панели из каталога /opt/xlada, где лежит docker-compose.yml.

Сервисы описаны в одном compose-файле: xpanel (панель), xpanel-db (PostgreSQL), xpanel-redis (Valkey) и необязательный xpanel-subpage (страница подписки). Порты панели и страницы подписки привязаны к 127.0.0.1 — наружу их отдаёт nginx.

Панель​

cd /opt/xlada

docker compose ps # состояние сервисов xpanel, xpanel-db, xpanel-redis
docker compose logs -f xpanel # логи панели в реальном времени
docker compose logs --tail=100 xpanel-db
docker compose restart xpanel # перезапуск только панели
docker compose up -d # применить изменения в .env

Те же логи без compose удобно смотреть напрямую:

docker logs -f xpanel
docker logs --since 30m xpanel

Полный перезапуск стека без потери данных:

docker compose down && docker compose up -d
Осторожно

Никогда не добавляйте флаг -v к docker compose down: он удаляет тома вместе с базой и всеми пользователями. Порядок безопасного обновления — в разделе Обновление.

Аварийные операции (например, сброс пароля суперадмина) выполняет CLI панели:

docker exec -it xpanel cli

Полный список — в разделе Rescue CLI.

Примечание

После правки .env выполняйте docker compose up -d: compose пересоздаст изменившиеся контейнеры и перечитает переменные. Команда docker compose restart окружение не перечитывает — этого мало, если вы поменяли METRICS_USER или домены.

Внутренние сервисы​

Панель хранит данные в PostgreSQL и кэш в Valkey. Проверить оба:

docker exec -it xpanel-db pg_isready -U xpanel -d xpanel
docker exec -it xpanel-redis valkey-cli ping

Ожидаемые ответы — accepting connections и PONG.

База данных​

Дамп перед обновлением или ручной правкой — единственный надёжный способ откатиться. Он снимается внутри контейнера, поэтому pg_dump и psql на хосте устанавливать не нужно, а файл backup-...sql появится в текущем каталоге.

docker exec xpanel-db pg_dump -U xpanel xpanel > backup-$(date +%F).sql

Восстановление:

docker exec -i xpanel-db psql -U xpanel -d xpanel < backup-2026-01-01.sql

Интерактивная консоль:

docker exec -it xpanel-db psql -U xpanel -d xpanel
ЗадачаЗапрос
Сколько пользователейSELECT count(*) FROM users;
Размер базыSELECT pg_size_pretty(pg_database_size('xpanel'));
Последние записи аудитаSELECT * FROM admin_audit_log LIMIT 10;
Примечание

Фильтры по администратору и результату для журнала действий удобнее смотреть в интерфейсе — страница Audit Log, а не в psql.

Нода​

Нода — отдельный контейнер на прокси-сервере, поэтому команды выполняются там, где она запущена:

docker logs -f xpanel-node # лог ноды и проверка SECRET_KEY
docker exec -it xpanel-node xlogs # логи Xray-core
docker exec -it xpanel-node cli --clear-logs

Очистку логов Xray можно запустить и из панели: страница Logs, раздел «Node system logs». Нода выполнит ротацию файла, не перезапуская Xray, — активные соединения не рвутся. Подробности — в разделе Установка ноды.

Порты​

ss -tlnp | grep -E ':(3000|3001|3010|2222)\b' # кто слушает порты XLADA
nc -vz 203.0.113.10 2222 # NODE_PORT с сервера панели

Проверка панели локально и снаружи:

curl -sI http://127.0.0.1:3000
curl -s -o /dev/null -w '%{http_code}\n' https://panel.example.com/api/auth/status

Порт 2222 не нужно открывать всему интернету: достаточно правила firewall на IP панели. Порты прокси, наоборот, задаются конфигурацией Xray и должны быть открыты клиентам.

Совет

NODE_PORT проверяйте с сервера панели, а не из браузера: панель обращается к ноде сама, и доступность порта из интернета ничего не доказывает.

Сертификаты​

certbot certificates # что выпущено и до какой даты
certbot renew --dry-run # проверка автопродления
certbot --nginx -d panel.example.com # выпуск сертификата
systemctl list-timers | grep certbot # активен ли таймер продления

После правки конфигурации nginx всегда проверяйте синтаксис:

nginx -t && systemctl reload nginx

Метрики​

Метрики Prometheus отдаются на 127.0.0.1:3001 под basic auth. Логин и пароль берутся из тех же переменных METRICS_USER и METRICS_PASS, что и при запуске панели:

source /opt/xlada/.env
curl -s http://127.0.0.1:3001/metrics -u "$METRICS_USER:$METRICS_PASS" | head
Внимание

Порт 3001 не должен быть открыт наружу. Если метрики собирает внешний Prometheus, направьте его на 127.0.0.1:3001 через SSH-туннель или отдельный прокси, а не открывайте порт в firewall.

Что дальше​