remnawave-subscription-page сlient configuration
multiapp
link to multiapp app-config.json
included apps:
- iOS:
-
- sing-box
-
- Happ
-
- Streisand
-
- ShadowRocket
-
- Clash Mi
- Android:
-
- Clash Meta for Android
-
- Happ
-
- sing-box
-
- v2rayNG
-
- Exclave
- PC:
-
- Clash Verge Rev
-
- FlClash
-
- Happ (alpha)
remnawave-subscription-page custom web template
- mihomo
- sing-box (1.11 sing-box, 1.10 sing-box legacy)
- simple xray-json template
- re-filter happ routing:
happ://routing/onadd/ewogICAgIk5hbWUiOiAiUmU6ZmlsdGVyIiwKICAgICJHbG9iYWxQcm94eSI6ICJmYWxzZSIsCiAgICAiUmVtb3RlRG5zIjogIjEuMS4xLjEiLAogICAgIkRvbWVzdGljRG5zIjogIjc3Ljg4LjguOCIsCiAgICAiR2VvaXB1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tLzFhbmRyZXZpY2gvUmUtZmlsdGVyLWxpc3RzL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC9nZW9pcC5kYXQiLAogICAgIkdlb3NpdGV1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tLzFhbmRyZXZpY2gvUmUtZmlsdGVyLWxpc3RzL3JlbGVhc2VzL2xhdGVzdC9kb3dubG9hZC9nZW9zaXRlLmRhdCIsCiAgICAiRG5zSG9zdHMiOiB7fSwKICAgICJEaXJlY3RTaXRlcyI6IFtdLAogICAgIkRpcmVjdElwIjogWwogICAgICAgICIxMC4wLjAuMC84IiwKICAgICAgICAiMTcyLjE2LjAuMC8xMiIsCiAgICAgICAgIjE5Mi4xNjguMC4wLzE2IiwKICAgICAgICAiMTY5LjI1NC4wLjAvMTYiLAogICAgICAgICIyMjQuMC4wLjAvNCIsCiAgICAgICAgIjI1NS4yNTUuMjU1LjI1NSIKICAgIF0sCiAgICAiUHJveHlTaXRlcyI6IFsKICAgICAgICAiZ2Vvc2l0ZTpyZWZpbHRlciIKICAgIF0sCiAgICAiUHJveHlJcCI6IFsKICAgICAgICAiZ2VvaXA6cmVmaWx0ZXIiCiAgICBdLAogICAgIkJsb2NrU2l0ZXMiOiBbXSwKICAgICJCbG9ja0lwIjogW10sCiAgICAiRG9tYWluU3RyYXRlZ3kiOiAiSVBPbkRlbWFuZCIKfQ==
XHTTP indound json:
{
"tag": "Sweden_XHTTP",
"listen": "/dev/shm/xrxh.socket,0666",
"protocol": "vless",
"settings": {
"clients": [],
"fallbacks": [],
"decryption": "none"
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls",
"quic"
]
},
"streamSettings": {
"network": "xhttp",
"xhttpSettings": {
"mode": "auto",
"path": "/xhttppath/",
"extra": {
"xmux": {
"cMaxReuseTimes": 0,
"maxConcurrency": "16-32",
"maxConnections": 0,
"hKeepAlivePeriod": 0,
"hMaxRequestTimes": "600-900",
"hMaxReusableSecs": "1800-3000"
},
"noSSEHeader": true,
"xPaddingBytes": "100-1000",
"scMaxBufferedPosts": 30,
"scMaxEachPostBytes": 1000000,
"scStreamUpServerSecs": "20-80"
}
}
}
}
XHTTP nginx reverse proxy:
location /xhttppath/ {
client_max_body_size 0;
grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_body_timeout 5m;
grpc_read_timeout 315;
grpc_send_timeout 5m;
grpc_pass unix:/dev/shm/xrxh.socket;
}
host extra xhttp json:
{
"xmux": {
"cMaxReuseTimes": 0,
"maxConcurrency": "16-32",
"maxConnections": 0,
"hKeepAlivePeriod": 0,
"hMaxRequestTimes": "600-900",
"hMaxReusableSecs": "1800-3000"
},
"noGRPCHeader": false,
"xPaddingBytes": "100-1000",
"downloadSettings": {
"port": 443,
"address": "another.domain",
"network": "xhttp",
"security": "tls",
"tlsSettings": {
"alpn": [
"h2,http/1.1"
],
"show": false,
"serverName": "another.domain",
"fingerprint": "chrome",
"allowInsecure": false
},
"xhttpSettings": {
"path": "/xhttppath/"
}
},
"scMaxEachPostBytes": 1000000,
"scMinPostsIntervalMs": 30,
"scStreamUpServerSecs": "20-80"
}
remnanode docker compose:
services:
remnanode:
image: remnawave/node:latest
container_name: remnanode
hostname: remnanode
restart: always
env_file:
- .env-node
volumes:
- /dev/shm:/dev/shm
network_mode: host