# Installation

# Docker installtion

### Beschreibung:

RustDesk installation via Docker

### Vorrausetzung

docker-compose

```
apt install docker-compose
```

Ports die in der Firewall / per NAT zur Verfügung gestellt werden müssen

TCP (**21115, 21116, 21117, 21118, 21119**)  
UDP (**21116**)

In der Community OSS version gibt es keinen Webclient

zu empfehlen is es sich eine Subdomain hilfe.example.com als Beispiel anzulegen, anstatt sich die IP zu merken.

### Installtion

Zuert legen wir uns ein Verzeichnis an z.b

```
mkdir /root/rustdesk/data
cd /root/rustdesk
```

Darin legen wir uns eine .env Datei an.

```
nano /root/rustdesk/.env
```

Inhalt

```
DATA_PATH=/root/rustdesk/data
```

Nun die Composer File

```
nano /root/rustdata/docker-compose.yml
```

Inhalt

```
 version: '3'
          services:
            hbbs:
              container_name: hbbs
              image: rustdesk/rustdesk-server:latest
              environment:
                - DATA_PATH=${DATA_PATH}
              command: hbbs
              volumes:
                - ${DATA_PATH}:/root
              network_mode: "host"
              depends_on:
                - hbbr
              restart: unless-stopped
            hbbr:
              container_name: hbbr
              image: rustdesk/rustdesk-server:latest
              command: hbbr
              volumes:
                - ${DATA_PATH}:/root
              network_mode: "host"
              restart: unless-stopped

```

mit docker-compose up starten wir das ganze

```
docker-compose up -d
```

API KEY anzeigen, dieser wird später im Client benötigt

```
cat /root/rustdesk/daten/id_ed25519.pub
```

Diesen Schlüssel brauchen wir später, aber auch nur wenn wir den Pro Server installiert haben, sonst ist der überflüssig.  
Am besten in einem Paswort Safe speichern

### Ansible Script das die oberen Schritte ausführt  


Die host.ini

Inhalt:

```
192.168.178.122 ansible_user=root rustdesk_data_path=/root/rustdesk/daten
```

Nun das Playbook

rustdesk.yml

Inhalt:

```
---
- name: Deploy RustDesk via Docker Compose
  hosts: all
  become: yes
  vars:
    rustdesk_data_path: "{{ hostvars[inventory_hostname].rustdesk_data_path }}"

  tasks:
    - name: Create RustDesk data directory
      file:
        path: "{{ rustdesk_data_path }}"
        state: directory

    - name: Create .env file for RustDesk
      copy:
        dest: "{{ rustdesk_data_path }}/.env"
        content: |
          DATA_PATH={{ rustdesk_data_path }}

    - name: Create Docker Compose file for RustDesk
      copy:
        dest: "{{ rustdesk_data_path }}/docker-compose.yml"
        content: |
          version: '3'
          services:
            hbbs:
              container_name: hbbs
              image: rustdesk/rustdesk-server:latest
              environment:
                - DATA_PATH=${DATA_PATH}
              command: hbbs
              volumes:
                - ${DATA_PATH}:/root
              network_mode: "host"
              depends_on:
                - hbbr
              restart: unless-stopped
            hbbr:
              container_name: hbbr
              image: rustdesk/rustdesk-server:latest
              command: hbbr
              volumes:
                - ${DATA_PATH}:/root
              network_mode: "host"
              restart: unless-stopped

    - name: Install Docker and Docker Compose
      apt:
        name:
          - docker
          - docker-compose
        state: latest
      when: ansible_os_family == "Debian"

    - name: Start and enable RustDesk Docker container
      docker_compose:
        project_src: "{{ rustdesk_data_path }}"
        state: present
        restarted: yes

    - name: Wait for 60 seconds for services to start
      pause:
        seconds: 60

    - name: hole Inhalt von {{ rustdesk_data_path }}/id_ed25519.pub
      command: cat {{ rustdesk_data_path }}/id_ed25519.pub
      register: file_content

    - name: zeige API KEY
      debug:
        msg: "{{ file_content.stdout }}"
```

nachdem die host.ini angepasst wurde kann mit

```
ansible-playbook -i host.ini rustdesk.yml
```

rustdesk ausgerollt werden.  
Am ende des Scriptes wird der API KEy ausgeben.  
  
Diesen Schlüssel brauchen wir später, aber auch nur wenn wir den Pro Server installiert haben, sonst ist der überflüssig.  
Am besten in einem Paswort Safe speichern.

# Client einrichten

### Beschreibung:

Nun da der Server läuft müssen wir den Client einrichten.

### Installation

Dazu laden wir den den entsprechenden Clint für unser Betriebssystem von

[https://rustdesk.com/docs/en/client/](https://rustdesk.com/docs/en/client/)

### Konfiguration

Nach dem ersten Start wäre der Client mit Public servern schon startklar, allerdings sind die verbindungen langsam und gehen extern. Ob der Client Public server benutzt sieht man an dem text für eine schnellere Verbindung, richten sie ihren eigenen Server ein.

[![Auswahl_1148.png](https://wiki.hacker-net.de/uploads/images/gallery/2024-01/scaled-1680-/NQDuG0VoShCVFn6A-auswahl-1148.png)](https://wiki.hacker-net.de/uploads/images/gallery/2024-01/NQDuG0VoShCVFn6A-auswahl-1148.png)

Wenn der Client gestartet ist dann unter Einstellungen Netzwerk gehen.  
Dort bei ID Server die subdomain eintragen.  
Die anderen Felder können bei der OSS Version leer gelassen werden.  
beim Pro Server müssen die anderen Felder auch angebenen werden.  
Dann auf Anwenden klicken

[![Auswahl_1147.png](https://wiki.hacker-net.de/uploads/images/gallery/2024-01/scaled-1680-/yXDXas7fH14TcvoH-auswahl-1147.png)](https://wiki.hacker-net.de/uploads/images/gallery/2024-01/yXDXas7fH14TcvoH-auswahl-1147.png)

Einstellungen nur für Pro Server

Da muss noch der Key mit angeben werden

[![Auswahl_1146.png](https://wiki.hacker-net.de/uploads/images/gallery/2024-01/scaled-1680-/nU7w7imZcGA2Gk67-auswahl-1146.png)](https://wiki.hacker-net.de/uploads/images/gallery/2024-01/nU7w7imZcGA2Gk67-auswahl-1146.png)

Wenn man jetzt wieder auf Startseite klickt steht unten bereit, der Text ist weg.

[![Auswahl_1149.png](https://wiki.hacker-net.de/uploads/images/gallery/2024-01/scaled-1680-/jgwccj2J2DZdrEEl-auswahl-1149.png)](https://wiki.hacker-net.de/uploads/images/gallery/2024-01/jgwccj2J2DZdrEEl-auswahl-1149.png)

hat man falsche domain angeben oder ist nicht erreichbar gibts diesen fehler.  
Prüfen ob domain richtig geschrieben ob der Server über alle Ports erreichbar ist und der Server läuft

[![Auswahl_1150.png](https://wiki.hacker-net.de/uploads/images/gallery/2024-01/scaled-1680-/foQIjO6V2iWMppR2-auswahl-1150.png)](https://wiki.hacker-net.de/uploads/images/gallery/2024-01/foQIjO6V2iWMppR2-auswahl-1150.png)