What's New in v1.3.0
SUIWARP now supports a --no-warp flag designed for servers with static residential IPs. When you already have a clean, high-reputation IP, Cloudflare WARP is counterproductive — it replaces your premium residential IP with a generic Cloudflare datacenter IP.
# For VPS / datacenter IPs (default — WARP exit)
bash <(curl -sL https://raw.githubusercontent.com/iPythoning/SUIWARP/main/setup.sh)
# For static residential IPs — direct exit, no WARP
bash <(curl -sL https://raw.githubusercontent.com/iPythoning/SUIWARP/main/setup.sh) --no-warp
The flag also accepts --residential and --direct as aliases.
Why Residential IPs Don't Need WARP
Cloudflare WARP was built to help datacenter and VPS IPs — addresses that are trivially identifiable as non-residential and easily flagged by geo-restrictions, streaming services, and bot detection.
Residential IPs are fundamentally different:
| Scenario | VPS/Datacenter | Static Residential |
|---|---|---|
| IP reputation | Low (flagged as proxy) | High (genuine user) |
| WARP benefit | Hides behind Cloudflare CDN | Replaces good IP with datacenter IP |
| After WARP | Cloudflare AS13335 exit | Cloudflare AS13335 exit |
| Without WARP | Datacenter IP exposed | Your residential IP — premium |
For residential IPs, the right architecture is direct exit. WARP only adds latency, memory overhead, and a WARP account registration step.
What Changes With --no-warp
| Component | Default (WARP) | --no-warp (Residential) |
|---|---|---|
| wgcf + wireproxy | Installed (~4MB RAM) | Skipped entirely |
| S-UI routing | final: warp |
final: direct |
| ShadowTLS outbound | WARP SOCKS5 | Direct |
| systemd dependency | wireproxy-warp.service |
None |
| Exit IP | Cloudflare AS13335 | Your residential IP |
All 10 protocols remain fully functional — only the exit path changes.
Upgrading an Existing Server
If you already have SUIWARP deployed on a residential IP, you can switch to direct routing with a one-liner:
python3 -c "
import sqlite3, json
DB = '/usr/local/s-ui/db/s-ui.db'
conn = sqlite3.connect(DB)
config = {'log': {'level': 'warn'}, 'dns': {'servers': [{'tag': 'cloudflare', 'address': 'tls://1.1.1.1', 'detour': 'direct'}], 'strategy': 'prefer_ipv4'}, 'route': {'rules': [{'protocol': ['dns'], 'action': 'hijack-dns'}, {'ip_is_private': True, 'outbound': 'direct'}], 'final': 'direct'}, 'experimental': {}}
conn.execute('UPDATE settings SET value=? WHERE key=?', (json.dumps(config, indent=2), 'config'))
conn.commit(); conn.close(); print('Done')
"
systemctl stop wireproxy-warp && systemctl disable wireproxy-warp
systemctl restart s-ui
Full Architecture
Standard mode (WARP — for datacenter IPs):
Client → S-UI (sing-box) → wireproxy → Cloudflare WARP → Exit: AS13335
--no-warp mode (for residential IPs):
Client → S-UI (sing-box) → Exit: Your residential IP (direct)
Installation
SUIWARP deploys a 10-protocol proxy stack in under 2 minutes:
- VLESS Reality Vision
:443/tcp - TUIC v5
:443/udp - Hysteria2
:8443/udp(+ port hopping 20000–40000) - VLESS Reality gRPC
:2053/tcp - Trojan Reality
:8880/tcp - VLESS Reality WS
:2083/tcp - VLESS CDN WS
:2052/tcp(Cloudflare CDN relay) - ShadowTLS v3 + SS2022
:9443/tcp(anti-DPI) - VLESS HTTPUpgrade
:10443/tcp