💾 Archived View for dioskouroi.xyz › thread › 29406112 captured on 2021-12-03 at 14:04:38. Gemini links have been rewritten to link to archived content

View Raw

More Information

➡️ Next capture (2021-12-04)

-=-=-=-=-=-=-

Show HN: Neko – Self hosted virtual browser that runs in Docker and uses WebRTC

Author: m1k1o

Score: 225

Comments: 54

Date: 2021-12-01 17:04:01

Web Link

_________________________________________________________________________________

Sean-Der wrote at 2021-12-01 17:53:55:

Neko is a fantastic project, I love telling people about it. It does so much more then the title says :)

Being able to watch videos with someone in perfect sync is a great experience. It's not the same to just sync two video elements, but you actually can scroll the page and feels like you are sharing the same screen.

This and

https://github.com/giongto35/cloud-morph

I think have the chance to really inspire/change the next generation of products that get built in the space.

skrowl wrote at 2021-12-01 21:05:09:

Seems like you could also use it as an alternative to Twitch where you watched someone play a game, or Picaro.tv which you watch people draw stuff

nextaccountic wrote at 2021-12-02 03:51:27:

picarto.tv *

And thanks, I didn't know it

m0lecules wrote at 2021-12-02 03:13:07:

sorry if this sounds dismissive, but I'm curious - how is this different than using google hangouts or facetime or zoom and doing screen sharing?

rgbrgb wrote at 2021-12-02 03:28:12:

afaik those don’t let both parties control the mouse. I thought that’s what this does.

lbotos wrote at 2021-12-01 17:27:58:

I was kinda confused as to what this is, but I think it's meant so you can host a browser as a "server" and have multiple people stream that "browser server"?

When I first clicked I thought it was going to be for programmatic testing of code.

m1k1o wrote at 2021-12-01 17:30:53:

Alternative to having browser (or any app) in a container and accessing its gui using noVNC (or Apache Guacamole). Except, this is done using WebRTC, what makes it perfect for viewing videos + audio of course.

JeremyNT wrote at 2021-12-01 21:51:18:

I also find it confusing.

Is this just a docker-compose setup, or did you write the code? I see some go code in there, did you write the WebRTC server stuff yourself? If so, how come it's not published as a normal package which doesn't require docker?

I'm asking because I'm interested in remote desktop solutions, but in many cases I don't want/need docker, so any novel remote desktop utilities are interesting to me.

m1k1o wrote at 2021-12-01 21:56:26:

This repository features all custom writen code. Go backend and Vue frontend. It is publised as a container because of lots of dependencies and the overall environment setup.

Although, I think about publishing the core of it as a package, fully fledged alternative to noVNC. Where X server desktop can be shared using WebRTC technology to a browser.

JeremyNT wrote at 2021-12-01 22:31:16:

> Although, I think about publishing the core of it as a package, fully fledged alternative to noVNC. Where X server desktop can be shared using WebRTC technology to a browser.

I think that would be nice! There are a lot of ways to approach this (I've used xpra, vnc, remote X, xrdp...) and there are pros/cons to them all. It might be useful for more people without the docker requirement :)

mirotalk wrote at 2021-12-02 11:32:09:

Hi JeremyNT, you can try this one Open Source Remote Desktop P2P:

https://github.com/miroslavpejic85/p2p

jcun4128 wrote at 2021-12-01 19:00:16:

What's the bridge for the input? I'm not 100% yet on what this is doing, conceptually I think I got it. Streaming a video broadcast of a browser. But I would think that you need like a websocket to send the mouse coordinates/click/typing over the actual browser. Is that an extension in the browser or is it literally a remote OS kind of deal eg. Teamviewer.

Sean-Der wrote at 2021-12-01 19:13:51:

It is using a WebRTC Data Channel. You can send binary/text data over the same connection that is receiving the media.

The other exciting thing about Data Channels is that you can send lossy/unordered messages and get flow control. You can know how much data you can send and how fast. You can build faster and more responsive data APIs that way!

jcun4128 wrote at 2021-12-01 19:22:46:

What I'm saying is from the gif (repo README) you see this localhost web thing. I'm aware you can screenshare say from Chrome and show a tab or your whole desktop. In this way you have mouse control/people would just watch your screen. I'm not clear on how they're clicking into that shared browser (to use YouTube).

Normally for this kind of thing you need an OS-level component.

There's something on the GO side but trying to find the bridge on Vue side

https://github.com/m1k1o/neko/blob/master/server/internal/we...

idk maybe somewhere in here

https://github.com/m1k1o/neko/blob/master/client/src/compone...

I had to deal with this problem too with regard to remote control somehow without installing an OS-level app but that didn't happen went a different route.

Idk this is a cool project, looks like it is possible to do remote control with webrtc. And webrtc as said above can replace websocket for data transfer.

https://github.com/maxogden/screencat

ehh then again:

> On the host side the app must synthesize mouse and keyboard events on the host OS. This is the tricky part, and the only part where a custom native node addon (C++) is required.

Yet another cool project robotjs hmm

funnyflamigo wrote at 2021-12-01 21:13:45:

It's in a container with xorg running. It doesn't need kernel level access but it does need userland access which it does have access to in the container.

jcun4128 wrote at 2021-12-01 21:17:20:

> UserLAnd

Hmm that's cool I was not aware of this thing, not surprising but still cool to find out now.

numpad0 wrote at 2021-12-02 02:12:07:

“userland” is a UNIX term that roughly means “apps” but in ancient sense. UserLAnd is just an app for Android using that word stylized as its name.

jcun4128 wrote at 2021-12-02 02:46:08:

oh okay so they're not the same gotcha

kitd wrote at 2021-12-01 19:45:59:

Just FYI, Neko is also the name of the VM for the Haxe language:

https://haxe.org/manual/target-neko.html

SavantIdiot wrote at 2021-12-01 20:29:42:

It's also a 30-year-old X app that draws a cat which chases your cursor.

https://en.wikipedia.org/wiki/Neko_(software)

JasonFruit wrote at 2021-12-02 02:06:55:

Obviously less relevant.

davidgtl wrote at 2021-12-02 03:11:52:

Sakura-chan(catgirl skin) chasing my mouse feels offended. She is very energetic and relevant all day.

hedora wrote at 2021-12-02 02:23:10:

My first question was whether I could run the cat thing in this.

kazinator wrote at 2021-12-02 08:09:46:

The JLPT N5 level vocabulary is only yay big, so y'all have to either share, or start using bigger words like kabushikikaisha (stock company), nisankatanso (carbon dioxide) or KĹŤseirĹŤdĹŤshĹŤ (Ministry of Health, Labour and Welfare).

ScottyFillups wrote at 2021-12-02 00:33:34:

Hi all, after glancing at the comments it seems that a few people are confused about Neko and what its purpose is.

Neko is a self-hosted shared browser, which was built in response to a product called Rabb.it shutting down. Rabb.it had ~4 million MAUs and raised a series B before shutting down due to investors pulling out last-minute during their series C fundraising.

Rabb.it was focused on watch parties. There are a few reasons why shared browsing is more appealing than video sync and screenshare for this use case:

1. Screenshare requires good uplink—some people only have good download speeds

2. Some people are uncomfortable with sharing their screen, nobody likes being judged for their bookmark choices

3. Nobody acts as a "host", control can be passed around to anyone and people can leave whenever they want

In other words, you get the content variety of screenshare, but with the convenience of video sync.

And now for a shameless plug :)

Hyperbeam (formally Tutturu.tv) is a site I built in 2019 for my capstone project at the University of Waterloo. I built it because I wanted an easier way to watch anime with my friends, and decided to build something similar to Rabb.it. It's hosted and free!

https://hyperbeam.com

JeDaYoshi wrote at 2021-12-02 04:24:02:

Yep!

Outside of the points that Scotty made, not everyone has access to a computer, or don't have good enough ones to handle streaming as smoothly. In fact, there are multiple use-cases for this technology, considering it can work as a "cloud browser", either storing information or being completely disposable (as in, the whole browser activity/session/data gets destroyed after usage or on-demand). That said, for what we're used to, a lot of people use it for watch parties so they can share "a bit of the Internet" between friends, family, and even completely strangers!

And I say "we're" because I work on a similar, open-source, "Rabb.it alternative" (or VM-sharing platform, however you prefer to call it):

https://cryb.app

That said, that requires self-hosting, so feel free to check out Hyperbeam if fiddling up with configuring Node.js applications and Docker apps is not your thing! But if you wanna give yourself an adventure for this use-case, go ahead :)

mirotalk wrote at 2021-12-02 23:35:49:

Now is all clear, Thanks nice work and keep it up!

okdjnfweonfe wrote at 2021-12-01 20:06:45:

https://getmetastream.com/

is an also-FLOSS alternative, instead of a server, it syncs site interactions (e.g. opening up the same video on each person's browser, and then automatically hitting play, seek, etc)

So, pros and cons of each approach

rp1 wrote at 2021-12-01 20:44:36:

How does this approach handle different internet speeds? Video playback will be out of sync if buffer times differ.

matthewaveryusa wrote at 2021-12-01 19:39:23:

This is great for when you have a corporate laptop and you want to separate your personal browsing session from your work browsing session easily. I also like it because I setup a VPN for the browser and have access to some self-hosted stuff.

It also raises the bar for MiTMs to intercept your session cookies significantly.

chenders wrote at 2021-12-01 20:11:49:

you should never have a personal browsing session on a work laptop. DISCOVERY. not even once!

quickthrower2 wrote at 2021-12-02 10:35:23:

Can you elaborate? Are

You saying the session details might be revealed by a law suit? Wouldn’t that be limited to Urls? So not great if those reveal anything but checking your hotmail is not ok?

Or is it about corporate laptops possibly spying by taking screenshots and key logging?

kube-system wrote at 2021-12-01 21:20:27:

That's exactly what this would solve.

hedora wrote at 2021-12-02 03:02:27:

Keyloggers?

kf6nux wrote at 2021-12-02 04:16:01:

And screen loggers.

And MitM network traffic loggers.

That said, I guess everyone's threat model is different and maybe a remote browser like this solves some problem for them despite those constraints.

mirotalk wrote at 2021-12-02 00:10:16:

Wow! So there is the possibility of having remote screen control using the WebRTC for the stream and then other trick for the mouse coordinates and keyboard! I hope to be able to integrate it also in

https://github.com/miroslavpejic85/mirotalk

that would be great! Thank you so much for sharing! Maybe I can try to do it looking from:

https://github.com/maxogden/screencat

Keep it up!

Orphis wrote at 2021-12-02 01:41:00:

There are no APIs in WebRTC about remote screen control. You can share a screen, but that's it.

mirotalk wrote at 2021-12-02 06:52:59:

Yes, I know that, I mean someone mentioned here screencat, I’m not tried but seems with the addition of robot and electron it is possible I’m searching something to implement it in addition of WebRTC.

jfrunyon wrote at 2021-12-01 21:20:48:

I don't quite understand how this is better than just streaming your desktop? The readme says "author made this because ... his internet could not handle streaming" but this is just streaming the (in-docker) display, no?

m1k1o wrote at 2021-12-01 22:01:43:

But if you share your screen, you need to stream it to the peer. If this solution is already in the cloud on your VPS, meaning you only need to stream video to your computer. You send only small data of mouse/keyboard events.

So if you have better down link than uplink, what is really common with asynchronous digital subscriber lines, this is definitely the better choice.

jfrunyon wrote at 2021-12-02 17:12:35:

Fair enough! Although personally I would (/used to, 15 years ago) just stream my VPS's screen rather than running a Docker container inside my VPS :)

noobermin wrote at 2021-12-01 23:50:32:

Probably not your fault, the title of this post saying "Self hosted" isn't clear, I thought it meant "hosted on my PC" instead of being hosted elsewhere...I had the same question until I read readme and thought about it for a moment.

XCSme wrote at 2021-12-02 21:37:47:

You can also host it on your PC, right? If you install Docker and expose the ports? Or is it not truly self-hosted?

throwaway413 wrote at 2021-12-01 18:05:31:

Great project, thanks for sharing. Also in this space is Mighty (

https://mightyapp.com

). I believe streaming GUIs is the future of the web. We are already seeing this take off with cloud gaming like Stadia. Imagine a truly unified auth identity or in memory db that can communicate and share info across unrelated webapps, or browser macros that brings browser automation capability to the end user for their daily surfing. Or, a truly portable web OS that can operate across any device as a fullscreen PWA, complete with FS capability to the underlying Docker box, and access to your files and data across any instance.

xemoka wrote at 2021-12-01 18:43:36:

"Taking off" and "Stadia" in the same sentence seems... out of touch. Interesting ideas all around, and great engineering challenges. But these things aren't rocketing into the stratosphere of public acceptance and adoption.

throwaway413 wrote at 2021-12-01 20:09:18:

Hah, fair enough, didn’t realize it when typing it out but you’re right on Stadia not exactly being a rocket ship. Hey, I use it and enjoy it as a casual gamer.

I just meant we are seeing that type of tech start to pop up with Stadia and Xbox cloud gaming, as the gaming industry being an early adopter of this new web paradigm. I think we will see more industries begin to explore the space and the possibilities there.

The first use case I personally want to see handled is a set of inline browser developer tools that I can access from within a web page, meaning also across any device, without using an additional third party browser or native tooling.

imtringued wrote at 2021-12-02 09:28:06:

Nowadays, everyone builds their own rabb.it clones. I built mine in 2017 before rabb.it died.

alphabettsy wrote at 2021-12-01 17:28:13:

This is really cool.

I used an app called Puffin on iOS in the past and have wanted something similar for the same reasons the author listed.

politician wrote at 2021-12-01 17:34:20:

That’s quite a logo.

GordonS wrote at 2021-12-01 17:58:17:

Wow, you weren't joking?!

I wonder if there is any real rationale behind it, or if the author simply finds a cat's chocolate starfish particularly amusing?

consumer451 wrote at 2021-12-01 17:59:16:

> I wonder if there is any real rationale behind it, or if the author simply finds a cat's chocolate starfish particularly amusing?

Under "Why n.eko?"

>> I like cats (Neko is the Japanese word for cat), I'm a weeb/nerd.

>> But why the cat butt? Because cats are _assholes,_ but you love them anyways.

I was very happy to see that this was not a cliffhanger.

anaisbetts wrote at 2021-12-01 19:01:46:

It's pretty tasteless tbh and makes me definitely not want to use this app or share it with anyone whose opinion of me I care about

mmarat01 wrote at 2021-12-02 06:31:37:

Japanese plushies and toys of cats/dogs/others have buttholes all the time lol

st3ve445678 wrote at 2021-12-01 19:15:36:

First logo I've seen that incorporates a butthole, impressive.

the_doctah wrote at 2021-12-01 20:49:45:

I can't take this project seriously with that name and that logo. Weebs are so insufferable.

"Cats are assholes. Hehe does anyone else le reddit?"