RustDesk – open-source alternative to TeamViewer

2025-02-0615:082418github.com

An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer. - rustdesk/rustdesk

RustDesk - Your remote desktop
BuildDockerStructureSnapshot
[Українська] | [česky] | [中文] | [Magyar] | [Español] | [فارسی] | [Français] | [Deutsch] | [Polski] | [Indonesian] | [Suomi] | [മലയാളം] | [日本語] | [Nederlands] | [Italiano] | [Русский] | [Português (Brasil)] | [Esperanto] | [한국어] | [العربي] | [Tiếng Việt] | [Dansk] | [Ελληνικά] | [Türkçe] | [Norsk]
We need your help to translate this README, RustDesk UI and RustDesk Doc to your native language

Chat with us: Discord | Twitter | Reddit

ko-fi

Yet another remote desktop software, written in Rust. Works out of the box, no configuration required. You have full control of your data, with no concerns about security. You can use our rendezvous/relay server, set up your own, or write your own rendezvous/relay server.

image

RustDesk welcomes contribution from everyone. See CONTRIBUTING.md for help getting started.

FAQ

BINARY DOWNLOAD

NIGHTLY BUILD

Get it on F-Droid Get it on Flathub

Desktop versions use Flutter or Sciter (deprecated) for GUI, this tutorial is for Sciter only, since it is easier and more friendly to start. Check out our CI for building Flutter version.

Please download Sciter dynamic library yourself.

Windows | Linux | macOS

  • Prepare your Rust development env and C++ build env

  • Install vcpkg, and set VCPKG_ROOT env variable correctly

    • Windows: vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static aom:x64-windows-static
    • Linux/macOS: vcpkg install libvpx libyuv opus aom
  • run cargo run

sudo apt install -y zip g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev \
        libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake make \
        libclang-dev ninja-build libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libpam0g-dev
sudo zypper install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libXfixes-devel cmake alsa-lib-devel gstreamer-devel gstreamer-plugins-base-devel xdotool-devel pam-devel
sudo yum -y install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libxdo-devel libXfixes-devel pulseaudio-libs-devel cmake alsa-lib-devel gstreamer1-devel gstreamer1-plugins-base-devel pam-devel
sudo pacman -Syu --needed unzip git cmake gcc curl wget yasm nasm zip make pkg-config clang gtk3 xdotool libxcb libxfixes alsa-lib pipewire
git clone https://github.com/microsoft/vcpkg
cd vcpkg
git checkout 2023.04.15
cd ..
vcpkg/bootstrap-vcpkg.sh
export VCPKG_ROOT=$HOME/vcpkg
vcpkg/vcpkg install libvpx libyuv opus aom
cd vcpkg/buildtrees/libvpx/src
cd *
./configure
sed -i 's/CFLAGS+=-I/CFLAGS+=-fPIC -I/g' Makefile
sed -i 's/CXXFLAGS+=-I/CXXFLAGS+=-fPIC -I/g' Makefile
make
cp libvpx.a $HOME/vcpkg/installed/x64-linux/lib/
cd
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
git clone https://github.com/rustdesk/rustdesk
cd rustdesk
mkdir -p target/debug
wget https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so
mv libsciter-gtk.so target/debug
VCPKG_ROOT=$HOME/vcpkg cargo run

Begin by cloning the repository and building the Docker container:

git clone https://github.com/rustdesk/rustdesk
cd rustdesk
docker build -t "rustdesk-builder" .

Then, each time you need to build the application, run the following command:

docker run --rm -it -v $PWD:/home/user/rustdesk -v rustdesk-git-cache:/home/user/.cargo/git -v rustdesk-registry-cache:/home/user/.cargo/registry -e PUID="$(id -u)" -e PGID="$(id -g)" rustdesk-builder

Note that the first build may take longer before dependencies are cached, subsequent builds will be faster. Additionally, if you need to specify different arguments to the build command, you may do so at the end of the command in the <OPTIONAL-ARGS> position. For instance, if you wanted to build an optimized release version, you would run the command above followed by --release. The resulting executable will be available in the target folder on your system, and can be run with:

Or, if you're running a release executable:

Please ensure that you are running these commands from the root of the RustDesk repository, otherwise the application might not be able to find the required resources. Also note that other cargo subcommands such as install or run are not currently supported via this method as they would install or run the program inside the container instead of the host.

Caution

Misuse Disclaimer:
The developers of RustDesk do not condone or support any unethical or illegal use of this software. Misuse, such as unauthorized access, control or invasion of privacy, is strictly against our guidelines. The authors are not responsible for any misuse of the application.

Connection Manager

Connected to a Windows PC

File Transfer

TCP Tunneling


Read the original article

Comments

  • By FloatArtifact 2025-02-072:42

    My one annoyance with RustDesk they haven't implemented auto update. Non-techie users don't want to go download a binary. Those that deploy software don't want to deal with at scale unless without the proper tooling. Good SAS candidate.

    Even when you manually download and update, you still have to start the service.

  • By lordofgibbons 2025-02-0616:001 reply

    I thought RustDesk shipped with Sciter binaries for the GUI, which is not open source.

    • By 01HNNWZ0MV43FF 2025-02-0616:031 reply

      README indicates they are switching to Flutter soon

      > Desktop versions use Flutter or Sciter (deprecated) for GUI

  • By jillyboel 2025-02-0615:505 reply

    Anyone have experience with this? What's the performance like compared to TeamViewer or NoMachine?

    • By duiker101 2025-02-0615:57

      I am not sure about a "professional" experience. But my personal one is that I had my parents install it on their machine years ago, and since it's running stable and without great changes or weird banner or any other silly stuff that would break the flow.

      I can log in remotely and help them. It is also easy to install and run, which is also bonus points.

      For me, this smooth experience has been a godsent. When I used TeamViewer I feel like every time I would use it, sometimes months apart, it would break or something would change.

    • By stanac 2025-02-0615:58

      I use it to help parents when they need to create/save some document. I haven't use it in a year, don't remember the performance, or at least I didn't notice any problems with it for my use case. The problem I had was with screen scaling. I am using 4K screen with 200% scaling, and my mom is using full HD with 100% scaling. Her remote screen was tiny.

      IIRC you can host your own sever instead of using default one, not sure if it would help with performance.

    • By n3storm 2025-02-0615:561 reply

      Works great both Windows and Linux. Only difference I noticed with Teamviewer is that it asks for windows Administrator permission to take control meanwhile Teamviewer I think it does not.

      Apart from that (and if you tell your users in advance it means nothing) experience is on par.

      I also installed my own server for vanity domain but went back to free cause I was not vane anymore.

      • By timbit42 2025-02-0623:51

        You said, "Teamviewer", twice, should one be, "RustDesk"?

    • By arthurtully 2025-02-0615:541 reply

      I use AnyDesk daily, but sometimes have to use RustDesk when it can't reach clients in certain regions.

      Performance is great, supports multiple monitors, keyboard sync and everything you'd expect for a remote tool. One lacking feature is account naming, which AnyDesk has.

      • By timbit42 2025-02-0623:52

        Another lacking feature is printing.

    • By timbit42 2025-02-0623:55

      I find similar performance to AnyDesk most of the time but RustDesk never seems to get sluggish, while sometimes AnyDesk gets very slow and my view of the remote machine gets up to a few minutes behind, which is pretty unusable.

HackerNews