Instalare Rustdesk (alternativa Teamviewer gratis fara limitari si fara reclame)

=====================

In locatia unde instalezi rustdesk server(cu docker) trebuie sa ai ip public si un DNS. Ex: example.com
Se forwardeaza din router (sau security group daca e vps in cloud) porturile default sau porturile custom catre linuxul unde va rula rustdesk:
-default: SERVER: 21116 tcp+udp,21115 tcp si RELAY: 21117 tcp
-custom: SERVER: 8443 tcp+udp,5938 tcp si RELAY: 8080 tcp(se schimba listening la server doua porturi si la relay un port)
* In anumite situatii se preteaza mai bine niste porturi mai des utilizate in general, de aceea eu as recomanda varianta custom.
  Eu am ales 8443, 5938 si 8080 dar se pot alege orice alte porturi, orice e mai comun decat porturile lor default.
  Teamviewer de ex foloseste 5938, 80 si 443, daca nu aveti vreun server web e chiar recomandat.

* DIN DOCUMENTATIE: -By default, hbbs listens on 21115 (TCP) and 21116 (TCP/UDP), 21118 (TCP), and hbbr listens on 21117 (TCP), 21119 (TCP). Be sure to open these ports in the firewall. Please note that 21116 should be enabled both for TCP and UDP. 21115 is used for the NAT type test, 21116/UDP is used for the ID registration and heartbeat service, 21116/TCP is used for TCP hole punching and connection service, 21117 is used for the Relay services, and 21118 and 21119 are used to support web clients. If you do not need web client (21118, 21119) support, the corresponding ports can be disabled. *
* 21118 si 21119 sunt pt un client web care nu ma intereseaza deci nu folosim

Eu am pus totul cu root, recomandat este sa se foloseasca totusi un user separat.
Se da allow din firewall pe masina la aceste porturi (iptables, ufw, depinde ce ai). Deci porturi default sau custom.
Exemplu basic iptables pt custom ports, pt iptables preinstalat pe masinile de la oracle cloud:
$ iptables -A INPUT -p tcp --dport 8443 -j ACCEPT
$ iptables -A INPUT -p udp --dport 8443 -j ACCEPT
$ iptables -A INPUT -p tcp --dport 5938 -j ACCEPT
$ iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
$ service netfilter-persistent start
$ systemctl status netfilter-persistent
$ netfilter-persistent save

Se instaleaza docker pe linuxul respectiv unde pui rustdesk:
$ apt install docker.io -y
(deci daca ai ubuntu/debian pachetul este docker.io, daca ai fedora/centos exista repo special pt docker-ce)
Se face o retea speciala pt rustdesk si ulterior se verifica:
$ docker network create --driver=bridge --subnet=192.168.10.0/24 rust-test
$ docker network ls

Se face folder /root/rustdesk si in el se pune totul
$ mkdir /root/rustdesk
$ cd /root/rustdesk
$ mkdir hbbs bhhr

Fisierul start.sh in doua variante: default si custom:
$ nano start.sh

docker run -itd --network=rust-test \
-p 21117:21117 --name hbbr --memory="0.5g" --restart=always \
-v /root/rustdesk/hbbr:/root \
rustdesk/rustdesk-server:latest hbbr

docker run -itd --network=rust-test \
-p 21115:21115 -p 21116:21116 -p 21116:21116/udp --link hbbr --name hbbs --memory="0.5g" \
--restart=always \
-v /root/rustdesk/hbbs:/root \
rustdesk/rustdesk-server:latest hbbs -r example.com:21117

$ nano start.sh

docker run -itd --network=rust-test \
-p 8080:21117 --name hbbr --memory="0.5g" --restart=always \
-v /root/rustdesk/hbbr:/root \
rustdesk/rustdesk-server:latest hbbr

docker run -itd --network=rust-test \
-p 5938:21115 -p 8443:21116 -p 8443:21116/udp --link hbbr --name hbbs --memory="0.5g" \
--restart=always \
-v /root/rustdesk/hbbs:/root \
rustdesk/rustdesk-server:latest hbbs -r example.com:8080
* Mare atentie la sfarsitul celei de-a doua linii (sunt doar 2 linii docker run) sa inlocuiesti example.com cu ce domeniu ai tu.
* Observati aici in start.sh ca se schimba porturile expuse nu si porturile din interiorul containerelor care raman :21115, :21116 si :21117 indiferent de situatie.
* serverul ruleaza pe doua porturi, al doilea port 21115 (sau 5938 in cazul custom) este de asemeni obligatoriu.

$ nano stop.sh

docker stop hbbr
docker rm hbbr
docker stop hbbs
docker rm hbbs

Deci in /root/rustdesk trebuie sa ai folderele goale hbbs si hbbr si cele 2 fisiere start.sh si stop.sh
$ ls /root/rustdesk
hbbr hbbs start.sh stop.sh
Trebuie de asemeni sa faci fisierele .sh executabile cu comanda:
$ chmod +x start.sh stop.sh


Deci cd /root/rustdesk sa fii in folder dupa care prima data dai un restart la serviciu:
$ systemctl restart docker
Tragi imaginea:
$ docker pull rustdesk/rustdesk-server
Verifici ca ti-a adus imaginea:
$ docker images
Pornesti cele doua containere din imagine:
$ ./start.sh
Verifici containerele care ruleaza ca sa te asiguri ca au pornit:
$ docker ps
Afisezi keya publica din folderul hbbs si o iei cu copy paste:
$ cat hbbs/id_ed25519.pub
4myugv+7lBHJjbl1n+YQoSOWKZnCFFWb9ONR2eDNCpI=
F important este sa activezi criptarea, keya asta se pune doar la cel care se conecteaza la altcineva, nu si la destinatie.
Deci cel care are rustdesk la destinatie nu trebuie sa puna si keya pt conexiune criptata.
De cateva versiuni incoace, si pe windows si pe android esti obligat sa activezi encriptarea!

Verificare conectivitate a porturilor folosite, specificate la inceputul tutorialului:
- De pe acest _site
- De pe un linux din oricare alta locatie:
~ # nc -zv example.com 8443
~ # nc -zv example.com 8080
sau porturile default daca se merge pe varianta default:
~ # nc -zv example.com 21117
~ # nc -zv example.com 21116
Daca aceste porturi nu raspund nu merge nimic, trebuie revazute porturile forward si regulile iptables sau ufw de pe masina.

Utilizare

Descarci aplicatia pt windows de pe rustdesk.com unde este link catre github. luati versiunea x86_64.exe.
Aparent ultima versiune este cumva tot portable, pare sa aiba niste optiuni in plus.
Se descarca, se dezarhiveaza si se porneste cu Run as Administrator.
Ai locatiile A si B cu niste calculatoare cu windows si sa zicem ca te conectezi remote de pe A pe B:
Este imperativ sa se deschida cu drepturi de administrator mai ales in locatia B ca sa mearga cum trebuie pt ca nu recomand varianta instalata,
este de evitat vreun serviciu care ruleaza in background, prefer portable insa trebuie musai drepturi.
Exista si un notice care semnaleaza aspectul asta referitor la UAC, se testeaza si daca nu e ok se merge pe varianta cu installer.
Asadar deschizi aplicatia in ambele locatii cu drepturi de Administrator si setezi Server si Relay de la ID/Relay Server.
In locatia A se pune si keya ca in imagine. Am scris mai sus, in locatia B nu este necesar. Fara keye functioneaza perfect dar conexiunea Nu e criptata!



Apesi OK si va trebui sa scrie jos Daca se merge pe varianta default, in poza de deasupra NU mai trebuie specificate porturile!
Asigurati-va de asemeni ca serviciul este pornit:


ID Server ruleaza pe 8443 (tcp+udp) si 5938 (tcp) insa se specifica doar primul port care este tcp+udp, in cazul de fata 8443.
In ambele locatii vei primi un ID exact ca la Teamviewer, se comunica ID-ul locatiei B catre locatia A de unde te conectezi pe baza acelui ID.
Eu intotdeauna ma conectez la destinatie cu confirmare, deci cu acordul celui care necesita asistenta, posibil sa mearga si cu parola deci fara confirmare, nu am testat.
In ultima versiune au introdus optiunea Accept and Elevate, fata de Accept obisnuit. In felul asta cel care se conecteaza va avea full acces (recomandat).
De aceea folosesc varianta portable ca sa nu instaleze nimic in sistem, sa nu aiba serviciu sau ceva care ruleaza permanent in background.
Aplicatia exista si pe Android, se instaleaza gratis din github si de jos drepta de la Settings similar setezi ID/Relay Server.

Mentenanta

La aproximativ o luna de zile mai apare o imagine mai noua rustdesk si e bine sa faci update.
Ca sa tragi imaginea noua dai aceeasi comanda si vezi clar daca aduce imagine noua sau nu:
$ docker pull rustdesk/rustdesk-server
Listezi imaginile existente unde iti va arata imaginea noua updatata la zi cu TAG latest plus imaginea veche cu TAG < none >:
$ docker images|grep rustdesk
Vezi id-ul imaginii vechi cu TAG < none > si o stergi dar trebuie oprite containerele mai intai:
$ ./stop.sh
$ docker rmi IMAGE_ID
Listezi imaginile si in momentul asta o ai doar pe ultima deci :latest
$ docker images|grep rustdesk
Pornesti containerele la loc:
$ ./start.sh
Verifici din nou containerele care ruleaza ca sa te asiguri ca au pornit:
$ docker ps

Bonus arm

La oracle cloud de peste un an de zile se da gratis o masina cu 4 core si 24 Gb RAM!
Ca sa functioneze, singura diferenta este imaginea, in loc de TAG latest are TAG latest-arm64v8.
Se modifica in start.sh la ambele linii docker run tagul imaginii rustdesk/rustdesk-server:latest-arm64v8.

ID Server: example.com:8443
Relay Server: example.com:8080

Enjoy!

Last update 17 Sep 2023.