🚀 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 protocolvmess://- VMess protocoltrojan://- Trojan protocolss://- 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=trueThanks @x-socks for the feature request.
🐳 Docker Improvements
Smaller & Faster Image
- Base image: Switched from
distrolesstoalpine:3.21for better compatibility - Go version: Upgraded to Go 1.25
- Binary compression: Using UPX for ~60% smaller binary size
- Build flags: Added
-s -wfor stripped binaries
New Capabilities
- curl: Available in container for debugging
- tzdata: Proper timezone support
- ca-certificates: Updated root certificates
📚 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-checkerBinary
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! 🎉