github kutovoys/xray-checker v1.0.0

latest releases: v1.1.2, v1.1.1, v1.1.0...
3 days ago

🚀 Xray Checker v1.0.0

We're excited to announce a major release of Xray Checker! This version brings significant architectural improvements, a brand new REST API, enhanced logging, and many quality-of-life features.


✨ Highlights

🔗 Multiple Subscriptions Support

You can now monitor proxies from multiple subscription sources simultaneously! Simply specify multiple --subscription-url flags or separate URLs with commas in the SUBSCRIPTION_URL environment variable.

# Multiple subscriptions via CLI
xray-checker --subscription-url "https://provider1.com/sub" --subscription-url "https://provider2.com/sub"

# Or via environment variable (comma-separated)
SUBSCRIPTION_URL="https://provider1.com/sub,https://provider2.com/sub"

🌐 Full REST API with OpenAPI/Swagger

A complete REST API is now available for integration with your own tools and dashboards:

Endpoint Description
GET /api/v1/proxies List all proxies with full details
GET /api/v1/proxies/{id} Get specific proxy info
GET /api/v1/public/proxies Public endpoint (no auth, no sensitive data)
GET /api/v1/status Overall status summary
GET /api/v1/config Current configuration
GET /api/v1/system/info System information
GET /api/v1/system/ip Current external IP
GET /api/v1/docs Swagger UI documentation
GET /api/v1/openapi.yaml OpenAPI specification

📊 Improved Latency Measurement

Latency is now measured using Time To First Byte (TTFB) instead of total request time. This provides a more accurate representation of proxy responsiveness using Go's httptrace package.


🆕 New Features

📝 Advanced Logging System

A completely new logging system with configurable levels:

# Set log level (debug, info, warn, error, none)
xray-checker --log-level debug

# Or via environment variable
LOG_LEVEL=debug
  • debug: Verbose output including parsed proxy configurations
  • info: Standard operational messages (default)
  • warn: Warnings only
  • error: Errors only
  • none: Silent mode (no output)

🌍 Automatic Geo Files Management

Xray Checker now automatically downloads and manages geoip.dat and geosite.dat files. No more manual file management!

  • Files are downloaded from official Loyalsoldier repository
  • Automatic updates when files are missing or corrupted
  • Stored in ./geo/ directory

🔧 Share Link Parsing with libxray

Native parsing of share links using the official libxray library:

  • vless:// - VLESS protocol
  • vmess:// - VMess protocol
  • trojan:// - Trojan protocol
  • ss:// - Shadowsocks protocol

This ensures 100% compatibility with Xray Core's own parsing logic.

🔍 Domain Resolution Option

New --proxy-resolve-domains flag to resolve proxy server hostnames to IP addresses and create separate configurations for each resolved IP. Thanks to @TheMelbine for the contribution.

xray-checker --proxy-resolve-domains
# Or: PROXY_RESOLVE_DOMAINS=true

🎨 Web UI Privacy Option

Control whether server details (IP addresses and ports) are shown in the web interface:

xray-checker --web-show-details=false  # Hide server details (default)
xray-checker --web-show-details=true   # Show server details
# Or: WEB_SHOW_DETAILS=true

Thanks @x-socks for the feature request.


🐳 Docker Improvements

Smaller & Faster Image

  • Base image: Switched from distroless to alpine:3.21 for better compatibility
  • Go version: Upgraded to Go 1.25
  • Binary compression: Using UPX for ~60% smaller binary size
  • Build flags: Added -s -w for stripped binaries

New Capabilities

  • curl: Available in container for debugging
  • tzdata: Proper timezone support
  • ca-certificates: Updated root certificates

Thanks @drode1 for issue #113


📚 Documentation

🇮🇷 Persian (Farsi) Documentation

Complete documentation is now available in Persian (فارسی) with RTL support!

📖 Updated Docs

  • New logos and favicons for documentation site
  • Updated all configuration examples
  • Improved API reference documentation
  • New troubleshooting guides

🔧 Technical Changes

Architecture Refactoring

The codebase has been significantly refactored for better maintainability:

Old Structure New Structure
parser/parser.go subscription/parser.go
runner/runner.go xray/runner.go
xray/template.go + xray/xray.go xray/config.go
N/A xray/geo_files.go
N/A xray/utils.go
N/A logger/logger.go
N/A web/api.go

Independent Schedulers

Subscription updates and proxy checks now run on independent schedulers:

  • Subscription updates follow SUBSCRIPTION_UPDATE_INTERVAL
  • Proxy checks follow PROXY_CHECK_INTERVAL
  • No more coupling between the two operations

Improved Download Check Method

Fixed the download check method to exit immediately when the minimum download size is reached, improving efficiency.


📋 Configuration Changes

New Environment Variables

Variable Description Default
LOG_LEVEL Logging verbosity (debug/info/warn/error/none) info
PROXY_RESOLVE_DOMAINS Resolve domain names to IPs false
WEB_SHOW_DETAILS Show server IPs in web UI false

Changed Behavior

Variable Old Behavior New Behavior
SUBSCRIPTION_URL Single URL only Multiple URLs (comma-separated or multiple flags)
Latency measurement Total request time Time To First Byte (TTFB)

🔗 Community

💬 Telegram Chat

Join our community for discussions, support, and updates:
Xray tools


📦 Installation

Docker (Recommended)

docker pull kutovoys/xray-checker:latest

docker run -d \
  -e SUBSCRIPTION_URL=https://your-subscription-url/sub \
  -p 2112:2112 \
  kutovoys/xray-checker

Binary

Download from GitHub Releases


🙏 Contributors

Thanks to everyone who contributed to this release!


📄 Full Changelog

For a complete list of changes, see the commit history.


Happy monitoring! 🎉

Don't miss a new xray-checker release

NewReleases is sending notifications on new releases.