35 ms·
Show HN: Neko – Self hosted virtual browser that runs in Docker and uses WebRTC
- brujoand 5y agoThis looks really cool! But is there a tool like this that only does the remote browser?
- lbotos 5y agoI 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 5y agoAlternative 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.
- jcun4128 5y agoWhat'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 5y agoIt 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 5y agoWhat 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/websocket/control.go#L88 https://github.com/m1k1o/neko/blob/master/server/internal/we... idk maybe somewhere in here https://github.com/m1k1o/neko/blob/master/client/src/components/controls.vue#L252 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 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 5y agoIt'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.
- JeremyNT 5y agoI 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 5y agoThis 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 5y ago> 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 5y agoHi JeremyNT, you can try this one Open Source Remote Desktop P2P: https://github.com/miroslavpejic85/p2p https://github.com/miroslavpejic85/p2p
- deleted 5y ago[deleted]
- alphabettsy 5y agoThis 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 5y agoThat’s quite a logo.
- GordonS 5y agoWow, 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 5y ago> 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 5y agoIt'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 5y agoJapanese plushies and toys of cats/dogs/others have buttholes all the time lol
- Sean-Der 5y agoNeko 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 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 5y agoSeems 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 5y agopicarto.tv * And thanks, I didn't know it
- m0lecules 5y agosorry 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 5y agoafaik those don’t let both parties control the mouse. I thought that’s what this does.
- throwaway413 5y agoGreat project, thanks for sharing. Also in this space is Mighty (https://mightyapp.com 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 5y ago"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 5y agoHah, 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.
- st3ve445678 5y agoFirst logo I've seen that incorporates a butthole, impressive.
- matthewaveryusa 5y agoThis 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 5y agoyou should never have a personal browsing session on a work laptop. DISCOVERY. not even once!
- kube-system 5y agoThat's exactly what this would solve.
- quickthrower2 5y agoCan 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?
- kitd 5y agoJust FYI, Neko is also the name of the VM for the Haxe language: https://haxe.org/manual/target-neko.html https://haxe.org/manual/target-neko.html
- SavantIdiot 5y agoIt's also a 30-year-old X app that draws a cat which chases your cursor. https://en.wikipedia.org/wiki/Neko_(software) https://en.wikipedia.org/wiki/Neko_(software)
- JasonFruit 5y agoObviously less relevant.
- SixDouble5321 5y agoConsidering neko translates to cat, it may be the most relevant.
- hedora 5y agoMy first question was whether I could run the cat thing in this.
- davidgtl 5y agoSakura-chan(catgirl skin) chasing my mouse feels offended. She is very energetic and relevant all day.
- Lord_Zero 5y ago> Obviously less relevant. From the github.... > Why n.eko? > I like cats (Neko is the Japanese word for cat), I'm a weeb/nerd.
- kazinator 5y agoThe 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).
- okdjnfweonfe 5y agohttps://getmetastream.com/ 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 5y agoHow does this approach handle different internet speeds? Video playback will be out of sync if buffer times differ.
- the_doctah 5y agoI 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?"
- jfrunyon 5y agoI 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 5y agoBut 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.
- noobermin 5y agoProbably 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 5y agoYou can also host it on your PC, right? If you install Docker and expose the ports? Or is it not truly self-hosted?
- jfrunyon 5y agoFair 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 :)
- mirotalk 5y agoWow! 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 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 https://github.com/maxogden/screencat Keep it up!
- Orphis 5y agoThere are no APIs in WebRTC about remote screen control. You can share a screen, but that's it.
- mirotalk 5y agoYes, 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.
- ScottyFillups 5y agoHi 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 https://hyperbeam.com
- JeDaYoshi 5y agoYep! 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 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 :)
- deleted 5y ago[deleted]
- mirotalk 5y ago
- imtringued 5y agoNowadays, everyone builds their own rabb.it clones. I built mine in 2017 before rabb.it died.