Sign inSign up

snookerm/xray-balancer

By snookerm

•Updated 17 days ago

MikroTik Xray balancer + observatory failover, N outbounds, leastPing/leastLoad/random

Image
0

10K+

snookerm/xray-balancer repository overview

⁠snookerm/xray-balancer

MikroTik Xray Balancer — отказоустойчивый VPN-шлюз для RouterOS 7.x (ARM64), один контейнер с native Xray routing.balancers + observatory. Любое число outbound (1 → ∞), стратегии leastPing / leastLoad / random, переключаются ENV-переменной без rebuild.

Главный проект и документация: https://github.com/snookerm/mikrotik-xray-balancer⁠

⁠Что внутри

  • Base: teddysun/xray:26.5.3 + iptables, iproute2, gettext, bash, curl, jq
  • start.sh — рендерит XRAY_OUTBOUNDS_JSON через jq, поднимает iptables (TPROXY если есть, иначе REDIRECT TCP-only), стартует Xray
  • config.template.json — N-outbound aware, balancer-strategy через ENV

⁠Запуск (типично через RouterOS /container add)

Используется в составе проекта mikrotik-xray-balancer. Самостоятельный запуск возможен через docker run — но смысла мало без отдельного контейнера tun2socks-mikrotik (для UDP) и mangle-правил на роутере.

Полный setup: 30-routeros/⁠ в репозитории.

⁠ENV-переменные

ENVDefaultНазначение
PROBE_URL(required)URL для observatory probe (HTTPS GET 204)
PROBE_INTERVAL30sИнтервал между probes
LOG_LEVELwarningerror / warning / info / debug
XRAY_DNS_SERVERS1.1.1.1,...DNS внутри xray (CSV)
BALANCER_STRATEGYleastPingleastPing / leastLoad / random
XRAY_SERVERS_JSON(auto from legacy)JSON-массив N серверов
MAIN_*, B1_*, B2_*, B3_*(legacy)Жёсткие 4 outbound для backward-compat

⁠Compatibility

  • RouterOS 7.x (тестировано на 7.21.3)
  • ARM64 (тестировано на hAP ax3)
  • Должно работать на других ARM/ARM64 моделях с container-поддержкой (RB5009, hAP ac³ и т.д.)

⁠Что отличает от обычных Xray-образов

  • Native failover через routing.balancers + observatory за 1–3 секунды
  • Auto-detect TPROXY/REDIRECT в start.sh (RouterOS-ядро без xt_TPROXY → автоматический фолбэк на REDIRECT TCP-only)
  • N-outbound config генерируется из ENV (1 → ∞ серверов без rebuild)
  • Strategy toggle через ENV (нет необходимости пересобирать image при смене стратегии)
  • Logrotate на старте (RouterOS /file get contents не читает >64KB — held compact)

⁠Лицензия

MIT — см. LICENSE⁠.


⁠English version

MikroTik Xray Balancer — fault-tolerant VPN gateway for RouterOS 7.x (ARM64). A single container with native Xray routing.balancers + observatory. Any number of outbounds (1 → ∞), strategies leastPing / leastLoad / random, switchable via ENV without rebuild.

Main project and docs: https://github.com/snookerm/mikrotik-xray-balancer⁠

⁠Inside
  • Base: teddysun/xray:26.5.3 + iptables, iproute2, gettext, bash, curl, jq
  • start.sh — renders XRAY_OUTBOUNDS_JSON via jq, sets up iptables (TPROXY if available, REDIRECT TCP-only otherwise), launches Xray
  • config.template.json — N-outbound aware, balancer-strategy via ENV
⁠Running (typically via RouterOS /container add)

Designed to be used as part of the mikrotik-xray-balancer project. Standalone docker run is possible — but pointless without the companion tun2socks-mikrotik container (for UDP) and mangle rules on the router.

Full setup: 30-routeros/⁠ in the repo.

⁠ENV variables
ENVDefaultPurpose
PROBE_URL(required)URL for observatory probe (HTTPS GET 204)
PROBE_INTERVAL30sInterval between probes
LOG_LEVELwarningerror / warning / info / debug
XRAY_DNS_SERVERS1.1.1.1,...DNS inside xray (CSV)
BALANCER_STRATEGYleastPingleastPing / leastLoad / random
XRAY_SERVERS_JSON(auto from legacy)JSON array of N servers
MAIN_*, B1_*, B2_*, B3_*(legacy)Hard-coded 4 outbound for backward-compat
⁠Compatibility
  • RouterOS 7.x (tested on 7.21.3)
  • ARM64 (tested on hAP ax3)
  • Should work on other ARM/ARM64 models with container support (RB5009, hAP ac³, etc.)
⁠What sets it apart from generic Xray images
  • Native failover via routing.balancers + observatory in 1–3 seconds
  • Auto-detect TPROXY/REDIRECT in start.sh (RouterOS kernel without xt_TPROXY → automatic REDIRECT TCP-only fallback)
  • N-outbound config generated from ENV (1 → ∞ servers without rebuild)
  • Strategy toggle via ENV (no need to rebuild on strategy change)
  • Logrotate on startup (RouterOS /file get contents can't read >64KB — keep them compact)
⁠License

MIT — see LICENSE⁠.

Tag summary

Content type

Image

Digest

sha256:258b64027…

Size

30 MB

Last updated

17 days ago

docker pull snookerm/xray-balancer