top | item 32239025

RustDesk – Open-source TeamViewer alternative

218 points| swah | 3 years ago |github.com

122 comments

order
[+] Technetium|3 years ago|reply
I *REALLY* want to love this, but it just honestly all-around doesn't work very well or reliably. The developer is almost impossible to communicate with. They don't have CI setup very well at all. It's also nearly impossible to selfhost. I'll be forced to keep using Anydesk until there's something that can at least match it in stability and features. There is potential for this to be good, but not without a LOT more change. Source for my experience is that I co-maintain this package: https://aur.archlinux.org/packages/rustdesk
[+] thebeardisred|3 years ago|reply
I'm a bit curious here.

I see that RustDesk is licensed AGPL 3.0. At the same time the GUI component (Sciter - https://www.sciter.com) is proprietary software with it's own non-compatible license (https://github.com/c-smile/sciter-sdk/blob/524a90ef7eab16575...).

Was the intention to use something like LGPL to stand on the shoulders of the external libraries or was the choice of AGPL just a hopeful goal with licensing issues to be resolved in the future?

[+] NoraCodes|3 years ago|reply
It's a stated goal to replace sciter with Flutter.
[+] benbristow|3 years ago|reply
Not 100% open source, but a good solution for controlling my parent's laptop when they need a hand with something (they live in England, I live in Scotland) is to use ZeroTier to set up a VPN (installed it on their laptop when I had physical access to it, uses basically no system resources and just runs in the background automatically) and then use RDP built into Windows (I installed Windows 10 Enterprise on their laptop when I first set it up, have loads of MSDN keys from work).

https://www.zerotier.com/

Works really, really well and doesn't try to wrongfully block me for 'commercial usage' like Teamviewer does.

[+] password4321|3 years ago|reply
Bitvise SSH Server for Windows is also free for personal use, if you'd rather just forward the RDP port securely.
[+] ProtoAES256|3 years ago|reply
Zerotier is my goto tool too(I use tightvnc server even on Windows instead of RDP)!

But the downside is that they had downgraded everyone in the free tier to only 1 hosted network, which is sad since now I can't do different groups.

I used to have a group for each circle of friends so that we can play LAN games together and now I need to ask one of them from each group to set a network themselves for me to join.

Self hosting (Moon instances) introduced basically nothing since our network wasn't super reliable. With their current pricing it wasn't that useful to us so I'm now in a love-hate relationship with Zerotier.

[+] BitPirate|3 years ago|reply
Controlling a wayland client on Linux is still work in progress: https://github.com/rustdesk/rustdesk/issues/56

Partial support has already been added: https://github.com/rustdesk/rustdesk/pull/932

[+] ChuckNorris89|3 years ago|reply
Isn't everything Wayland related an everlasting work in progress? Especially thanks to Nvidia not playing ball.

I wish I could switch to Wayland but the amount of gotchas is so huge that if I want every app to work as expected then X11 is still the only way to go.

[+] rustdesk|3 years ago|reply
Thanks all of you.

We did some stupid things before, especially the Wayland "Fix it" button, no excuse, we have removed it, and been working hard to make Wayland support work. https://github.com/rustdesk/rustdesk/pull/932

We are also removing Sciter, rewriting the UI with Flutter, https://github.com/rustdesk/rustdesk/tree/flutter_desktop. But Flutter does not support 32-bit Windows, we have to keep Sciter for 32-bit Windows version.

As an open source project, we only have very limit bandwidth for you, the connection is not reliable sometime if you use our public servers. That's why we encourage the selfhost, and open source the server https://github.com/rustdesk/rustdesk-server. We are attempting to improve the bandwidth, https://github.com/rustdesk/rustdesk/discussions/1026.

Here is a good video for selfhost which can help you. https://www.youtube.com/watch?v=9nzHm3xGz2I&t=1032s

We hope more contributors can join us to make it better.

Here is our milestones: https://github.com/rustdesk/rustdesk/discussions/918

I do not know why @Technetium said "impossible to communicate", appologize if I made you not happy before. I just lost patience sometimes, it is really not an easy job to maintain an open source project like RustDesk. We communiated very well with RustDesk Server contributor, https://github.com/rustdesk/rustdesk-server/issues/36.

[+] dainiusse|3 years ago|reply
Tried it with my mom. With no negativity as I know it is not easy to make. But it would freeze after 15s of shared session time
[+] swah|3 years ago|reply
I did a session with my colleague now: MacOS client, Ubuntu server. Got a couple disconnects too - but felt like they are very close to having an awesome product.
[+] jupp0r|3 years ago|reply
“You have full control of your data, with no concerns about security”

This makes me a little worried about non-memory management security bugs. Rust is definitely helpful in eliminating one major category of bugs, but the belief that this is sufficient for users to not have to worry about security is misguided.

[+] moldavi|3 years ago|reply
In fact, in the pursuit of eliminating memory-safety and security bugs, Rust can sometimes makes some privacy bugs more likely.

For example, in GC'd/RC'd languages, if we have several UserAccount instances and a bunch of long-running operations on them, any particular long-running operation will just hold a reference to the UserAccount itself and modify it at will without any confusion.

In Rust, the borrow checker often doesn't let us hold a reference from a long-running operation in practice, so we work around it by putting all UserAccount instances into a Vec<UserAccount>, and have our long-running operations refer to it via an index. However, we might erase and re-use a spot in that Vec, meaning the index now refers to some other UserAccount.

If the operation uses that "dangling index", it can lead to leaking sensitive data to the wrong users, or data loss.

When using Rust, one has to use discipline to avoid this bug: use IDs into a hash map, or generational indices, or Rc<RefCell<T>>. Each has its own performance hit, but that hit can be worth it to prevent privacy bugs.

In the GC'd/RC'd language, this would still be a bug, but it wouldn't cause any mixups between different users' data.

I'm not saying we should always use GC'd or RC'd languages for privacy-sensitive purposes, but one should be aware of the particular shortcomings of their tools and have proper practices and oversight in place to mitigate them.

[+] geophertz|3 years ago|reply
I don't think that statement refers to rust at all. It's just referring to the fact the software is open source and the user's data doesn't go through a third-party
[+] lagrange77|3 years ago|reply
Ok fair point, but if run it additionally on a Mac, you should be completely safe.
[+] maldev|3 years ago|reply
Rust is really bad for security. It puts debug strings and full source file paths inside binaries. It's been a bug for over 5 years that's been reported and there's been no progress. Nobody talks about this wild dataleakage. Also leaks usernames on computers and such. This can lead to ALOT of forensics information and be used by authoritarian nations to find and arrest people for making software. I really don't think any rust application can meet some compliance requirements for certain sectors due to this either. But the developers and communities just wash this and other real issues under the rug.
[+] chungy|3 years ago|reply
As someone that's never used TeamViewer, is that a more complete description than simply being a "TeamViewer alternative"?

Skimming through the readme, I don't know what this gains over VNC and RDP solutions. Seems to be the same thing, but a different protocol?

[+] imiric|3 years ago|reply
With VNC and RDP you have to mess with IP addresses, network configuration, quality/bandwidth settings, etc., which is a tall hurdle for general remote tech support. With TV, the other person simply shares a code, and the connection is much more stable.
[+] actuallyalys|3 years ago|reply
I guess "remote support tool" would be the generic term. VNC and RDP are broader tools for controlling another computer and aren't specifically geared toward situations where someone without much experience wants to give the person supporting them control. (You could build a tool like that on top of them, probably.)
[+] 2Gkashmiri|3 years ago|reply
you can use their web version if you are in a pinch and have rusdesk client running at your home/office machine. since you know the password, you can get access quickly...

this is like vnc but better. RDP is another beast altogether. i use rustdesk and RDP on a daily basis and they are for different things.

[+] kingrazor|3 years ago|reply
Another option if you don't mind running your own server is Mesh Central. It's open source as well. I've personally met the developer and he's a very knowledgeable and likeable person, if that means anything.
[+] fareesh|3 years ago|reply
I use XVNC / Remmina and the default RDP thing on macOS as a client when I'm remotely tinkering with my own machines. Is there something better that works for other folks?
[+] swah|3 years ago|reply
Is the initial connection as easy as TeamViewer - ie share a code with ther other person?

I feel like that's the main thing when talking about "TeamViewer alternative": not needing to setup external access / port forwarding on your router.

[+] xen2xen1|3 years ago|reply
Mesh Central is the other decent open source offering I know of.
[+] Demonsult|3 years ago|reply
NoMachine uses hardware h264 encoding. I can watch youtube remotely and barely notice the difference.

It's commercial software with free personal use.

[+] 2Gkashmiri|3 years ago|reply
as someone who has started to daily drive rustdesk for 12 hours a day 6 days a week on 1 to 5/9 computers daily, this is a much better experience visually than anydesk.

i've stopped using teamviewer 3-5 years ago when they said i had violated home free edition. anydesk seemed to go that way last year or so and i jumped ship.

from my linux to windows 10 ltsc, alt-tab has issues, anydesk does not. anydesk has this fucking numlock bug for years now which hasnt been fixed. rustdesk does not have that.

i am able to watch youtube over rustdesk, anydesk chugs.

other than that, its just the same same.

i highly encourage people to move from anydesk (again, teamviewer is out a long time ago anyways) and rustdesk is a good alternative. good luck to the team.

edit: yes. file copy paste does not work from linux-windows, maybe it does windows-windows but i havent checked that while anydesk does this

[+] Technetium|3 years ago|reply
I also daily drive Anydesk, and I use it a borderline obscene amount. I have gotten no warnings about hitting a usage limit. I moved to Anydesk for the same reason, and would probably move away if Anydesk put up a payment wall. Do you have any links about free-tier limitations? I use Windows/Linux to connect to Windows/Linux/Mac/Android and I have not yet hit any snags with numlock or device connection limits.

The only bug / minor nitpick of Anydesk is that a Linux session host needs to explicitly initiate a new connection to the client for a file transfer, whereas on Windows hosts it happens transparently and just gives you a file picker alongside the existing session.

[+] shimonabi|3 years ago|reply
I have tried self-hosting this with Docker a couple of weeks ago and it seems to work.

You point the client to your server by including the address in the .exe filename on Windows. Be careful: encryption is not enabled by default.

[+] e12e|3 years ago|reply
> Be careful: encryption is not enabled by default.

Wait, what?

[+] IYasha|3 years ago|reply
Nah, when it comes to Linux, KRDC wins.
[+] proto_lambda|3 years ago|reply
Quoting from the last time this was posted (https://news.ycombinator.com/item?id=31456007):

I'd proceed with caution. Apparently it doesn't support Wayland, so when you run it under Wayland it offers you a "Fix it!" button that, when clicked, runs sed on some gdm system config files to revert it to X11 (nevermind that gdm is far from the only way to use Wayland): https://github.com/rustdesk/rustdesk/blob/1.1.9/src/platform.... If this is the kind of thing that's considered acceptable by the developer, I'd rather keep their products far away from my machines. A quick glance at the code also reveals an almost complete lack of comments and copious use of unexplained `unsafe`.

[+] Fnoord|3 years ago|reply
Came here to comment on Wayland (I don't use Gnome or a display manager but Sway fired up from CLI). I guess I will keep using wayvnc over Wireguard.
[+] aantix|3 years ago|reply
Is it common in the Rust community to include the name of the language as part of the application name?

Reminds me of the early 2000's - phpBB, etc.

[+] cmrdporcupine|3 years ago|reply
It's just a phase in the language adoption, I think. It's still novel to write projects in it (though less so every day) and people are still out there "marking their territory" in it.

Python had a similar phase.

[+] Fnoord|3 years ago|reply
Because the language has a rather unique selling point.

And its not unique to include the language name. Say, for which program is .el? And that extension is commonly included in projects. Not a jab at Emacs as its same with vim projects but they start with vim instead.

(I actually find it useful as its descriptive.)

[+] legalcorrection|3 years ago|reply
For connecting between two Windows machines, I want to use the RDP protocol, but the built-in RDP client and server don't take care of the NAT/firewall traversal and such. Is there a software solution like TeamViewer or RustDesk that just does the leg work to set up the connection and then hands it off to the Windows built-in RDP libraries?
[+] easrng|3 years ago|reply
Try the built in Quick Assist app? I think it does NAT traversal.
[+] ComodoHacker|3 years ago|reply
> The open source TeamViewer alternative. Display and control your PC and Android devices from anywhere at anytime.

That's not what TeamViewer, AnyDesk and others offer. They offer display and control of anyone's PC, without a tech-savvy person on that end. There's no way any open-source project could compete in this space.

[+] imiric|3 years ago|reply
> There's no way any open-source project could compete in this space.

That's needlessly negative. They offer their own relay server or the possibility to host your own. From the documentation it seems like they're aiming for the same UX as TeamViewer, for which we desperately need an OSS alternative that's equally user-friendly. Saying that it's an unreachable goal is defeatist and pure speculation.

[+] arsome|3 years ago|reply
Actually, yes, that's exactly what RustDesk does. Run the exe, get an ID and password, bypass all NATs, just like TeamViewer. After TeamViewer decided I was a commercial user for some unknown reason and started blocking my sessions, I've used it with less technical friends and family several times without any significant issues.

To compete in this space is its main purpose and I'd say it does a pretty good job.

[+] belthesar|3 years ago|reply
RustDesk does have a quick connect style runner like TeamViewer that works just the same. It wasn't super performant, and on Windows it did not gracefully handle UAC prompts, so it definitely has some rough edges, but it functions much like its closed source predecessors did early on in its life.
[+] etskinner|3 years ago|reply
What would stop someone from setting up a server that listens for connections? Kind of like a reverse VNC (or, by extension, reverse ssh tunneling). It may not be a feature of the program yet, but that doesn't mean it isn't possible. I could compile and distribute my own binary that automatically connects to me.example.com:1234, make sure that server is accessible from the internet, tell the user to bypass non-signed executable restrictions, and we're good to go.