# xray-lists Утилита для скачивания списков ip/cidr и доменов с последующей генерацией готовых файлов для nftables и dnsmasq ## Установка 1. Склонируйте репозиторий в /opt/xray-lists-src 2. Подготовьте окружение: ```bash apt install python3-venv python3 -m venv /opt/xray-lists/venv /opt/xray-lists/venv/bin/pip install /opt/xray-lists-src /opt/xray-lists/venv/bin/pip install '/opt/xray-lists-src[socks]' # опционально, для socks прокси mkdir -p /var/lib/xray-lists/ cp /opt/xray-lists-src/config.example.yaml /var/lib/xray-lists/config.yaml ``` 3. Создаём скрипт хелпер `/var/lib/xray-lists/update.sh`: ```bash #!/bin/sh set -e out=$(/opt/xray-lists/venv/bin/xray-lists) echo "$out" dns_changed=0 elements_changed=0 if echo "$out" | grep -A 10 "changed:" | grep -q "nftsets.conf"; then dns_changed=1; fi if echo "$out" | grep -A 10 "changed:" | grep -q "\.elements\.nft"; then elements_changed=1; fi if [ "$dns_changed" -eq 1 ] && [ "$elements_changed" -eq 1 ]; then exit 12; elif [ "$dns_changed" -eq 1 ]; then exit 10; elif [ "$elements_changed" -eq 1 ]; then exit 11; fi exit 0 ``` 4. Делаем скрипт исполняемым: ```bash chmod +x /var/lib/xray-lists/update.sh ``` ## Использование ### Запуск программы: ```bash /opt/xray-lists/venv/bin/xray-lists ``` #### Флаги - `-h, --help` - список и опиание флаговё - `--config ` - кастомный путь к конфигу - `--only ` - обновление только конкретного списка по его ID (можно через запятую) - `--dry-run` - проверка загрузки и обработки без записи файлов на диск - `-v, --verbose` - подробные лог ### Автоматизация через systemd Чтобы утилита запускалась автоматически по расписанию (например, раз в сутки или при старте системы), настроим пару юнитов systemd. 1. Создайте файл службы `/etc/systemd/system/xray-lists.service`: ```ini [Unit] Description=Update Xray lists [Service] Type=oneshot ExecStart=/bin/sh -c '\ /var/lib/xray-lists/update.sh; \ rc=$$?; \ case "$$rc" in \ 10) systemctl restart dnsmasq ;; \ 11) nft -f /etc/nftables.conf ;; \ 12) nft -f /etc/nftables.conf && systemctl restart dnsmasq ;; \ esac' ``` 2. Cоздайте файл таймера `/etc/systemd/system/xray-lists.timer`: ```ini [Unit] Description=Run xray-lists update daily and on boot [Timer] OnBootSec=5min OnUnitActiveSec=12h Persistent=true [Install] WantedBy=timers.target ``` 3. Включите и запустите таймер: ```bash systemctl daemon-reload systemctl enable --now xray-lists.timer ``` #### Проверить статус таймера и посмотреть, когда запланирован следующий запуск, можно командой: ```bash systemctl list-timers --all ``` #### Посмотреть логи работы скрипта можно через journalctl: ```bash journalctl -u xray-lists.service -b ```