Giter VIP home page Giter VIP logo

rustdesk-server's Introduction

ManuallyDockerS6-overlayKeypairDebianVariables
[Deutsch] | [Nederlands] | [繁體中文] | [简体中文]

RustDesk Server Program

build

Download

Manual

FAQ

Self-host your own RustDesk server, it is free and open source.

How to build manually

cargo build --release

Three executables will be generated in target/release.

  • hbbs - RustDesk ID/Rendezvous server
  • hbbr - RustDesk relay server
  • rustdesk-utils - RustDesk CLI utilities

You can find updated binaries on the releases page.

If you want extra features RustDesk Server Pro might suit you better.

If you want to develop your own server, rustdesk-server-demo might be a better and simpler start for you than this repo.

Docker images

Docker images are automatically generated and published on every github release. We have 2 kind of images.

Classic image

These images are build against ubuntu-20.04 with the only addition of the main binaries (hbbr and hbbs). They're available on Docker hub with these tags:

architecture image:tag
amd64 rustdesk/rustdesk-server:latest
arm64v8 rustdesk/rustdesk-server:latest-arm64v8

You can start these images directly with docker run with these commands:

docker run --name hbbs --net=host -v "$PWD/data:/root" -d rustdesk/rustdesk-server:latest hbbs -r <relay-server-ip[:port]> 
docker run --name hbbr --net=host -v "$PWD/data:/root" -d rustdesk/rustdesk-server:latest hbbr 

or without --net=host, but P2P direct connection can not work.

For systems using SELinux, replacing /root by /root:z is required for the containers to run correctly. Alternatively, SELinux container separation can be disabled completely adding the option --security-opt label=disable.

docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v "$PWD/data:/root" -d rustdesk/rustdesk-server:latest hbbs -r <relay-server-ip[:port]> 
docker run --name hbbr -p 21117:21117 -p 21119:21119 -v "$PWD/data:/root" -d rustdesk/rustdesk-server:latest hbbr 

The relay-server-ip parameter is the IP address (or dns name) of the server running these containers. The optional port parameter has to be used if you use a port different than 21117 for hbbr.

You can also use docker-compose, using this configuration as a template:

version: '3'

networks:
  rustdesk-net:
    external: false

services:
  hbbs:
    container_name: hbbs
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21118:21118
    image: rustdesk/rustdesk-server:latest
    command: hbbs -r rustdesk.example.com:21117
    volumes:
      - ./data:/root
    networks:
      - rustdesk-net
    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    container_name: hbbr
    ports:
      - 21117:21117
      - 21119:21119
    image: rustdesk/rustdesk-server:latest
    command: hbbr
    volumes:
      - ./data:/root
    networks:
      - rustdesk-net
    restart: unless-stopped

Edit line 16 to point to your relay server (the one listening on port 21117). You can also edit the volume lines (line 18 and line 33) if you need.

(docker-compose credit goes to @lukebarone and @QuiGonLeong)

Note that here, the rustdesk/rustdesk-server:latest in China may be replaced with the latest version number on dockerhub, such as rustdesk-server:1.1.10-3. Otherwise, the old version may be pulled due to image acceleration.

S6-overlay based images

These images are build against busybox:stable with the addition of the binaries (both hbbr and hbbs) and S6-overlay. They're available on Docker hub with these tags:

architecture version image:tag
multiarch latest rustdesk/rustdesk-server-s6:latest
amd64 latest rustdesk/rustdesk-server-s6:latest-amd64
i386 latest rustdesk/rustdesk-server-s6:latest-i386
arm64v8 latest rustdesk/rustdesk-server-s6:latest-arm64v8
armv7 latest rustdesk/rustdesk-server-s6:latest-armv7
multiarch 2 rustdesk/rustdesk-server-s6:2
amd64 2 rustdesk/rustdesk-server-s6:2-amd64
i386 2 rustdesk/rustdesk-server-s6:2-i386
arm64v8 2 rustdesk/rustdesk-server-s6:2-arm64v8
armv7 2 rustdesk/rustdesk-server-s6:2-armv7
multiarch 2.0.0 rustdesk/rustdesk-server-s6:2.0.0
amd64 2.0.0 rustdesk/rustdesk-server-s6:2.0.0-amd64
i386 2.0.0 rustdesk/rustdesk-server-s6:2.0.0-i386
arm64v8 2.0.0 rustdesk/rustdesk-server-s6:2.0.0-arm64v8
armv7 2.0.0 rustdesk/rustdesk-server-s6:2.0.0-armv7

You're strongly encouraged to use the multiarch image either with the major version or latest tag.

The S6-overlay acts as a supervisor and keeps both process running, so with this image there's no need to have two separate running containers.

You can start these images directly with docker run with this command:

docker run --name rustdesk-server \ 
  --net=host \
  -e "RELAY=rustdeskrelay.example.com" \
  -e "ENCRYPTED_ONLY=1" \
  -v "$PWD/data:/data" -d rustdesk/rustdesk-server-s6:latest

or without --net=host, but P2P direct connection cannot work.

docker run --name rustdesk-server \
  -p 21115:21115 -p 21116:21116 -p 21116:21116/udp \
  -p 21117:21117 -p 21118:21118 -p 21119:21119 \
  -e "RELAY=rustdeskrelay.example.com" \
  -e "ENCRYPTED_ONLY=1" \
  -v "$PWD/data:/data" -d rustdesk/rustdesk-server-s6:latest

Or you can use a docker-compose file:

version: '3'

services:
  rustdesk-server:
    container_name: rustdesk-server
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21117:21117
      - 21118:21118
      - 21119:21119
    image: rustdesk/rustdesk-server-s6:latest
    environment:
      - "RELAY=rustdesk.example.com:21117"
      - "ENCRYPTED_ONLY=1"
    volumes:
      - ./data:/data
    restart: unless-stopped

For this container image, you can use these environment variables, in addition to the ones specified in the following ENV variables section:

variable optional description
RELAY no the IP address/DNS name of the machine running this container
ENCRYPTED_ONLY yes if set to "1" unencrypted connection will not be accepted
KEY_PUB yes public part of the key pair
KEY_PRIV yes private part of the key pair

Secret management in S6-overlay based images

You can obviously keep the key pair in a docker volume, but the best practices tells you to not write the keys on the filesystem; so we provide a couple of options.

On container startup, the presence of the keypair is checked (/data/id_ed25519.pub and /data/id_ed25519) and if one of these keys doesn't exist, it's recreated from ENV variables or docker secrets. Then the validity of the keypair is checked: if public and private keys doesn't match, the container will stop. If you provide no keys, hbbs will generate one for you, and it'll place it in the default location.

Use ENV to store the key pair

You can use docker environment variables to store the keys. Just follow this examples:

docker run --name rustdesk-server \ 
  --net=host \
  -e "RELAY=rustdeskrelay.example.com" \
  -e "ENCRYPTED_ONLY=1" \
  -e "DB_URL=/db/db_v2.sqlite3" \
  -e "KEY_PRIV=FR2j78IxfwJNR+HjLluQ2Nh7eEryEeIZCwiQDPVe+PaITKyShphHAsPLn7So0OqRs92nGvSRdFJnE2MSyrKTIQ==" \
  -e "KEY_PUB=iEyskoaYRwLDy5+0qNDqkbPdpxr0kXRSZxNjEsqykyE=" \
  -v "$PWD/db:/db" -d rustdesk/rustdesk-server-s6:latest
version: '3'

services:
  rustdesk-server:
    container_name: rustdesk-server
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21117:21117
      - 21118:21118
      - 21119:21119
    image: rustdesk/rustdesk-server-s6:latest
    environment:
      - "RELAY=rustdesk.example.com:21117"
      - "ENCRYPTED_ONLY=1"
      - "DB_URL=/db/db_v2.sqlite3"
      - "KEY_PRIV=FR2j78IxfwJNR+HjLluQ2Nh7eEryEeIZCwiQDPVe+PaITKyShphHAsPLn7So0OqRs92nGvSRdFJnE2MSyrKTIQ=="
      - "KEY_PUB=iEyskoaYRwLDy5+0qNDqkbPdpxr0kXRSZxNjEsqykyE="
    volumes:
      - ./db:/db
    restart: unless-stopped

Use Docker secrets to store the key pair

You can alternatively use docker secrets to store the keys. This is useful if you're using docker-compose or docker swarm. Just follow this examples:

cat secrets/id_ed25519.pub | docker secret create key_pub -
cat secrets/id_ed25519 | docker secret create key_priv -
docker service create --name rustdesk-server \
  --secret key_priv --secret key_pub \
  --net=host \
  -e "RELAY=rustdeskrelay.example.com" \
  -e "ENCRYPTED_ONLY=1" \
  -e "DB_URL=/db/db_v2.sqlite3" \
  --mount "type=bind,source=$PWD/db,destination=/db" \
  rustdesk/rustdesk-server-s6:latest
version: '3'

services:
  rustdesk-server:
    container_name: rustdesk-server
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21117:21117
      - 21118:21118
      - 21119:21119
    image: rustdesk/rustdesk-server-s6:latest
    environment:
      - "RELAY=rustdesk.example.com:21117"
      - "ENCRYPTED_ONLY=1"
      - "DB_URL=/db/db_v2.sqlite3"
    volumes:
      - ./db:/db
    restart: unless-stopped
    secrets:
      - key_pub
      - key_priv

secrets:
  key_pub:
    file: secrets/id_ed25519.pub
  key_priv:
    file: secrets/id_ed25519      

How to create a keypair

A keypair is needed for encryption; you can provide it, as explained before, but you need a way to create one.

You can use this command to generate a keypair:

/usr/bin/rustdesk-utils genkeypair

If you don't have (or don't want) the rustdesk-utils package installed on your system, you can invoke the same command with docker:

docker run --rm --entrypoint /usr/bin/rustdesk-utils  rustdesk/rustdesk-server-s6:latest genkeypair

The output will be something like this:

Public Key:  8BLLhtzUBU/XKAH4mep3p+IX4DSApe7qbAwNH9nv4yA=
Secret Key:  egAVd44u33ZEUIDTtksGcHeVeAwywarEdHmf99KM5ajwEsuG3NQFT9coAfiZ6nen4hfgNICl7upsDA0f2e/jIA==

.deb packages

Separate .deb packages are available for each binary, you can find them in the releases. These packages are meant for the following distributions:

  • Ubuntu 22.04 LTS
  • Ubuntu 20.04 LTS
  • Ubuntu 18.04 LTS
  • Debian 11 bullseye
  • Debian 10 buster

ENV variables

hbbs and hbbr can be configured using these ENV variables. You can specify the variables as usual or use an .env file.

variable binary description
ALWAYS_USE_RELAY hbbs if set to "Y" disallows direct peer connection
DB_URL hbbs path for database file
DOWNGRADE_START_CHECK hbbr delay (in seconds) before downgrade check
DOWNGRADE_THRESHOLD hbbr threshold of downgrade check (bit/ms)
KEY hbbs/hbbr if set force the use of a specific key, if set to "_" force the use of any key
LIMIT_SPEED hbbr speed limit (in Mb/s)
PORT hbbs/hbbr listening port (21116 for hbbs - 21117 for hbbr)
RELAY hbbs IP address/DNS name of the machines running hbbr (separated by comma)
RUST_LOG all set debug level (error|warn|info|debug|trace)
SINGLE_BANDWIDTH hbbr max bandwidth for a single connection (in Mb/s)
TOTAL_BANDWIDTH hbbr max total bandwidth (in Mb/s)

rustdesk-server's People

Contributors

3x3cut0r avatar adeljck avatar attie-argentum avatar bahdotsh avatar botanicvelious avatar dforel avatar dinger1986 avatar dlhxzb avatar fastact avatar fufesou avatar hadfl avatar jivindotl avatar kreativekrise avatar ledeuns avatar lichtenfeldn-cc avatar lukebarone avatar madpilot78 avatar miguelagve avatar mr-update avatar n-connect avatar open-trade avatar paspo avatar rustdesk avatar tschettervictor avatar xlionjuan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rustdesk-server's Issues

Issue starting server

I am having trouble starting my own hosted server, it seems like there is an issue with the response from the license server.

image

Would you be able to help?

Cheers

armv7l

Hello @ all,

could you please be so kind and support binarys for the "armv7l" Plattform.

Best regards,
René

improve docs

docs should be divided into a docker part and a part without using docker

Docker desktop WSL2 backend unable to connect to server

Docker desktop version 4.9
Windows 11 21H2
Client rustdesk version: 1.1.9 x64

User A
image
User B
image
They are both showing the relay server is "Ready".

But when I trying to connect from User A to User B
image
I got an error : Unable to connect to the relay server

And on the User B's machine, no popups are showing.

The hbbs and hbbr are in the same machine of the User B inside Docker desktop's docker container

hbbs log:

[2022-06-16 12:30:31.207625 +00:00] INFO [src/peer.rs:82] DB_URL=./db_v2.sqlite3
[2022-06-16 12:30:31.328147 +00:00] INFO [src/rendezvous_server.rs:94] serial=0
[2022-06-16 12:30:31.328188 +00:00] INFO [src/rendezvous_server.rs:96] Listening on tcp/udp 0.0.0.0:21116
[2022-06-16 12:30:31.328184 +00:00] INFO [src/common.rs:41] rendezvous-servers=[]
[2022-06-16 12:30:31.328199 +00:00] INFO [src/rendezvous_server.rs:97] Listening on tcp 0.0.0.0:21115, extra port for NAT test
[2022-06-16 12:30:31.328200 +00:00] INFO [src/rendezvous_server.rs:98] Listening on websocket 0.0.0.0:21118
[2022-06-16 12:30:31.328381 +00:00] INFO [src/common.rs:120] Private/public key written to id_ed25519/id_ed25519.pub
[2022-06-16 12:30:31.336736 +00:00] INFO [src/common.rs:41] relay-servers=["host.docker.internal:21117"]
[2022-06-16 12:30:31.328219 +00:00] INFO [libs/hbb_common/src/udp.rs:33] Receive buf size of udp 0.0.0.0:21116: Ok(212992)
[2022-06-16 12:30:31.336827 +00:00] INFO [src/rendezvous_server.rs:135] ALWAYS_USE_RELAY=N
[2022-06-16 12:30:31.336844 +00:00] INFO [src/rendezvous_server.rs:155] Start
[2022-06-16 13:34:26.833530 +00:00] INFO [src/peer.rs:100] update_pk USER_A_ID 172.27.0.1:33057 [49, 100, 57, 48, 99, 56, 98, 50, 45, 97, 55, 98, 54, 45, 52, 54, 99, 48, 45, 98, 54, 48, 54, 45, 54, 51, 99, 51, 48, 53, 54, 51, 99, 99, 57, 53] [176, 62, 191, 210, 41, 182, 237, 198, 35, 56, 68, 255, 160, 86, 175, 64, 97, 209, 143, 133, 214, 252, 193, 64, 28, 169, 103, 136, 201, 175, 10, 219]
[2022-06-16 13:37:02.248151 +00:00] INFO [src/peer.rs:100] update_pk USER_B_ID 172.27.0.1:33489 [98, 54, 102, 53, 57, 51, 101, 99, 45, 52, 48, 55, 48, 45, 52, 54, 48, 50, 45, 98, 99, 50, 97, 45, 100, 101, 56, 97, 57, 97, 56, 99, 97, 54, 55, 48] [236, 222, 69, 7, 106, 38, 253, 31, 34, 247, 41, 127, 200, 100, 38, 178, 184, 225, 114, 7, 51, 86, 242, 5, 183, 100, 81, 90, 210, 177, 12, 150]

you can see both clients are connected

hbbr log:

[2022-06-16 12:30:30.260123 +00:00] INFO [src/relay_server.rs:60] #blacklist(blacklist.txt): 0
[2022-06-16 12:30:30.260138 +00:00] INFO [src/relay_server.rs:83] Listening on websocket 0.0.0.0:21119
[2022-06-16 12:30:30.260136 +00:00] INFO [src/relay_server.rs:81] Listening on tcp 0.0.0.0:21117
[2022-06-16 12:30:30.260134 +00:00] INFO [src/relay_server.rs:75] #blocklist(blocklist.txt): 0
[2022-06-16 12:30:30.260139 +00:00] INFO [src/relay_server.rs:85] Start
[2022-06-16 12:30:30.260163 +00:00] INFO [src/relay_server.rs:104] DOWNGRADE_THRESHOLD: 0.66
[2022-06-16 12:30:30.260167 +00:00] INFO [src/relay_server.rs:113] DOWNGRADE_START_CHECK: 1800s
[2022-06-16 12:30:30.260169 +00:00] INFO [src/relay_server.rs:122] LIMIT_SPEED: 4Mb/s
[2022-06-16 12:30:30.260170 +00:00] INFO [src/relay_server.rs:132] TOTAL_BANDWIDTH: 1024Mb/s
[2022-06-16 12:30:30.260172 +00:00] INFO [src/relay_server.rs:146] SINGLE_BANDWIDTH: 16Mb/s
[2022-06-16 13:37:47.344650 +00:00] INFO [src/relay_server.rs:446] New relay request 4e80cdf8-e278-412b-9d2d-5a4103974fe3 from 172.27.0.1:38108
[2022-06-16 13:37:21.348970 +00:00] INFO [src/relay_server.rs:446] New relay request 20af647b-e2b9-47e4-b45e-1855a40044d5 from 172.27.0.1:37466
[2022-06-16 13:42:30.341972 +00:00] INFO [src/relay_server.rs:446] New relay request e26de483-41de-4d85-a08d-da9d6123ed3b from 172.27.0.1:45640
[2022-06-16 13:45:27.340929 +00:00] INFO [src/relay_server.rs:446] New relay request 71643a71-78e7-48f6-9b59-0619797b9ad5 from 172.27.0.1:50498

docker-compose.yml:

version: '3'

networks:
  rustdesk-net:
    external: false

services:
  hbbs:
    container_name: hbbs
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21118:21118
    image: rustdesk/rustdesk-server:latest
    command: hbbs -r host.docker.internal:21117
    volumes:
      - ./rustdesk/hbbs:/root
    networks:
      - rustdesk-net
    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    container_name: hbbr
    ports:
      - 21117:21117
      - 21119:21119
    image: rustdesk/rustdesk-server:latest
    command: hbbr
    volumes:
      - ./rustdesk/hbbr:/root
    networks:
      - rustdesk-net
    restart: unless-stopped

Login function

Hi there

anyway to use the login function of the clients so that if i login it shows the list of hosts i've used/connected to?

like team viewer does?

regards
Jeremy

service startup dependency

If -k _ enabled, your current docker may have problem, because hbbr need to read the public key generated by hbbs, we need to start hbbr a litter later than hbbs.

Reverse Proxy use?

Wondering if at this stage it would be wise to run this behind a reverse proxy? Seeing as the login isn't available (from my understanding?) for self hosted yet..

Also, any idea what the proxy settings would need to pass everything through?

Why I cannot connect successfully via my synology docker hbbs/hbbr?

I use the synology docker version.
I try to connect from win10 at home to remote linux (ubuntu 20.04) at office. Both sides use the latest rustdesk 1.1.9.
When I use the default server, I can connect. But using my self-server , I cannot connect.
The IP of synology at home is 192.168.0.110, and win10 is 192.168.0.109
I have a public network IP, say A.B.C.D which can connect to home via it.
I made nat to synology (192.168.0.110) for ports 21115, 21116, and 21117
I set the "ID server" at win10 rustdesk as 192.168.0.110
I set the "ID server" at remote linux rustdesk as A.B.C.D
The docker command for hbbs is: hbbs -r 192.168.0.110
The docker command for hbbr is just: hbbr
Both win10 and linux sides should have reached the server because the logs of hbbs and hbbr have the following clues

image
However, when I connect from win10 to linux, it fails.

1.1.6, high cpu usage

1.1.5

1.1.15

1.1.6

1.1.6

1.1.6

clone目前的最新代码下来构建同样的现象
希望可以解决 谢谢

Add binaries compiled with MUSL

It would be great not to compile binaries for distributions such as Alpine Linux or Void Linux.
Here is simple shell script to build it under Alpine Linux and (additionally) simple service for running it.

Preconfiguring in Filename issue (Windows)

Hi,

as stated in the documentation, you can set the host and public key in the filename of the client for Windows.

https://rustdesk.com/docs/en/self-host/install/#key

I installed the docker version and the content of id_ed25519.pub looks like that:

uoZ/IMgUtiRqELp/dAyRbP1k9lkCjY4BaM9xUseDdRU=

When I use host and pub key in the filename of the client, I get something like that which is not a valid Windows filename:

rustdesk-host=my.remote.host,key=uoZ/IMgUtiRqELp/dAyRbP1k9lkCjY4BaM9xUseDdRU=.exe

because of the "/".

Any advice or am I missing something?

change id

Does the latest version of rustdek server docker turn off change ID?

Format error in synology DSM7.0

Recently, I try to install rustdesk-server spk package in synology DSM 7.0 system. But I get a package format error.
Can new spk build supported?

Server can't client

My server system is CentOS8;I want using Docker to build my personal server. Now Docker is running hbbs and hbbr All ports are not change. Docker tell me hbbs and hbbr is healthy but when I changing Id Serve to my IPAddress Win10 RuskDesk(Client) always shows"RustDesk is accessing network" I built it with official documents now I don't know what's wrong with it and how I can make working
docker logs tell me where hbbs or hbbr is starting

Support IPv6

Currently the server does not seem to listen on IPv6 hosts, only on IPv4.

The client however will attempt to connect to IPv6 if the domain name is used and both A and AAAA records exist. Either prevent the client from attempting to connect via IPv6 or make the server listen on IPv6 hosts as well...

Wrong archive in releases

Archive of source code on release page (also can be downloaded by this link) does not contain actual source code of this project.

Stuck on connecting to the RustDesk network...

I have changed the ID and RELAY server to my hosted one and when I am restarting the the windows client it states:

Stuck on connecting to the RustDesk network...

Should it be like that?

Question: What is the API Server and how do I run it off-grid

Hi,

In the settings i can specify an API server and a key, too.
Searching didn't yield anything useful and There seems to be nothing inside the docker container, in the docs and no repo. But how can I run my own API server and take this whole thing behind a firewall with no internet connection?

Thanks for help!

impossible to run hbbs from arch 64 freebox delta (french internet box)

Hi all,

I'm trying to run rustdesk-server from a docker.
I did :
docker image rm rustdesk/rustdesk-server mkdir /srv/rustdesk-server cd /srv/rustdesk-server sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v pwd`:/root -it --net=host --rm rustdesk/rustdesk-server:latest-arm64v8 hbbs
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Port mappings have been discarded as one of the Host, Container, Pod, and None network modes are in use
[2022-06-11 12:27:58.526310 +00:00] INFO [src/peer.rs:82] DB_URL=./db_v2.sqlite3
Error: An error occured while creating a new object: error returned from database: unable to open database file

sudo docker run --name hbbr -d -p 21117:21117 -p 21119:21119 -v pwd:/root -it --net=host --rm rustdesk/rustdesk-server hbbr
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Port mappings have been discarded as one of the Host, Container, Pod, and None network modes are in use
da0eb9db1c7487ca09cc4a51134bb3a6e5142925adf828964178133308db3af2
[billy@z-95 rust]$ sudo docker ps
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
da0eb9db1c74 docker.io/rustdesk/rustdesk-server:latest-arm64v8 hbbr 9 seconds ago Up 8 seconds ago hbbr
[billy@z-95 rust]$`

run RustDesk as systemd service.

from Reddit

#!/bin/bash

# Get Username
uname=$(whoami)

# Get Company name and domain name

# Setup Database server
apt update
apt install unzip -y

# Make Folder /opt/rustdesk/
if [ ! -d "/opt/rustdesk" ]; then
    echo "Creating /opt/rustdesk"
    mkdir -p /opt/rustdesk/
    cd /opt/rustdesk/
fi

wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.5/rustdesk-server-linux-x64.zip
unzip rustdesk-server-linux-x64.zip
rm rustdesk-server-linux-x64.zip

# Setup Systemd to launch hbbs
echo -e "\n[Unit]\nDescription=Rustdesk Signal Server\n\n[Service]\nType=simple\nLimitNOFILE=1000000\nExecStart=/opt/rustdesk/hbbs\nWorkingDirectory=/opt/rustdesk/\nUser=${uname}\nGroup=${uname}\nRestart=always\n# Restart service after 10 seconds if node service crashes\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target\n" > rustdesksignal.service
sudo cp rustdesksignal.service /etc/systemd/system/rustdesksignal.service
rm rustdesksignal.service
sudo systemctl enable rustdesksignal.service
sudo systemctl start rustdesksignal.service

# Setup Systemd to launch hbbr
echo -e "\n[Unit]\nDescription=Rustdesk Relay Server\n\n[Service]\nType=simple\nLimitNOFILE=1000000\nExecStart=/opt/rustdesk/hbbr\nWorkingDirectory=/opt/rustdesk/\nUser=${uname}\nGroup=${uname}\nRestart=always\n# Restart service after 10 seconds if node service crashes\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target\n" > rustdeskrelay.service
sudo cp rustdeskrelay.service /etc/systemd/system/rustdeskrelay.service
rm rustdeskrelay.service
sudo systemctl enable rustdeskrelay.service
sudo systemctl start rustdeskrelay.service

Server in the container does not respond to SIGINT/SIGTERM

The server in the docker container does not seem to repond to SIGINT (aka the result of ctrl+c) or SIGTERM (signal used by podman container stop) signals, which doesn't allow me to cleanly shut down the container.
This makes it impossible to shut down the container using a simple ctrl+c, and using the stop command takes more time than it should (which sends SIGKILL after a timeout).
SIGKILL obviously works (via podman container kill), but it's not a clean exit.

I'm running this on an aarch64 (aka. arm64) system - Ubuntu 22.04 LTS, with podman as a replacement to docker, using a rootless container.
I've also tried sending in the signals directly into the container process - no results.
The solution I would like to see is a signal handler to be added for those signals, which would cause the process to cleanly exit. I'm concerned that forcibly ending the process via SIGKILL can cause data loss.
This also might apply to standalone server executables, but I didn't test those.

how does it work out of box?

All posts I searched in last 10mins online is talking about how great ruskdesk is.

I am trying to find a way to set it up on my home Linux box.

I find there is only source code in the Releases. No documentation.

How does it work out of box exactly?

Thanks.

Support for wayland

I tested it with rustdesk version 1.1.8 on debian unstable with kernel version 5.10.0-8. I check the system service file and found that there are not logs being recorded. Maybe that is another feature that can be included. Meanwhile if there are any suggestions on how to support wayland I may give a try to work on it.
Screenshot from 2021-09-17 18-34-38

Thanks again for such an awesome software. It simple works, I tested it on kde plasma with X11 and even the mobile app is great. It is consuming very little network bandwidth and there are so many features already.

Key Mismatch, but never asked for a password

Hello,

When I try to connect from my phone to my PC using my self hosted Rustdesk server I only get a key mismatch error, but it never asks me for a key or password for my PC.

Server is running on Docker. Both clients connect to the server okay.
I have tried rebooting my server as well as both clients and have cleared all data on my Rustdesk client on my Android phone.

Connection is closed by peer ,show as image

self build server by 1.1.5.1 version, alway connection is closed by peer when use remote desktop; if server is by restarted , i can use remote desktop ,but alway connection is closed by peer occurs until restart server
fe2d08e6a5ff91e4eac10b19a188060

Is the Rustdesk API Server open source as well?

I see progress of making the server open source, however, the API server is still closed source and no way to self host it. I wonder is that on the plan or there will be no chance of being open source?

self-host by myself is not free?

  • docker-compose.yml
version: '3'

services:
  hbbs:
    image: rustdesk/rustdesk-server
    command: hbbs -r rustdesk.example.org:21117
    ports:
        - 21115:21115
        - 21116:21116
        - 21116:21116/udp
        - 21118:21118
    volumes:
      - ./data:/root
  hbbr:
    image: rustdesk/rustdesk-server
    command: hbbr
    ports:
        - 21117:21117
        - 21119:21119
    volumes:
      - ./data:/root
  • logout
Creating network "rustdesk_default" with the default driver
Creating rustdesk_hbbs_1 ... done
Creating rustdesk_hbbr_1 ... done
Attaching to rustdesk_hbbs_1, rustdesk_hbbr_1
hbbr_1  | [2022-06-09T03:27:33Z ERROR hbbr::lic] Registered email required (-m option). Please pay and register on https://rustdesk.com/server.
hbbs_1  | [2022-06-09T03:27:33Z ERROR hbbs::lic] Registered email required (-m option). Please pay and register on https://rustdesk.com/server.
rustdesk_hbbs_1 exited with code 0
rustdesk_hbbr_1 exited with code 0

What is the function of server and relay?

I read the document but cannot get the point what the function of both servers are? It results the setting of relay and rendezvous server. For example, the remote is in China, say Shanghai, the local is in USA. And I have 3 VPS which can be used as rendezvous and relay servers. Say, there are each VPS located in USA, Japan and Shanghai. The question is which VPS shall be used as rendezvous server? The closest to the local or to the remote? Where should the relay be located? Close to local, remote, or the rendezvous server?

Slow connection time

If I want to connect to a remote system it takes 20-30 seconds. But mostly it timeouts after 30 seconds. Both systems are running Windows 10 with RustDesk 1.1.9.

RustDesk Server was installed via docker and docker-compose on a public available server.

I used this docker-compose config:

version: '3'

services:
  rustdesk-server:
    container_name: rustdesk-server
    network_mode: host
    image: rustdesk/rustdesk-server-s6:latest
    environment:
      - "RELAY=<PUBLIC_IP>:21117"
      - "ENCRYPTED_ONLY=1"
    volumes:
      - ./data:/data
    restart: unless-stopped

but I also tried:

version: '3'

services:
  rustdesk-server:
    container_name: rustdesk-server
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21117:21117
      - 21118:21118
      - 21119:21119
    image: rustdesk/rustdesk-server-s6:latest
    environment:
      - "RELAY=<PUBLIC_IP>:21117"
      - "ENCRYPTED_ONLY=1"
    volumes:
      - ./data:/data
    restart: unless-stopped

Ports 21115-21119/tcp and 21116/udp for incoming connections are open.

Any idea what could cause this long time it needs to connect?

May I ask about the use of self-host servers for non-LAN?

我用docker自建了服务器,在同一局域网下,连接没有问题,当控制端和被控端,不在同一局域网下时,就会一直报错,连接错误,连接被对方关闭?请问这是自建服务器限制呢,还是什么问题呢?谢谢

when?

"A totally new version will be ready to be downloaded soon."
when?

Date of exit of new Rustdesk Server

Hi! I'm very happy to have know Rustdesk. Thanks in advance ;-)

You know the date when the source code will be finished rewriting?

Best regards!

Quick support and own server

I just discovered this amazing app.
We'd like to put the portable version on our website for our customers.
Is there any way to change the portable version, so that it points to our own server?

With a key rustdesk only in the same network, different network doesnt work

Describe the bug you encountered:
if rustdesk is configured with a security key (Option -k _) , then a remote connection will only work on the same subnet. A client in another network cannot be reached. But it is possible without a key.

What did you expect to happen instead?
That rustdesk can connect to a client in another subnet

How did you install RustDesk?
Create a yml, based on the rustdesk installation manuel with Parameter -k _
docker-compose up -d

RustDesk version and environment
Server - latest Docker Image from 27.7.2022 from github
Client 1 - Android 1.1.10.-1
Client 2 + 3 - Windows rustdesk 1.1.9

Rustdeskkeyproblem

Nice greetings
André Lehrmann

chat questions

The controller sends a message to the controlled person, and the controlled person cannot send a message to the controller

Address Book

Can I use address book on a self-hosted server?

Pop OS 22.04

Unable to install RustDesk in POPOS

`Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'rustdesk' instead of './rustdesk-1.1.9.deb'
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
rustdesk : Depends: pulseaudio
E: Unable to correct problems, you have held broken packages.`

cannot install pulseaudio on Pop
Any alternative for installation?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.