Server Remote Desktop Linux: X11VNC & RustDesk

Anda sedang mencoba mengelola atau mendukung mesin Linux dari jarak jauh dan bosan dengan solusi ad hoc rapuh — SSH untuk akses shell, menyalin file besar secara manual, atau mengirimkan tautan TeamViewer kepada seseorang setiap kali.
Anda mencoba mengelola atau mendukung mesin Linux dari jarak jauh dan lelah dengan solusi ad-hoc yang rapuh — SSH untuk akses shell, menyalin file besar secara manual, atau mengirimkan tautan TeamViewer setiap kali. Jika Anda menginginkan desktop jarak jauh sisi-server yang persisten di Linux yang berjalan saat boot, bertahan setelah reboot, dan dapat di-host sendiri di bawah kendali Anda, tutorial ini menjelaskan dua pendekatan sisi-server yang praktis: X11VNC untuk sesi X11 klasik dan daemon server RustDesk untuk opsi rendezvous/relay modern yang dapat di-host sendiri.
Kapan menjalankan server desktop linux khusus (dan mengapa)
Daftar periksa singkat untuk memutuskan apakah desktop jarak jauh sisi-server masuk akal:
- Anda membutuhkan akses headless atau unattended ke sebuah mesin (server lab, desktop kantor, kios).
- Anda menginginkan satu endpoint yang selalu aktif yang bisa Anda sambungkan tanpa meminta seseorang menjalankan klien terlebih dahulu.
- Anda lebih memilih self-hosting (tanpa cloud pihak ketiga) atau ingin relay lokal untuk menghindari mengekspos port RDP/VNC secara langsung.
- Anda ingin menggabungkan akses VNC X11 klasik dengan traversal NAT/relay modern demi kenyamanan klien.
X11VNC adalah daemon VNC sisi-server kecil dan matang yang mengekspor apa pun yang ada pada display X11 (umumnya :0). Komponen server RustDesk (hbbs + hbbr) menyediakan rendezvous dan relay opsional untuk koneksi peer-to-peer — berguna ketika klien berada di balik NAT. Keduanya dapat berdampingan: X11VNC memberi Anda endpoint VNC yang selalu aktif, dan RustDesk memberi cara terkelola bagi klien jarak jauh untuk menemukan host Anda tanpa port-forwarding.
Opsi A — X11VNC: stabil, sederhana, akses X11 sisi-server
Gunakan X11VNC ketika mesin Anda menjalankan desktop berbasis X11 dan Anda menginginkan server VNC sederhana yang berjalan saat boot. X11VNC sudah teruji (rilis stabil umum: x11vnc 0.9.16 di banyak repo) dan terintegrasi baik dengan systemd.
Install dan amankan x11vnc
Pada Debian/Ubuntu:
sudo apt update sudo apt install -y x11vnc
Buat file kata sandi (gunakan passphrase yang kuat). Ganti 'remote' dengan pemilik direktori home pengguna remote.
sudo -u remote mkdir -p /home/remote/.vnc sudo -u remote x11vnc -storepasswd /home/remote/.vnc/passwd sudo chown -R remote:remote /home/remote/.vnc
Temukan file X authority yang benar untuk display manager Anda. Lokasi umum:
- LightDM: /var/run/lightdm/root/:0
- GDM (GNOME): /run/user/1000/gdm/Xauthority atau periksa /home/
/.Xauthority
Jalankan x11vnc secara manual sekali untuk memvalidasi:
sudo -u remote x11vnc -display :0 -auth /home/remote/.Xauthority -rfbauth /home/remote/.vnc/passwd -forever -shared -noxdamage -o /var/log/x11vnc.log
Unit systemd untuk layanan yang selalu aktif
Letakkan file ini di /etc/systemd/system/x11vnc.service — sunting User, Group, dan path -auth agar sesuai dengan distro/display manager Anda.
[Unit] Description=x11vnc server for display :0 After=graphical.target [Service] Type=simple User=remote Group=remote ExecStart=/usr/bin/x11vnc -display :0 -auth /home/remote/.Xauthority -rfbauth /home/remote/.vnc/passwd -forever -shared -noxdamage -repeat -o /var/log/x11vnc.log Restart=on-failure [Install] WantedBy=graphical.target
Enable dan mulai:
sudo systemctl daemon-reload sudo systemctl enable --now x11vnc.service sudo journalctl -u x11vnc -f
Pertimbangan jaringan dan keamanan
VNC secara default tidak terenkripsi. Opsi untuk menguatkan endpoint VNC sisi-server:
- Bind ke localhost dan wajibkan tunneling SSH: jalankan x11vnc dengan -rfbport 5901 dan gunakan systemd agar hanya mendengarkan di 127.0.0.1, lalu SSH -L 5901:localhost:5901.
- Gunakan VPN untuk mengakses LAN host.
- Batasi akses dengan firewall (contoh ufw di bawah).
- Jika Anda membutuhkan klien remote langsung tanpa SSH, letakkan VNC di belakang stunnel/NGINX TLS proxy (menambahkan beban CPU dan kompleksitas).
# Basic UFW rule to allow local-network VNC only sudo ufw allow from 192.168.0.0/16 to any port 5900 proto tcp # Or bind to localhost and tunnel via SSH for remote access
Catatan: X11VNC membutuhkan sesi X11. Pada Wayland (GNOME di beberapa distro) gunakan server yang kompatibel Wayland (mis., wayvnc) atau fitur remote desktop bawaan desktop (seringkali RDP).
Opsi B — RustDesk server daemon: rendezvous dan relay yang di-host sendiri
RustDesk memberi kemampuan untuk meng-host sendiri signaling (hbbs) dan relay server (hbbr) sehingga klien dapat menemukan dan mencapai host Anda tanpa mengekspos port VNC/RDP mentah. Jika Anda sudah menjalankan X11VNC untuk sesi desktop, Anda bisa menempatkannya di depan X11VNC menggunakan RustDesk untuk traversal NAT dan pengalaman klien yang lebih mudah. Komponen server RustDesk umum dikemas sebagai image docker; periksa rilis proyek — contoh tag server termasuk v1.2.0 (verifikasi tag saat ini di repo RustDesk).
Contoh Docker Compose sederhana
Compose ini menyalakan hbbs (rendezvous) dan hbbr (relay opsional). Port yang ditunjukkan adalah default umum yang digunakan di dokumentasi komunitas (sesuaikan jika upstream mengubah port).
version: '3.7'
services:
hbbs:
image: rustdesk/rustdesk-server:latest
container_name: rustdesk-hbbs
restart: unless-stopped
ports:
- '21112:21112/tcp' # rendezvous
environment:
- HBBS_KEY=your_secret_key_here
hbbr:
image: rustdesk/rustdesk-server:latest
container_name: rustdesk-hbbr
restart: unless-stopped
ports:
- '21113:21113/udp' # relay
Catatan:
- Ganti HBBS_KEY (atau variabel lingkungan lain sesuai instruksi RustDesk saat ini) dengan nilai yang aman.
- Image resmi RustDesk dan nama variabel lingkungan bisa berubah antar rilis — konsultasikan repo server RustDesk sebelum produksi.
Menghubungkan klien
Di sisi klien (RustDesk desktop/mobile), arahkan klien ke alamat server hbbs Anda (nama DNS atau IP publik): mis., 1.2.3.4:21112. Jika relay hbbr tersedia dan diperlukan, klien akan menggunakannya untuk melewatkan trafik saat koneksi langsung (P2P) gagal. Anda kemudian dapat mengonfigurasi klien untuk mengontrol agen RustDesk yang berjalan di host atau menggunakan RustDesk sebagai broker yang terhubung ke layanan VNC yang sudah ada di host (untuk itu biasanya Anda menjalankan agen RustDesk di host, yang kemudian dapat meneruskan ke sesi X11VNC).
Alternatif systemd tanpa Docker
Jika Anda memilih untuk tidak menggunakan Docker, bangun binari rustdesk-server sesuai dokumentasi proyek dan instal sebagai layanan systemd (hbbs dan hbbr). Pengemasan berbeda tiap rilis; pendekatan Docker adalah cara tercepat untuk menjalankan server yang dapat direproduksi.
Keamanan, traversal NAT, dan kapan harus menghindari mengekspos port
Dua pendekatan tingkat-tinggi untuk menghindari mengekspos port desktop secara langsung:
- Biarkan VNC/RDP terikat ke localhost; wajibkan SSH/VPN untuk mencapai host. Ini opsi paling sederhana dan paling dapat diaudit untuk pengaturan admin tunggal.
- Host sendiri relay/rendezvous (RustDesk) dan gunakan TLS + otentikasi. Ini mengurangi port terbuka di host tetapi mengharuskan menjalankan dan mengamankan server relay.
Potongan firewall (UFW):
# Allow only SSH from your office and block the rest sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp sudo ufw deny 5900/tcp # If running RustDesk server on the relay box (example) sudo ufw allow 21112/tcp sudo ufw allow 21113/udp
Daftar periksa keamanan praktis:
- Gunakan otentikasi yang kuat untuk akun agen VNC atau RustDesk.
- Rotasi atau lindungi kunci server (RustDesk HBBS key) dan jaga agar image tetap up-to-date.
- Gunakan IDS/monitoring untuk memberi peringatan pada pemindaian port dan kegagalan login.
- Jika Anda memerlukan sesi desktop terenkripsi, terminasi TLS pada reverse proxy (Nginx/Caddy) di depan relay dan terapkan TLS 1.2+ serta cipher kuat.
Tips operasional, pemecahan masalah, dan pemeliharaan
Masalah umum dan perbaikan:
- Tidak terlihat desktop melalui VNC: pastikan display X adalah :0 (ps aux | grep X) dan bahwa x11vnc menggunakan file -auth yang benar.
- Layanan tidak mulai saat boot: set WantedBy systemd ke graphical.target dan pastikan display manager mulai sebelum x11vnc.
- Klien RustDesk tidak bisa menjangkau server: konfirmasi DNS dan firewall; uji dengan telnet/alat IP dan periksa log container (docker-compose logs -f).
- Performa buruk: aktifkan -noxdamage untuk x11vnc (mengurangi tearing, menurunkan CPU untuk beberapa beban) dan pertimbangkan menyesuaikan kompresi/encoding di sisi klien bila tersedia.
Playbook pemeliharaan:
- Terapkan pembaruan keamanan OS setiap minggu. Pada Debian/Ubuntu Anda dapat mengotomatiskan unattended-upgrades untuk patch minor.
- Lacak repo upstream RustDesk atau x11vnc untuk perbaikan keamanan. Jika Anda menggunakan image docker, jadwalkan refresh image dan pipeline redeploy.
- Backup file konfigurasi dan sertifikat TLS; simpan kunci HBBS di secrets manager jika memungkinkan.
Kapan alat komersial atau RDP mungkin pilihan yang lebih baik
Perbandingan jujur:
- TeamViewer / AnyDesk: Mereka unggul pada kemudahan penggunaan ekstrem untuk pengguna non-teknis, traversal NAT universal, dan aplikasi mobile yang halus. Jika Anda membutuhkan dukungan instan tanpa operasi untuk ratusan endpoint non-teknis, SaaS komersial mungkin sepadan dengan biayanya. Lihat perbandingan kami di rustdesk-vs-anydesk untuk detail.
- RDP (Microsoft Remote Desktop): Pada server dan desktop Windows, RDP native biasanya memberikan performa dan fitur lebih baik (clipboard, transfer file, suara). Namun RDP membuka permukaan serangan yang lebih berisiko jika tidak berada di balik VPN atau bastion.
Jika tujuan utama Anda adalah self-hosting dan privasi — dan Anda bersedia dengan sedikit konfigurasi awal serta pemeliharaan berkelanjutan — kombinasi X11VNC + RustDesk server adalah pendekatan praktis yang kuat.
Bacaan lebih lanjut dan sumber internal
Jika Anda ingin menghindari port-forwarding sepenuhnya, baca panduan kami: Desktop jarak jauh tanpa port forwarding. Untuk pandangan tingkat tinggi tentang menyebarkan solusi sendiri, lihat Panduan desktop jarak jauh self-hosted. Untuk praktik terbaik penguatan keamanan, cek Keamanan desktop jarak jauh.
Terakhir, Tenvo fokus pada tooling desktop jarak jauh yang terbuka dan dapat di-host sendiri — jika Anda menginginkan alternatif client/server yang dirancang untuk self-hosting dan penggunaan lintas-platform, lihat halaman unduhan atau harga kami untuk memulai: Unduh dan Harga. Kami menjelaskan pola deployment serupa di posting lain dan menjaga contoh tetap terkini.
Jika Anda ingin bantuan dengan distro tertentu, display manager, atau mengatur startup systemd untuk lingkungan tertentu, beri tahu saya distro dan display manager (mis., Ubuntu 22.04 dengan GDM) dan saya akan memberi file unit dan perintah auth-path yang disesuaikan. Saat Anda siap, unduh Tenvo atau coba membangun stack yang dijelaskan di atas — mulai di Unduh.
Siap mencoba sendiri?
Gratis untuk 30 perangkat, tanpa kartu kredit. Siap dan tersambung dalam dua menit.