Install
openclaw skills install suiwarpDeploy S-UI + Cloudflare WARP proxy server in one command. 6 protocols (VLESS Reality, TUIC, Hysteria2, gRPC, Trojan, WebSocket), clean Cloudflare IP exit via wireproxy (~54MB RAM). Use when the user wants to set up a proxy server, VPN alternative, or network tunnel on a VPS.
openclaw skills install suiwarpDeploy a multi-protocol proxy server with clean Cloudflare IP exit on any VPS.
Activate when the user wants to:
Client → S-UI (sing-box, 6 protocols) → wireproxy (SOCKS5 ~4MB) → Cloudflare WARP → Clean Exit IP
| Protocol | Port | Best For |
|---|---|---|
| VLESS Reality Vision | 443/tcp | Daily use (most covert) |
| TUIC v5 | 443/udp | Gaming (low latency) |
| Hysteria2 | 8443/udp | Streaming (max speed) |
| VLESS Reality gRPC | 2053/tcp | Multiplexing (stable) |
| Trojan Reality | 8880/tcp | Classic fallback |
| VLESS Reality WS | 2083/tcp | CDN/firewall bypass |
| VLESS CDN WS | 2052/tcp | IP hidden behind Cloudflare CDN |
| ShadowTLS v3 + SS2022 | 9443/tcp | Anti-DPI stealth (looks like real TLS) |
| VLESS HTTPUpgrade | 10443/tcp | Stealth HTTP transport with Reality |
| Hysteria2 Port Hopping | 20000-40000/udp | Anti-QoS, port randomization |
SSH into the target server as root, then run:
bash <(curl -sL https://raw.githubusercontent.com/iPythoning/SUIWARP/main/setup.sh)
This handles everything automatically:
If the user provides server credentials, deploy remotely:
ssh root@SERVER_IP 'bash <(curl -sL https://raw.githubusercontent.com/iPythoning/SUIWARP/main/setup.sh)'
For password-only servers:
sshpass -p 'PASSWORD' ssh -o StrictHostKeyChecking=no root@SERVER_IP \
'bash <(curl -sL https://raw.githubusercontent.com/iPythoning/SUIWARP/main/setup.sh)'
After setup completes:
/root/suiwarp-client-links.txthttp://SERVER_IP:2095/app/ (default: admin/admin — remind user to change!)http://SERVER_IP:2096/sub/# Direct IP
curl ifconfig.me
# WARP exit IP (should be Cloudflare)
curl -x socks5h://127.0.0.1:40000 ifconfig.me
Check logs: journalctl -u s-ui -n 20
Common causes:
out_json type mismatch: If DB was manually edited, out_json column must be blob (bytes), not string. Fix with Python:
cur.execute("UPDATE inbounds SET out_json=? WHERE id=?", (json.dumps(data).encode("utf-8"), rid))
outbound type not found: wireguard: S-UI 1.4.0 sing-box doesn't include WireGuard. Use the wireproxy SOCKS5 approach instead.systemctl status wireproxy-warp
journalctl -u wireproxy-warp -n 20
If endpoint is unreachable, try alternative WARP endpoints:
engage.cloudflareclient.com:2408162.159.193.1:2408162.159.195.1:2408ufw status numbered
# Ensure 443/tcp, 443/udp, 8443/udp, 2053/tcp, 8880/tcp, 2083/tcp are ALLOW
# Check swap
free -h
# If no swap, create one
fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile
bash <(curl -sL https://raw.githubusercontent.com/iPythoning/SUIWARP/main/uninstall.sh)
systemctl status s-ui # S-UI status
systemctl status wireproxy-warp # WARP status
systemctl restart s-ui # Restart proxy
systemctl restart wireproxy-warp # Restart WARP tunnel
journalctl -u s-ui -f # Live S-UI logs
journalctl -u wireproxy-warp -f # Live WARP logs
| Path | Description |
|---|---|
/usr/local/s-ui/db/s-ui.db | S-UI SQLite database |
/usr/local/s-ui/sui | S-UI binary |
/etc/wireproxy.conf | wireproxy WireGuard config |
/etc/suiwarp/wgcf-account.toml | WARP account credentials |
/root/suiwarp-client-links.txt | Generated client links |