User Tools

Site Tools


computing:rustdesk

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
computing:rustdesk [2026/01/01 18:56] oemb1905computing:rustdesk [2026/01/02 04:26] (current) oemb1905
Line 12: Line 12:
 This tutorial is for Debian users who want to create a self-hosted RustDesk instance manually. This covers installing the relay server (hbbr), the signaling server (hbbs), and the gohttp server (for client downloads and/or configs). After installing these services, I go through how to setup each systemd unit and, additionally, cover how to drop the gohttp server behind a reverse proxy. This tutorial assumes you have a hardened VM and/or VPS ready with a LAMP stack in place. If not, please head to [[https://wiki.haacksnetworking.org/doku.php?id=computing:apachesurvival|Apache Survival]] first. If you are ready to go, let's start by configuring the firewall: This tutorial is for Debian users who want to create a self-hosted RustDesk instance manually. This covers installing the relay server (hbbr), the signaling server (hbbs), and the gohttp server (for client downloads and/or configs). After installing these services, I go through how to setup each systemd unit and, additionally, cover how to drop the gohttp server behind a reverse proxy. This tutorial assumes you have a hardened VM and/or VPS ready with a LAMP stack in place. If not, please head to [[https://wiki.haacksnetworking.org/doku.php?id=computing:apachesurvival|Apache Survival]] first. If you are ready to go, let's start by configuring the firewall:
  
-<code bash> +  sudo ufw allow 22/tcp 
-sudo ufw allow 22/tcp +  sudo ufw allow 80/tcp 
-sudo ufw allow 80/tcp +  sudo ufw allow 443/tcp 
-sudo ufw allow 443/tcp +  sudo ufw allow 21114:21119/tcp 
-sudo ufw allow 21114:21119/tcp +  sudo ufw allow 21116/udp 
-sudo ufw allow 21116/udp +  sudo ufw enable
-sudo ufw enable +
-</code>+
  
 Let's now download the latest version of rustdesk, unzip it, and then copy the binaries into the standard location inside ''/opt/rustdesk'': Let's now download the latest version of rustdesk, unzip it, and then copy the binaries into the standard location inside ''/opt/rustdesk'':
  
-<code bash> +  cd /tmp 
-cd /tmp +  wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.14/rustdesk-server-linux-amd64.zip 
-wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.14/rustdesk-server-linux-amd64.zip +  unzip rustdesk-server-linux-amd64.zip 
-unzip rustdesk-server-linux-amd64.zip +  sudo mkdir -p /opt/rustdesk /var/log/rustdesk 
-sudo mkdir -p /opt/rustdesk /var/log/rustdesk +  sudo cp amd64/hbbs amd64/hbbr amd64/rustdesk-utils /opt/rustdesk/ 
-sudo cp amd64/hbbs amd64/hbbr amd64/rustdesk-utils /opt/rustdesk/ +  sudo chmod +x /opt/rustdesk/hbbs /opt/rustdesk/hbbr /opt/rustdesk/rustdesk-utils
-sudo chmod +x /opt/rustdesk/hbbs /opt/rustdesk/hbbr /opt/rustdesk/rustdesk-utils +
-</code>+
  
 After the relay and signaling servers are installed and copied to the standard locations, we can download and install the gohttp server: After the relay and signaling servers are installed and copied to the standard locations, we can download and install the gohttp server:
  
-<code bash> +  sudo mkdir -p /opt/gohttp /var/log/gohttp 
-sudo mkdir -p /opt/gohttp /var/log/gohttp +  cd /tmp 
-cd /tmp +  wget https://github.com/codeskyblue/gohttpserver/releases/download/1.3.0/gohttpserver_1.3.0_linux_amd64.tar.gz 
-wget https://github.com/codeskyblue/gohttpserver/releases/download/1.3.0/gohttpserver_1.3.0_linux_amd64.tar.gz +  tar -xzf gohttpserver_1.3.0_linux_amd64.tar.gz 
-tar -xzf gohttpserver_1.3.0_linux_amd64.tar.gz +  sudo cp gohttpserver /opt/gohttp/ 
-sudo cp gohttpserver /opt/gohttp/ +  sudo chmod +x /opt/gohttp/gohttpserver
-sudo chmod +x /opt/gohttp/gohttpserver +
-</code>+
  
 We can now navigate to our dedicated rustdesk directory and generate our keypair: We can now navigate to our dedicated rustdesk directory and generate our keypair:
Line 118: Line 112:
 We can now enable all the units and start the services: We can now enable all the units and start the services:
  
-sudo systemctl daemon-reload +  sudo systemctl daemon-reload 
-sudo systemctl enable rustdesksignal rustdeskrelay gohttpserver +  sudo systemctl enable rustdesksignal rustdeskrelay gohttpserver 
-sudo systemctl start rustdesksignal rustdeskrelay gohttpserver +  sudo systemctl start rustdesksignal rustdeskrelay gohttpserver 
-sudo systemctl status rustdesksignal rustdeskrelay gohttpserver+  sudo systemctl status rustdesksignal rustdeskrelay gohttpserver
  
 We can now drop the gohttp server behind an apache reverse proxy. To do that, let's install certbot, cut a certificate, and enable the modules. To make things easier for yourself, open up ''/etc/apache2/sites-enabled/000-default.conf'' and uncomment and change ''ServerName'' to ''domain.com'' of your instance. Restart apache ''sudo systemctl restart apache2'' and then do the following: We can now drop the gohttp server behind an apache reverse proxy. To do that, let's install certbot, cut a certificate, and enable the modules. To make things easier for yourself, open up ''/etc/apache2/sites-enabled/000-default.conf'' and uncomment and change ''ServerName'' to ''domain.com'' of your instance. Restart apache ''sudo systemctl restart apache2'' and then do the following:
Line 221: Line 215:
 Check your configs with ''apache2ctl configtest'' and then restart the service ''sudo systemctl restart apache2''. Once everything is working properly, we can now switch to setting up clients. On each RustDesk client, you go to Settings > Network > Unlock and edit the following: Check your configs with ''apache2ctl configtest'' and then restart the service ''sudo systemctl restart apache2''. Once everything is working properly, we can now switch to setting up clients. On each RustDesk client, you go to Settings > Network > Unlock and edit the following:
  
-**ID Server**: hackingclub.org +  * **ID Server**: hackingclub.org 
-**Relay Server**: hackingclub.org +  **Relay Server**: hackingclub.org 
-**API Server**: https://hackingclub.org +  **API Server**: https://hackingclub.org 
-**Key**: API Key from above+  **Key**: API Key from above
  
 Here's an example of what this section looks like. Note that entering a value in API Server is moot - that's only supported by the premium/paid version. It does not hurt anything to add the value there, however. Here's an example of what this section looks like. Note that entering a value in API Server is moot - that's only supported by the premium/paid version. It does not hurt anything to add the value there, however.
Line 230: Line 224:
 {{ :computing:screenshot_from_2024-11-02_11-12-52.png?direct&800 |}} {{ :computing:screenshot_from_2024-11-02_11-12-52.png?direct&800 |}}
  
-Enter the same values on your primary workstation. Once that's done for your workstation and at least one client, you can then specify the ''ID'' your "Control Remote Desktop" section and you are all set. Of course, there are many settings inside RustDesk, such as "Always connect via relay" and also how you choose to configure the "Password", i.e., whether it is permanent or one-time. These are decisions that will be decided by your use-case, as with others, but these are two good areas to look at post-installation. For updates, we do the following:+Enter the same values on your primary workstation. Once that's done for your workstation and at least one client, you can then specify the ID your "Control Remote Desktop" section and you are all set. Of course, there are many settings inside RustDesk, such as "Always connect via relay" and also how you choose to configure the "Password", i.e., whether it is permanent or one-time. These are decisions that will be decided by your use-case, as with others, but these are two good areas to look at post-installation. For updates, we do the following:
  
-<code bash> +  sudo systemctl stop rustdesksignal rustdeskrelay gohttpserver 
-sudo systemctl stop rustdesksignal rustdeskrelay gohttpserver +  cd /tmp 
-cd /tmp +  wget https://github.com/rustdesk/rustdesk-server/releases/download/NEW_VERSION/rustdesk-server-linux-amd64.zip 
-wget https://github.com/rustdesk/rustdesk-server/releases/download/NEW_VERSION/rustdesk-server-linux-amd64.zip +  unzip -o rustdesk-server-linux-amd64.zip 
-unzip -o rustdesk-server-linux-amd64.zip +  sudo cp amd64/hbbs amd64/hbbr /opt/rustdesk/ 
-sudo cp amd64/hbbs amd64/hbbr /opt/rustdesk/ +  sudo chmod +x /opt/rustdesk/hbbs /opt/rustdesk/hbbr 
-sudo chmod +x /opt/rustdesk/hbbs /opt/rustdesk/hbbr +  sudo systemctl start rustdesksignal rustdeskrelay gohttpserver 
-sudo systemctl start rustdesksignal rustdeskrelay gohttpserver +  sudo systemctl status rustdesksignal rustdeskrelay gohttpserver
-sudo systemctl status rustdesksignal rustdeskrelay gohttpserver +
-</bash>+
  
 That's basically it. The new binaries are executed and controlled by the pre-established systemd units, so you merely replace the binaries and make them executable and you are good to go. If the gohttp server has been updated, similarly: That's basically it. The new binaries are executed and controlled by the pre-established systemd units, so you merely replace the binaries and make them executable and you are good to go. If the gohttp server has been updated, similarly:
  
-<code bash> +  sudo systemctl stop gohttpserver 
-sudo systemctl stop gohttpserver +  cd /tmp 
-cd /tmp +  wget https://github.com/codeskyblue/gohttpserver/releases/download/NEW_VERSION/gohttpserver_NEW_VERSION_linux_amd64.tar.gz 
-wget https://github.com/codeskyblue/gohttpserver/releases/download/NEW_VERSION/gohttpserver_NEW_VERSION_linux_amd64.tar.gz +  tar -xzf gohttpserver_NEW_VERSION_linux_amd64.tar.gz 
-tar -xzf gohttpserver_NEW_VERSION_linux_amd64.tar.gz +  sudo cp gohttpserver /opt/gohttp/ 
-sudo cp gohttpserver /opt/gohttp/ +  sudo chmod +x /opt/gohttp/gohttpserver 
-sudo chmod +x /opt/gohttp/gohttpserver +  sudo systemctl start gohttpserver 
-sudo systemctl start gohttpserver +  sudo systemctl status gohttpserver
-sudo systemctl status gohttpserver +
-</code>+
  
 The password is specified in the systemd unit, which remains unchanged. Just make sure to restart the service as directed above and it will invoke that same value, but on the updated go server. You should now be fully up to date. Hope this helps others wanting to avoid using the automated script / understand all the moving parts of the instance. Happy hacking! The password is specified in the systemd unit, which remains unchanged. Just make sure to restart the service as directed above and it will invoke that same value, but on the updated go server. You should now be fully up to date. Hope this helps others wanting to avoid using the automated script / understand all the moving parts of the instance. Happy hacking!
  
  --- //[[alerts@haacksnetworking.org|oemb1905]] 2026/01/01 18:24//  --- //[[alerts@haacksnetworking.org|oemb1905]] 2026/01/01 18:24//
computing/rustdesk.1767293810.txt.gz · Last modified: by oemb1905