GuiderFöretag och övervakningRustDesk för fjärrskrivbord

Kör en egen RustDesk-server för fjärrskrivbord

RustDesk-servern med öppen källkod på Debian 13 i Podman utan root, så att dina fjärrskrivbords- och supportsessioner förmedlas och reläas av din egen server i Sverige, och bara klienter med din nyckel kan ansluta genom den.

Testad på RustDesk Server 1.1.16 och RustDesk 1.5.0 på Debian 13 (trixie) på en server hos Melonslab Uppdaterad 2 oktober 2026

Rekommenderad server för guiden

VC-S Micro · 2 vCPU · 8 GB Minne · 250 GB Lagring

Månadsvis, ingen bindningstid 7 dagars öppet köp

90 kr/mån

Beställ nu
På den här sidan

Det här sätter du upp

RustDesk är en app för fjärrskrivbord, som används ungefär som TeamViewer eller AnyDesk: du ger någon ditt ID och ett lösenord, och de kan se och styra din skärm. Från början hittar apparna varandra via RustDesks publika servrar. Med en egen server flyttar det jobbet till en maskin som du styr över, vilket passar ett mindre företag, eller den som ger IT-support till kollegor och kunder.

Servern har två delar, som körs som två containrar under en egen användare som heter rustdesk:

  • hbbs, ID-servern, håller reda på vilken enhet som har vilket ID och hjälper två enheter att ansluta direkt till varandra.
  • hbbr, reläservern, för vidare sessionen när de två enheterna inte når varandra direkt, vilket är vanligt bakom företagsbrandväggar.

RustDesks appar och server utvecklas av Purslane Tech Pte. Ltd., ett företag i Singapore, som öppen källkod på GitHub. Servern i den här guiden har öppen källkod under GNU Affero General Public License (AGPL-3.0), och det har apparna också. RustDesk säljer dessutom en stängd Server Pro med webbkonsol, användarkonton, adressböcker och granskningsloggar. Den här guiden använder den kostnadsfria servern.

Vad som fortfarande kontaktar RustDesk och andra när apparna använder din server tas upp i steg 8. Kort sagt: servern letar efter nya versioner en gång om dagen, vilket steg 3 stoppar, apparna letar efter uppdateringar när de öppnas, vilket du kan stänga av, och apparna frågar publika STUN-servrar om sin egen adress.

Varje steg nedan har körts på en nyinstallerad VC-P Alloy hos Melonslab (2 vCPU, 8 GB) med Debian 13:

  • Två RustDesk 1.5.0-appar för Linux, på en annan adress, registrerade sina ID:n hos servern. Den ena styrde den andras skärm via reläservern, och sessionen var krypterad hela vägen mellan apparna, vilket en grön sköld visade.
  • En app utan serverns nyckel nekades med Key mismatch, och servern loggade försöket.
  • Portarna svarade utifrån över IPv4, och de portar servern inte behöver förblev stängda.
  • Med stegen i den här guiden tog servern ingen kontakt med RustDesk, och inte heller en app när dess uppdateringskontroll var avstängd.
  • Nyckeln, ID:na och sessionerna fungerade igen efter en omstart av servern och efter en återställning från säkerhetskopian.

hbbs och hbbr använde tillsammans omkring 14 MB minne under en session, och pasta, som för deras nätverkstrafik, omkring 28 MB.

Innan du börjar

Du behöver:

  • en server uppsatt som i Podman-guiden, med ufw från säkerhetsguiden. RustDesk behöver inte Caddy;
  • ett DNS-namn för servern, till exempel desk.example.com, med en A-post för dess IPv4-adress och en AAAA-post för dess IPv6-adress;
  • RustDesk-appen, från rustdesk.com eller GitHub, på de enheter du vill nå och på dem du arbetar från.

Exemplen använder desk.example.com som serverns namn och 203.0.113.10 som dess IPv4-adress. Byt ut dem genomgående.

1. Öppna portarna

RustDesk använder egna portar, som går direkt till containrarna:

PortAnvänds avTill
21115/tcphbbsatt ta reda på vilken sorts nätverk en app sitter bakom
21116/tcp och 21116/udphbbsatt registrera ID:n och sätta upp anslutningar
21117/tcphbbrreläade sessioner

Som root:

ufw allow 21115:21117/tcp
ufw allow 21116/udp

ufw lägger till varje regel för både IPv4 och IPv6. Servern lyssnar också på 21118 och 21119, för RustDesks webbklient. Apparna för datorer och telefoner använder dem inte, så de förblir stängda. Port 21114 hör till webbkonsolen i Server Pro: apparna försöker nå den en gång i minuten ändå, och journalctl -k visar försöken som rader med [UFW BLOCK]. Det är väntat.

2. Skapa användaren

useradd -m -s /bin/bash rustdesk
loginctl enable-linger rustdesk
machinectl shell rustdesk@

Allt från och med nu körs som rustdesk.

3. Definiera podden

hbbs och hbbr delar en pod, som publicerar portarna från steg 1, och en katalog för serverns nyckel och databas:

mkdir -p ~/data ~/.config/containers/systemd

Skapa ~/.config/containers/systemd/rustdesk.pod:

[Pod]
PodName=rustdesk
PublishPort=21115-21117:21115-21117/tcp
PublishPort=21116:21116/udp
AddHost=api.rustdesk.com:127.0.0.1

Portarna publiceras på alla adresser, för IPv4 och IPv6. Podden använder Podmans standardnätverk, pasta, som för vidare varje apps riktiga IP-adress. hbbs behöver den för att koppla ihop två appar direkt. AddHost stoppar den dagliga versionskontrollen i steg 8.

4. Definiera containrarna

Skapa ~/.config/containers/systemd/hbbs.container:

[Unit]
Description=RustDesk ID server (hbbs)

[Container]
ContainerName=hbbs
Pod=rustdesk.pod
Image=docker.io/rustdesk/rustdesk-server:1
Exec=hbbs
Volume=%h/data:/root
AutoUpdate=registry

[Service]
Restart=always

[Install]
WantedBy=default.target

Och ~/.config/containers/systemd/hbbr.container:

[Unit]
Description=RustDesk relay server (hbbr)
After=hbbs.service

[Container]
ContainerName=hbbr
Pod=rustdesk.pod
Image=docker.io/rustdesk/rustdesk-server:1
Exec=hbbr -k _
Volume=%h/data:/root
AutoUpdate=registry

[Service]
Restart=always

[Install]
WantedBy=default.target

Taggen 1 följer varje 1.x-version av servern. Starta den:

systemctl --user daemon-reload
systemctl --user start rustdesk-pod
podman logs hbbs

Loggen börjar med Private/public key written to id_ed25519/id_ed25519.pub och en rad med Key: och den publika nyckeln. Längre ner står Listening on tcp/udp :21116.

5. Nyckelparet

Första gången hbbs startar skapar den ett nyckelpar i ~/data:

  • id_ed25519 är den privata nyckeln. Med den visar servern för apparna att den är din.
  • id_ed25519.pub är den publika nyckeln, som varje app behöver. Skriv ut den:
cat ~/data/id_ed25519.pub

hbbs nekar anslutningar från appar som inte har den publika nyckeln, utan att du behöver ange något: en app utan den får Key mismatch, och loggen visar Authentication failed ... invalid key. -k _ gör att hbbr läser samma nyckel och kontrollerar den också. Utan den reläar hbbr, enligt sin källkod, åt alla som når den.

Två saker att veta om nyckeln:

  • Den är en publik nyckel, inte ett lösenord. Alla som använder din server har den, och den som kommer över den kan reläa sessioner genom din server. Ge den bara till dina egna enheter.
  • En app utan nyckeln kan ändå registrera sitt ID hos din server. Det den inte kan är att ansluta genom den.

Försvinner den privata nyckeln skapar hbbs ett nytt par, och varje app behöver den nya publika nyckeln. Steg 9 säkerhetskopierar den.

6. Ställ in apparna

I RustDesk-appen öppnar du Settings, sedan Network, väljer Unlock network settings och sedan ID/Relay server. Fyll i:

  • ID server: desk.example.com;
  • Key: den publika nyckeln från steg 5.

Lämna Relay server och API server tomma. Appen använder samma namn för reläservern, vilket appens logg bekräftade med relay_server: desk.example.com:21117, och API-servern finns bara i Server Pro.

Gör det innan du använder appen: tills den har din server registrerar sig en ny app hos RustDesks publika server. Vår gjorde det inom några sekunder efter första starten.

På Linux kan du ställa in detsamma från kommandoraden, som root, när RustDesk är installerat. Den sista raden sätter ett lösenord för obevakad åtkomst, så att du kan ansluta utan att någon godkänner på andra sidan:

rustdesk --option custom-rendezvous-server desk.example.com
rustdesk --option key 'PUBLIC_KEY'
rustdesk --password 'A-LONG-PASSWORD'
rustdesk --get-id

Det sista kommandot skriver ut enhetens ID. Vi testade inte apparna för Windows, macOS, Android eller iOS. RustDesk beskriver samma inställningar under ID/Relay server för dem, och Export Server Config och Import Server Config under Network kopierar inställningarna från en app till en annan.

För att ansluta skriver du den andra enhetens ID under Control Remote Desktop, väljer Connect och anger dess lösenord. Fliken visar en grön sköld när sessionen är krypterad hela vägen mellan apparna.

7. Vad din server sparar

hbbs sparar en rad för varje ID som registrerar sig, i SQLite-databasen ~/data/db_v2.sqlite3: ID:t, en enhetsidentifierare, enhetens publika nyckel, när den först registrerade sig och den IP-adress den senast använde. Den sparar ingen historik över sessioner.

hbbs och hbbr loggar till journalen för användaren rustdesk:

journalctl --user -u hbbs -u hbbr
  • hbbs loggar en rad med ID, IP-adress och port när en enhet registrerar sig eller byter nyckel, och en rad med IP-adress och ID när en app nekas för fel nyckel.
  • hbbr loggar varje reläad session, med IP-adresserna för båda sidor men inte deras ID:n. Sessionen den för vidare är krypterad mellan de två apparna.

IP-adresser som kan kopplas till en person är personuppgifter enligt GDPR. Journalen sparar dem tills den roteras.

8. Vad RustDesk och andra fortfarande ser

Vi övervakade nätverkstrafiken från servern och från två appar som använde den:

  • Servern frågar api.rustdesk.com efter senaste versionen när den startar och en gång om dagen. Den skickar operativsystemet, dess version, processortypen och ett enhets-ID, en hash av serverns hårdvara. Tjänsten kördes hos Hetzner i Tyskland när vi testade. Servern skriver bara new version is available i loggen och uppdaterar ingenting. Raden AddHost i steg 3 pekar namnet mot containern själv: med den tog servern ingen kontakt med RustDesk och fungerade som vanligt.
  • Apparna skickar samma slags versionskontroll till api.rustdesk.com när deras huvudfönster öppnas. Stäng av Check for software update on startup under Settings och sedan General för att stoppa den. När den var avstängd såg vi ingen kontakt med RustDesk.
  • Apparna frågar också fyra publika STUN-servrar, från Cloudflare, Google, Nextcloud och Antisip, efter sin egen publika IPv6-adress när de startar. De tjänsterna ser enhetens IP-adress. Vi hittade ingen inställning som stänger av det.
  • Med din server inställd såg vi ingen kontakt från apparna med RustDesks publika ID- och reläservrar. Sessionerna går direkt mellan enheterna eller via din hbbr.

RustDesks integritetspolicy beskriver vad företaget samlar in via sina webbplatser och publika servrar, och nämner leverantörer som behandlar data i USA och andra länder.

9. Säkerhetskopiera

De två filer som spelar roll är den privata nyckeln och databasen. Som rustdesk stoppar du podden en kort stund, så att databasen skrivs klart, och packar katalogen:

mkdir -p ~/backup
systemctl --user stop rustdesk-pod
tar -czf ~/backup/rustdesk-$(date +%F).tar.gz -C ~ data
systemctl --user start rustdesk-pod

Pågående sessioner avbryts när podden stoppas, och apparna ansluter till servern igen av sig själva när den startar. Kopiera ~/backup till en annan maskin och förvara den säkert: med den privata nyckeln kan vem som helst köra en server som dina appar litar på. För att återställa stoppar du podden, packar upp filen i hemkatalogen med tar -xzf ~/backup/rustdesk-DATUM.tar.gz -C ~ och startar podden. Loggen visar samma Key: som tidigare, och apparna ansluter igen utan någon ändring.

10. Håll den uppdaterad

Slå på Podmans dagliga uppdateringar:

systemctl --user enable --now podman-auto-update.timer
podman auto-update --dry-run

Det sista kommandot listar hbbs och hbbr och visar om en uppdatering väntar. Podman startar om podden när avbilden ändras. Håll apparna uppdaterade också. Om du stängde av deras uppdateringskontroll i steg 8 följer du versionerna på GitHub.

Felsökning

Appen visar Key mismatch. Appens Key skiljer sig från ~/data/id_ed25519.pub eller är tom. Kopiera nyckeln igen, utan mellanslag.

systemctl --user restart hbbs hbbr misslyckas med "A dependency job for hbbr.service failed". När båda containrarna startas om samtidigt stoppas deras pod. Starta om podden i stället, med systemctl --user restart rustdesk-pod.

Apparna registrerar sig, men loggen visar rader med [UFW BLOCK] och port 21114. Apparna letar efter webbkonsolen i Server Pro på den porten. Den kostnadsfria servern har ingen, så inget saknas: låt porten vara stängd.

Appen visar "Failed to connect to desk.example.com:21116: Please try later". Appen når inte hbbs. Kontrollera att podman ps listar hbbs och hbbr, att portarna från steg 1 är öppna och att appens ID server är serverns namn.

Kör det på din egen server

VC-S Micro

90 kr/mån

vCPU
2
Minne
8 GB
Lagring
250 GB
Trafik
10 TB
Standard
HDD · RAID 10
  • Full root-åtkomst
  • Nativt /64 IPv6
  • RAID-skyddad lagring
  • Malmö, Sverige
  • Månadsvis, ingen bindningstid
  • 7 dagars öppet köp
Alla guider