Sign inSign up

junkerderprovinz/rustdesk

By junkerderprovinz

•Updated about 4 hours ago

Self-hosted RustDesk server for Unraid with web console, shared address book and web client.

Image
0

1.0K

junkerderprovinz/rustdesk repository overview

RustDesk

Build  Lint  Docker Pulls  Image Size  Arch  rustdesk-api  License: AGPL-3.0


Your own RustDesk server for Unraid, in one container. The ID server and the relay come with a web console, user accounts, an address book that follows you to every client and a web client in the browser. Devices can also change their ID, which the stock open-source server refuses. The buttons under the first row lead to RustDesk's own clients.

Install from Unraid's Community Applications   Install from the MOS Hub   Install from the ZimaOS and CasaOS store   Install from the umbrelOS community app store

Download the docker-compose file   Download the source archive


Download for WindowsDownload for Windows on ARM   Download for macOS on Intel or Apple silicon   Download for LinuxDownload for Linux on ARM


Get it on F-Droid   Download the Android app   Download on the App Store


A one-knight job: I build it, keep it running, work through the issues and add what people ask for, until nothing is missing. It is free, with no accounts, no telemetry, no ads and no paid tier. No asterisk anywhere. Nothing readable ever leaves your own walls. Forged on evenings and weekends, with heart and stubbornness.

If it has earned a place on your server or computer, toss a coin to your knight: it helps cover the costs and keeps the project alive. It also makes this knight's heart beat a little faster. Three ways below, whichever suits you.

Buy me a coffee   PayPal   Donate with crypto


⁠Table of Contents

  1. What it looks like⁠
  2. What it does⁠
  3. How it compares⁠
  4. Getting started⁠
  5. Connecting your devices⁠
  6. Changing a device's ID⁠
  7. Moving from another RustDesk server⁠
  8. What is inside⁠
  9. How AI is used here⁠
  10. Support this project⁠

⁠1. What it looks like

The devices page of the web console in a browser window at nas.local:21114, listing five devices
Every device that registered with your server, with its system, when it was last online and one click to connect.

The address book page of the web console, with four devices in My Address Book
The address book a user sees in every RustDesk client they log in to.


⁠2. What it does

  • hbbs hands out IDs and introduces your devices to each other. hbbr relays the session when two devices cannot reach each other directly. By default the server accepts encrypted connections only.
  • The web console on port 21114, at /_admin/, lists devices, users, groups and address books, keeps the connection and file transfer logs, and holds the server's settings.
  • You log in once in the RustDesk client and your address book is there on every device you use. Your own server keeps it.
  • The web client at /webclient/ opens a session from a browser on a machine without RustDesk, and you can share access with a guest through it.
  • A device can change its ID in the client. The server accepts the change when it comes from the same machine and the new ID is free.
  • On Unraid it is one container with two volumes, and every setting is in the template.

⁠3. How it compares

This imageich777 AIOOfficial serverRustDesk Server Pro
ID server and relay✅✅✅✅
Web console✅❌❌✅
Accounts and shared address book✅❌❌✅
Web client✅❌❌✅
Change a device's ID✅❌❌✅
Multi-archamd64 + arm64amd64amd64 + arm64 + armv7amd64 + arm64 + armv7
LicenceAGPL-3.0AGPL-3.0AGPL-3.0proprietary
Pricefreefreefreepaid subscription

The official server is rustdesk/rustdesk-server; ich777's all-in-one image is the one in Unraid's Community Applications.


⁠4. Getting started

Unraid: install RustDesk from Community Applications⁠ and fill in the address your clients use to reach the server (a DNS name or IP) in the four address fields.

Docker Compose: take compose.yaml⁠, replace rustdesk.example.com with your server's address and run docker compose up -d.

  • Synology: in Container Manager, create a project from the file (DSM 7.2 or newer).
  • Proxmox: run it in a VM or an LXC container that has Docker.
  • MOS: install RustDesk from the MOS Hub⁠ and fill in the four address fields.
  • ZimaOS and CasaOS: add the community store⁠ and install RustDesk with Custom Installation, where you fill in the four addresses.
  • umbrelOS: add the community app store⁠ and install RustDesk from it. The addresses point to your Umbrel by itself, and the API server for the clients is http://umbrel.local:35135.

On the first start the server creates its key pair in /data and the console creates the account admin and prints its password in the container log:

docker logs rustdesk 2>&1 | grep -i password

Log in at http://<server>:21114/_admin/, change the password, and the server is ready. If the line has scrolled away, set a new one:

docker exec rustdesk /app/apimain reset-admin-pwd <new password>

Ports: 21114 (console and web client), 21115 (NAT test), 21116 TCP and UDP (ID server), 21117 (relay), 21118 and 21119 (websocket variants for the web client). Forward 21115 to 21117 if devices outside your network should connect; the console does not need to be reachable from outside.


⁠5. Connecting your devices

Get the client from RustDesk's releases⁠, F-Droid⁠ or the App Store⁠, or with the buttons at the top. Then open Settings → Network → ID/Relay server and enter:

FieldValue
ID server<server>:21116
Relay server<server>:21117
API serverhttp://<server>:21114
Keythe content of /data/id_ed25519.pub

With the API server set, the client shows a login. Log in with a user from the console and your address book appears; it syncs to every device where you log in with the same user.


⁠6. Changing a device's ID

The client's Change ID works against this server. The server renames the device only when the request comes from the machine that registered the old ID, and only to an ID that is free and follows RustDesk's format (6 to 16 characters, starting with a letter). The stock open-source server answers the same request with "not supported".


⁠7. Moving from another RustDesk server

Your devices keep their IDs and trust the new server when it uses the same key pair. Stop the old container and copy id_ed25519, id_ed25519.pub and db_v2.sqlite3 from its data folder into this container's /data before the first start. The key the clients use stays the same, so nothing has to change on the devices.


⁠8. What is inside

The newer web client that older rustdesk-api images shipped as /webclient2 was removed upstream after a DMCA notice and is not included.


⁠9. How AI is used here

One knight builds this, and AI is one of the tools I work with, the same way I work with an editor or a compiler. It helps me write code and documentation and it checks my work, and that saves me a good many evenings. It does not make the decisions, though. I read and understand everything before it ships, and if something here breaks, that is on me and not on the tool.

You do not have to take my word for it. The code is open and every release note is written by hand. The issue tracker shows how problems actually get handled, including the ones I got wrong the first time. If you find something that is not right, open an issue and I will look at it.


⁠10. Support this project

Bugs, ideas or feature requests? Please open a GitHub issue⁠.

A one-knight job: I build it, keep it running, work through the issues and add what people ask for, until nothing is missing. It is free, with no accounts, no telemetry, no ads and no paid tier. No asterisk anywhere. Nothing readable ever leaves your own walls. Forged on evenings and weekends, with heart and stubbornness.

If it has earned a place on your server or computer, toss a coin to your knight: it helps cover the costs and keeps the project alive. It also makes this knight's heart beat a little faster. Three ways below, whichever suits you.

Buy me a coffee   PayPal   Donate with crypto


The packaging in this repository is AGPL-3.0. RustDesk server, rustdesk-api and s6-overlay keep their own licences; see NOTICE⁠. RustDesk is a trademark of its owners; this project is not affiliated with them.

Tag summary

Content type

Image

Digest

sha256:2e5d6b120…

Size

33.5 MB

Last updated

1 day ago

docker pull junkerderprovinz/rustdesk