Skip to content
Tenvo AI · CANLI · v0.16.4 · TLS · Aygıt başına sertifikalar · AGPL-3.0 · ÜCRETSİZ SEVİYE · 30 CİHAZ · KENDİ SUNUCUNDA BARINDIRILABİLİR ALTYAPI · BYO API KEY · MCP CLAUDE & CURSOR İÇİN
Bloga geri dönTutorial

Linux uzak masaüstü sunucusu: X11VNC ve RustDesk kurulumu

Tenvo Editorial Team7 dk okuma
Linux uzak masaüstü sunucusu: X11VNC ve RustDesk kurulumu

Linux makinelerini uzaktan yönetmeye veya desteklemeye çalışıyorsunuz ve kırılgan, ad‑hoc çözümlerden bıktınız — kabuk erişimi için SSH, büyük dosyaları elle kopyalamak veya her seferinde birine TeamViewer bağlantısı göndermek.

Linux makinelerini uzaktan yönetmeye veya desteklemeye çalışıyorsunuz ve kırılgan, geçici çözümlerden — kabuk erişimi için SSH, büyük dosyaları elle kopyalamak veya her seferinde bir TeamViewer bağlantısı göndermek — yoruldunuz. Eğer önyüklemede başlayan, yeniden başlatmalarda devam eden ve kendi denetiminiz altında kendi sunucunuzda barındırabileceğiniz bir sunucu-taraflı uzaktan masaüstü istiyorsanız, bu öğretici iki pratik sunucu-taraflı yaklaşımı anlatır: klasik X11 oturumları için X11VNC ve modern, kendi kendine barındırılan bir rendezvous/relay seçeneği için RustDesk sunucu daemonu.

Ne zaman özel bir linux uzaktan masaüstü sunucusu çalıştırılır (ve neden)

Sunucu-taraflı bir uzaktan masaüstünün mantıklı olup olmadığını belirlemek için hızlı kontrol listesi:

  • Bir makineye başsız veya gözetimsiz erişime ihtiyacınız var (laboratuvar sunucuları, ofis bilgisayarları, kiosklar).
  • Birinin önce bir istemci başlatmasını istemeden bağlanabileceğiniz tek, her zaman açık bir uç nokta istiyorsunuz.
  • Üçüncü taraf bulut yerine kendi kendine barındırmayı tercih ediyorsunuz veya RDP/VNC portlarını doğrudan açmamak için yerel bir relay istiyorsunuz.
  • Klasik X11 VNC erişimini istemci kolaylığı için modern NAT geçişi/relay ile birleştirmek istiyorsunuz.

X11VNC, X11 ekranındaki (genellikle :0) her şeyi dışa aktaran küçük, olgun bir sunucu-tarafı VNC daemonudur. RustDesk'in sunucu bileşenleri (hbbs + hbbr) eşleştirme ve isteğe bağlı relay sağlar — istemciler NAT arkasındayken faydalıdır. Her ikisi birlikte çalışabilir: X11VNC size her zaman açık bir VNC uç noktası verir, RustDesk ise port yönlendirme yapmadan istemcilerin hostunuzu bulmasını yönetilen bir yol sağlar.

Seçenek A — X11VNC: stabil, basit, sunucu-tarafı X11 erişimi

Makineleriniz X11 tabanlı bir masaüstü çalıştırıyorsa ve önyüklemede başlayan basit bir VNC sunucusu istiyorsanız X11VNC'yi kullanın. X11VNC olgunlaşmış ve yaygın olarak kullanılan bir çözümdür (birçok repoda yaygın kararlı sürüm: x11vnc 0.9.16) ve systemd ile iyi entegre olur.

x11vnc kurun ve güvenli hale getirin

Debian/Ubuntu üzerinde:

sudo apt update
sudo apt install -y x11vnc

Bir parola dosyası oluşturun (güçlü bir parola kullanın). 'remote' kullanıcı ev dizini sahibinin yerine koyun.

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

Görüntü yöneticiniz için doğru X authority dosyasını bulun. Yaygın konumlar:

  • LightDM: /var/run/lightdm/root/:0
  • GDM (GNOME): /run/user/1000/gdm/Xauthority veya /home//.Xauthority dosyasını kontrol edin

Doğrulamak için x11vnc'yi bir kez elle başlatın:

sudo -u remote x11vnc -display :0 -auth /home/remote/.Xauthority -rfbauth /home/remote/.vnc/passwd -forever -shared -noxdamage -o /var/log/x11vnc.log

Her zaman açık bir servis için systemd birimi

Bu dosyayı /etc/systemd/system/x11vnc.service konumuna koyun — User, Group ve -auth yolunu dağıtımınıza/görüntü yöneticinize göre düzenleyin.

[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

Etkinleştir ve başlat:

sudo systemctl daemon-reload
sudo systemctl enable --now x11vnc.service
sudo journalctl -u x11vnc -f

Ağ ve güvenlik hususları

VNC varsayılan olarak şifrelenmemiştir. Sunucu-taraflı bir VNC uç noktasını sertleştirmek için seçenekler:

  • localhost'a bağlayın ve SSH tüneli zorunlu kılın: x11vnc'yi -rfbport 5901 ile çalıştırın ve systemd'yi yalnızca 127.0.0.1 üzerinde dinleyecek şekilde yapılandırın, sonra SSH -L 5901:localhost:5901 kullanın.
  • Host'un LAN'ına erişmek için bir VPN kullanın.
  • Erişimi bir güvenlik duvarı ile sınırlayın (aşağıda ufw örneği).
  • Doğrudan uzak istemciler gerekiyorsa VNC'yi stunnel/NGINX TLS proxy arkasına koyun (CPU ve karmaşıklık ekler).
# 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

Notlar: X11VNC bir X11 oturumu gerektirir. Wayland (bazı dağıtımlarda GNOME) üzerinde wayvnc gibi Wayland uyumlu sunucuları veya genellikle RDP olan masaüstünün yerleşik uzaktan masaüstü özelliğini kullanın.

Seçenek B — RustDesk sunucu daemonu: kendi kendine barındırılan rendezvous ve relay

RustDesk, istemcilerin hostlarınızı ham VNC/RDP portlarını açmadan bulup erişebilmesi için sinyalizasyon (hbbs) ve relay sunucusu (hbbr) barındırmanıza olanak tanır. Zaten masaüstü oturumu için X11VNC çalıştırıyorsanız, NAT geçişi ve daha kolay bir istemci deneyimi için bunu RustDesk ile birlikte kullanabilirsiniz. RustDesk sunucu bileşenleri genellikle docker imajları olarak paketlenir; proje sürümlerini kontrol edin — örnek sunucu tagleri v1.2.0 gibi olabilir (güncel tag için RustDesk repo'sunu doğrulayın).

Basit Docker Compose örneği

Bu compose hbbs (rendezvous) ve hbbr (isteğe bağlı relay) başlatır. Gösterilen portlar topluluk belgelerinde yaygın kullanılan varsayılanlardır (upstream portları değiştirirse ayarlayın).

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

Notlar:

  • HBBS_KEY'i (veya mevcut RustDesk talimatlarına göre diğer env değişkenlerini) güvenli bir değerle değiştirin.
  • RustDesk'in resmi imajları ve env değişken adları sürümler arasında değişebilir — üretime almadan önce RustDesk sunucu reposunu kontrol edin.

İstemcilerin bağlanması

İstemci tarafında (RustDesk masaüstü/mobil), istemciyi hbbs sunucunuzun adresine (DNS adı veya genel IP) yönlendirin: örn. 1.2.3.4:21112. Eğer hbbr relay mevcutsa ve gerekliyse, istemci doğrudan (P2P) başarısız olduğunda relay'i kullanacaktır. Daha sonra istemciyi, host üzerinde çalışan bir RustDesk ajanını uzaktan kontrol etmek için yapılandırabilir veya RustDesk'i mevcut bir VNC hizmetine bağlanan bir broker olarak kullanabilirsiniz (bunun için genellikle hostta RustDesk ajanını çalıştırırsınız; ajan X11VNC oturumuna yönlendirebilir).

Docker yerine systemd alternatifi

Docker kullanmak istemiyorsanız, projenin belgelerini takip ederek rustdesk-server ikililerini derleyin ve bunları hbbs ve hbbr için systemd servisleri olarak kurun. Paketleme sürüme göre değişir; Docker yaklaşımı tekrarlanabilir bir sunucu çalıştırmanın en hızlı yoludur.

Güvenlik, NAT geçişi ve port açmaktan kaçınma zamanları

Desktop portlarını doğrudan açmaktan kaçınmak için iki yüksek seviyeli yaklaşım:

  1. VNC/RDP'yi localhost'a bağlı tutun; hosta ulaşmak için SSH/VPN zorunlu kılın. Bu, tek yöneticili kurulumlar için en basit ve en denetlenebilir seçenektir.
  2. Kendi kendine barındırılan bir relay/rendezvous (RustDesk) çalıştırın ve TLS + kimlik doğrulama kullanın. Bu, hosttaki açık portları azaltır ancak relay sunucularını çalıştırmayı ve güvenli hale getirmeyi gerektirir.

Güvenlik duvarı parçacıkları (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

Pratik güvenlik kontrol listesi:

  • VNC veya RustDesk ajan hesabı için güçlü kimlik doğrulama kullanın.
  • Sunucu anahtarlarını (RustDesk HBBS key) döndürün veya koruyun ve imajları güncel tutun.
  • Port taramalarını ve başarısız oturum açmaları bildirecek IDS/izleme kullanın.
  • Şifreli masaüstü oturumları gerekiyorsa, relay önünde bir ters proxy (Nginx/Caddy) ile TLS sonlandırın ve TLS 1.2+ ile güçlü şifreleri zorunlu kılın.

Operasyonel ipuçları, sorun giderme ve bakım

Yaygın sorunlar ve çözümleri:

  • VNC üzerinden masaüstü görünmüyor: X ekranının :0 olduğunu doğrulayın (ps aux | grep X) ve x11vnc'nin doğru -auth dosyasını kullandığından emin olun.
  • Servis önyüklemede başlamıyor: systemd WantedBy değerini graphical.target olarak ayarlayın ve görüntü yöneticisinin x11vnc'den önce başladığını doğrulayın.
  • RustDesk istemcileri sunucuya ulaşamıyor: DNS ve güvenlik duvarını doğrulayın; telnet/IP araçlarıyla test edin ve container loglarını inceleyin (docker-compose logs -f).
  • Performans kötü: x11vnc için -noxdamage etkinleştirin (bazı iş yüklerinde yırtılmayı azaltır, CPU'yu düşürebilir) ve mümkünse istemcide sıkıştırma/encoding ayarlarını ayarlamayı düşünün.

Bakım playbook'u:

  • Haftalık olarak OS güvenlik güncellemelerini uygulayın. Debian/Ubuntu üzerinde unattended-upgrades ile küçük yamaları otomatikleştirebilirsiniz.
  • Güvenlik düzeltmeleri için RustDesk veya x11vnc upstream depolarını takip edin. Docker imajları kullanıyorsanız, imaj yenileme ve yeniden dağıtım pipeline'ı planlayın.
  • Yapılandırma dosyalarını ve varsa TLS sertifikalarını yedekleyin; HBBS anahtarlarını mümkünse bir secrets manager'da saklayın.

Ne zaman ticari bir araç veya RDP daha iyi olabilir

Açık arazi takasları:

  • TeamViewer / AnyDesk: Teknik olmayan kullanıcılar için kullanım kolaylığı, evrensel NAT geçişi ve iyi mobil uygulamalar konusunda öndedirler. Yüzlerce teknik olmayan uç nokta için anlık, sıfır-işletim desteği gerekiyorsa, ticari bir SaaS maliyete değebilir. Özellikle karşılaştırma için rustdesk-vs-anydesk sayfasına bakın.
  • RDP (Microsoft Remote Desktop): Windows sunucularında ve masaüstlerinde, yerel RDP genellikle daha iyi performans ve özellikler (panoya kopyala-yapıştır, dosya transferi, ses) sunar. Ancak RDP VPN veya bastion arkasında değilse daha yüksek riskli bir saldırı yüzeyi açar.

Birincil hedefiniz kendi kendine barındırma ve gizlilikse — ve biraz daha başlangıç kurulumu ve devam eden bakım kabul edilebilir ise — X11VNC + RustDesk sunucu kombinasyonu güçlü ve pratik bir yaklaşımdır.

İleri okuma ve dahili kaynaklar

Port yönlendirmeden tamamen kaçınmak istiyorsanız, kılavuzumuza bakın: Remote desktop without port forwarding. Kendi çözümünüzü devreye almanın üst düzey bir görünümü için Self-hosted remote desktop guide sayfasına bakın. Güvenlik sertleştirme en iyi uygulamaları için Remote desktop security içeriğini kontrol edin.

Son olarak, Tenvo açık, kendi kendine barındırılan uzaktan masaüstü araçlarına odaklanır — kendi kendine barındırma ve platformlar arası kullanım için tasarlanmış alternatif bir istemci/sunucu istiyorsanız, başlamak için indirmeler veya fiyatlandırma sayfalarımıza bakın: /download ve /pricing. Benzer dağıtım desenlerini diğer yazılarda da açıklıyoruz ve örnekleri güncel tutuyoruz.

Belirli bir dağıtım, görüntü yöneticisi veya belirli bir ortam için systemd başlangıcını ayarlamak isterseniz, bana dağıtımı ve görüntü yöneticisini söyleyin (örn. Ubuntu 22.04 ile GDM) ve size uyarlanmış bir unit dosyası ve auth-path komutları veririm. Hazır olduğunuzda, Tenvo'yu indirip yukarıda tarif edilen yığını kurmayı deneyin — başlayın: /download.

Tenvo edinin

Kendiniz denemeye hazır mısınız?

30 cihaza kadar ücretsiz, kredi kartı gerekmiyor. İki dakikada kurulur ve bağlanır.