δΈζζζ‘£
A modern and beautiful subscription aggregation management panel for Clash/Mihomo, supporting multi-subscription merging, custom nodes, user management, and smart format output.
Dashboard
Node Map
Subscriptions
Nodes
Add Node
Templates
Settings
Users
π Multi-subscription Aggregation - Merge multiple subscriptions into one
π οΈ Custom Nodes - Add your own nodes (vmess/vless/ss/trojan/hysteria2, etc.)
π Local Import - Import subscriptions from local YAML/Base64 files
π Auto Refresh - Scheduled subscription updates with Cron expression
π Traffic Statistics - Display traffic usage and expiration time
π― Drag & Drop Sorting - Customize node order
π Global Node Map - Interactive ECharts world map visualization
β‘ Go Speedtest Service - High-performance testing via mihomo library
Delay test (TCP latency)
Speed test with peak mode
Exit IP detection
π Online GeoIP APIs - No local database needed
Built-in: ip-api.com (45 req/min, Chinese), ipwhois.app, ipinfo.io
Custom API support with {ip} and {key} placeholders
Token security protection
City name translations (TokyoβδΈδΊ¬, Seoulβι¦ε°)
Special region display (HKβδΈε½ι¦ζΈ―, TWβδΈε½ε°ζΉΎ)
Async GeoIP lookup (v2.6.0) - Reduce "unknown" nodes with IP-based country detection
Case-insensitive city mapping (v2.6.0) - Support all case formats (Boydton/boydton/BOYDTON)
π Proxy Chain - Create chained proxy configurations (Node A β Node B β Target)
π Port Mapping - Map nodes to local ports for direct access (generates Clash listeners)
π·οΈ Smart Filtering - Filter by country, protocol, subscription, latency status
βοΈ Flexible Sorting - Sort by name, latency, speed (ascending/descending)
π Protocol Distribution - Pie chart analytics
π Custom Templates - Create and manage Clash configuration templates
π Placeholder System - Use {{ALL_PROXIES}}, {{COUNTRY_GROUPS}} for dynamic content
π€ Import/Export - Upload YAML files or create from scratch
π₯ Multi-user Support - Create users with individual subscriptions
ποΈ Node Allocation - Assign specific nodes/subscriptions to users
π¨ Visual Template Editor (v2.4.0) - Configure proxy groups for each user with visual interface
Edit node selection for each proxy group
Real-time YAML preview
Support for admin tokens
β±οΈ Expiration Control - Set user expiration dates
π± Smart Format - Auto-detect client and return YAML or Base64
π± One-click Import - Support clash:// protocol
π· QR Code - Scan to subscribe on mobile
π Custom Template - Customize Clash configuration template
π Password Protection - Panel access requires password
π« Token Authentication - Subscription URL with token
π Regenerate Token - Reset subscription token anytime
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Docker Container β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββββββ βββββββββββββββββββββββββββ β
β β Python/FastAPI βββββΊβ Go Speedtest Service β β
β β (port 8666) β β (port 9876) β β
β β β β - mihomo library β β
β β - API Server β β - delay/speed test β β
β β - Frontend β β - exit IP detection β β
β βββββββββββββββββββ βββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Docker Compose (Recommended)
Create docker-compose.yml:
services :
submerger :
image : ghcr.io/socialyjj/submerger:latest
container_name : submerger
restart : unless-stopped
ports :
- " 8666:8666"
volumes :
- ./data:/app/data
environment :
- TZ=Asia/Shanghai
Start:
Visit http://your-ip:8666
git clone https://github.com/SocialYjj/clash-sub-merger.git
cd clash-sub-merger
docker-compose up -d --build
Visit the panel and set admin password
Add subscriptions or custom nodes
Click "Subscribe" button to get the aggregated URL
Client
Format
Note
Clash/FlClash/Stash
YAML
Auto-detect
V2RayN/V2RayNG
Base64
Auto-detect
Shadowrocket
YAML/Base64
Auto-detect
Manual
-
?format=yaml or ?format=base64
VMess
VLESS (with Reality)
Shadowsocks (SS)
ShadowsocksR (SSR)
Trojan
Hysteria / Hysteria2
TUIC
WireGuard
AnyTLS
SOCKS5 / HTTP
Snell
Variable
Default
Description
TZ
UTC
Timezone
DATA_DIR
/app/data
Data directory
PORT
8666
Server port
All data is stored in /app/data:
config.json - Configuration (subscriptions, nodes, auth)
uploads/ - Subscription cache files
# Create virtual environment
uv venv
.venv\S cripts\a ctivate # Windows
source .venv/bin/activate # Linux/Mac
# Install dependencies
uv pip install -r requirements.txt
# Run server
python server.py
cd submerger
npm install
npm run dev
cd submerger
npm run build
Apache License 2.0