Pada setup saya, saya menggunakan:
ZimaOS (Zima Virtual Machine)
NGINX Proxy Manager (Docker)
Cloudflare Tunnel (untuk expose HTTP)
Domain:
wos.my.id
Saya mengalami masalah ketika mengakses VM Console (WebSocket), meskipun Web UI ZimaOS berjalan normal.
1. Permasalahan yang Saya Temui
Web UI bisa diakses:
https://wos.my.idNamun saat membuka console VM, muncul error:
WebSocket connection failedSetelah saya analisa, ternyata:
ZimaOS Web UI → menggunakan HTTP (port 88)
VM Console → menggunakan WebSocket di port 5700
Cloudflare Tunnel hanya handle HTTP/HTTPS (Layer 7)
Port 5700 tidak ter-handle oleh Cloudflare
2. Root Cause
Ketika console dibuka, browser mencoba koneksi:
wss://wos.my.id:5700/Masalahnya:
Cloudflare (mode proxy/orange cloud) tidak support port 5700
Tunnel hanya meneruskan HTTP, bukan TCP raw
WebSocket console membutuhkan koneksi persistent TCP
3. Solusi yang Saya Gunakan
Saya pisahkan jalur traffic:
HTTP (Web UI) → tetap lewat Cloudflare Tunnel
WebSocket (5700) → direct TCP via NGINX Stream
4. Konfigurasi yang Saya Lakukan
4.1 NGINX Proxy Manager (HTTP)
Saya buat Proxy Host:
Domain:
wos.my.idForward ke:
172.22.0.1:88Enable:
WebSocket Support
Block Common Exploits
Cache Assets
Hasil:
https://wos.my.id → ZimaOS Web UI4.2 Cloudflare Tunnel
Saya setup:
Service: HTTP
Target:
http://127.0.0.1:80
Ini hanya untuk Web UI.
4.3 NGINX Stream (Bagian Paling Penting)
Saya masuk ke:
NGINX Proxy Manager → Streams → Add StreamLalu saya isi:
Incoming Port:
5700Forward Host:
wos.my.id(atau IP lokal server)
Forward Port:
5700Protocol:
TCP: ON
UDP: OFF
Kemudian Save.
5. Hasil Akhir
Setelah semua konfigurasi:
Web UI tetap berjalan via Cloudflare
Console VM sekarang berhasil terbuka
Tidak ada lagi error WebSocket
6. Alur Arsitektur yang Saya Gunakan
[Browser]
|
| HTTPS
v
[Cloudflare Tunnel]
|
v
[NGINX Proxy :80]
|
v
[ZimaOS :88]
[Browser]
|
| TCP 5700
v
[NGINX Stream :5700]
|
v
[Zima VM Console]
7. Kenapa Solusi Ini Berhasil
Sebelumnya saya mencoba semua lewat HTTP (Layer 7), tapi gagal karena:
WebSocket butuh koneksi persistent
Reverse proxy HTTP bisa merusak upgrade connection
Dengan NGINX Stream:
Saya bypass Layer 7
Traffic langsung TCP (Layer 4)
Tidak ada manipulasi header
WebSocket berjalan stabil