Веб-панель для мониторинга и управления Xray transparent proxy сервером.
- 📊 Мониторинг статуса - отслеживание работы Xray сервиса в реальном времени
- 🌐 Управление маршрутами - добавление и удаление доменов в Direct routes через веб-интерфейс
- 📝 Просмотр соединений - последние 30 соединений с автоматическим reverse DNS lookup
- 🔍 DNS мониторинг - отслеживание DNS запросов от клиентов в сети
- 🚀 Информация о выходах - отображение exit IP адресов для разных типов трафика
Панель предназначена для работы с Xray transparent proxy с многоуровневой маршрутизацией:
Home Server (Xray)
↓ VLESS+Reality
VPS Relay
├─ Shadowsocks → US Exit (для .com, .io)
├─ Shadowsocks → EU Exit (для остальных доменов)
└─ Direct → для .ru доменов
Главная страница:
- Статус Xray сервиса
- Exit IP информация
- Список Direct маршрутов
Недавние соединения:
- Время соединения
- IP клиента
- Назначение (IP + домен)
- Тип маршрута (direct/vless)
DNS запросы:
- Время запроса
- Клиент
- Запрошенный домен
- Тип записи (A/AAAA)
- Python 3.7+
- Flask
- Xray-core
- dnsmasq (для DNS мониторинга)
- systemd (для управления сервисами)
# Ubuntu/Debian
apt update
apt install -y python3 python3-pip
# Установите Flask
pip3 install flask# Скачайте xray-panel.py
wget https://raw.githubusercontent.com/AlanForester/xray-ru-en/main/xray-panel.py -O /root/xray-panel.py
chmod +x /root/xray-panel.pyОтредактируйте xray-panel.py и замените placeholder'ы:
US_PROXY_IP- IP адрес вашего US Shadowsocks сервераFR_PROXY_IP- IP адрес вашего EU/France Shadowsocks сервераYOUR_ISP_IP- IP адрес вашего интернет-провайдера
Создайте файл /etc/systemd/system/xray-panel.service:
[Unit]
Description=Веб-панель мониторинга Xray
After=network.target xray.service
[Service]
Type=simple
User=root
ExecStart=/usr/bin/python3 /root/xray-panel.py
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.targetsystemctl daemon-reload
systemctl enable xray-panel
systemctl start xray-panel
# Проверьте статус
systemctl status xray-panelОткройте в браузере: http://YOUR_SERVER_IP:8080
- В форме "Прямые маршруты" введите домен (например:
example.com) - Нажмите "Добавить в Direct"
- Xray автоматически перезапустится с новыми правилами
- Домен будет добавлен в routing rules с префиксом
domain:
- Найдите домен в списке "Прямые маршруты"
- Нажмите кнопку "Удалить"
- Подтвердите действие
- Xray автоматически перезапустится
- Таблица "Недавние соединения" показывает последние 30 уникальных соединений
- Автоматический reverse DNS lookup для IP адресов
- Цветовая индикация маршрутов:
- 🟢 Зеленый - Direct (через ISP)
- 🔵 Синий - VLESS (через VPS)
- Таблица "DNS Запросы" показывает последние 50 DNS запросов
- Требует настроенный dnsmasq с логированием
- Фильтрует PTR запросы (in-addr.arpa)
Панель работает с /etc/xray/config.json и ожидает следующую структуру routing rules:
{
"routing": {
"rules": [
{
"type": "field",
"domain": [
"domain:example.com",
"domain:mysite.ru"
],
"outboundTag": "direct"
}
]
}
}Панель читает следующие файлы логов:
/var/log/xray/access.log- для соединений/var/log/dnsmasq.log- для DNS запросов
Убедитесь, что в /etc/xray/config.json включено логирование:
{
"log": {
"access": "/var/log/xray/access.log",
"loglevel": "warning"
}
}Для DNS мониторинга добавьте в /etc/dnsmasq.conf:
log-queries
log-facility=/var/log/dnsmasq.log
- Панель запускается на
0.0.0.0:8080без аутентификации - Рекомендуется ограничить доступ через firewall:
# Разрешить только из локальной сети
ufw allow from 192.168.1.0/24 to any port 8080- Или настройте reverse proxy с базовой аутентификацией (nginx, caddy)
- Reverse DNS lookup с LRU кэшем (1000 записей)
- Timeout 0.2s для DNS запросов (предотвращает зависание)
- Дедупликация соединений по ключу
ip:port:route - Лимиты: 30 соединений, 50 DNS запросов
# Проверьте логи
journalctl -u xray-panel -f
# Проверьте права на файлы
ls -la /root/xray-panel.py
chmod +x /root/xray-panel.py# Проверьте что логи доступны
tail -f /var/log/xray/access.log
# Проверьте формат логов
# Ожидается: "2026/02/07 18:27:36.820039 from 192.168.1.132:50431 accepted tcp:5.28.195.2:443 [vless-atel]"# Проверьте что dnsmasq логирует запросы
tail -f /var/log/dnsmasq.log | grep query
# Проверьте конфигурацию
cat /etc/dnsmasq.conf | grep log# Проверьте права root пользователя
whoami # должно быть: root
# Проверьте что systemctl работает
systemctl status xrayxray-panel/
├── xray-panel.py # Основной файл приложения
└── README.md # Документация
get_xray_status()- получение статуса сервиса через systemctlget_direct_domains()- парсинг domain rules из xray configget_recent_connections()- парсинг access.log с reverse DNSget_dns_queries()- парсинг dnsmasq.logadd_domain_to_direct()- добавление домена в конфиг + restartremove_domain_from_direct()- удаление домена из конфига + restart
Встроенный HTML шаблон с:
- Адаптивной версткой
- Цветовой индикацией маршрутов
- JavaScript для AJAX удаления доменов
- Автоматическая перезагрузка страницы после изменений
- Добавить аутентификацию (basic auth / sessions)
- Графики статистики трафика
- Экспорт логов в CSV/JSON
- WebSocket для real-time обновлений
- Темная тема
- API endpoints для автоматизации
MIT License - см. LICENSE файл
Создано для управления Xray transparent proxy с multi-exit архитектурой.
Если вы нашли баг или хотите предложить улучшение - создайте issue на GitHub.
Made with ❤️ for transparent proxy automation