Полезные команды
Сборник команд для повседневной эксплуатации 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.
Что дальше
- Обновление — порядок обновления и откат из дампа.
- Rescue CLI — аварийные команды панели.
- Частые ошибки — что делать, если команда не сработала.