[HN Gopher] Show HN: Neko - Self hosted virtual browser that run...
       ___________________________________________________________________
        
       Show HN: Neko - Self hosted virtual browser that runs in Docker and
       uses WebRTC
        
       Author : m1k1o
       Score  : 135 points
       Date   : 2021-12-01 17:04 UTC (5 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | kitd wrote:
       | Just FYI, Neko is also the name of the VM for the Haxe language:
       | 
       | https://haxe.org/manual/target-neko.html
        
         | SavantIdiot wrote:
         | It's also a 30-year-old X app that draws a cat which chases
         | your cursor.
         | 
         | https://en.wikipedia.org/wiki/Neko_(software)
        
       | throwaway413 wrote:
       | 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:
         | "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:
           | 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.
        
       | lbotos wrote:
       | 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.
        
         | [deleted]
        
         | m1k1o wrote:
         | 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:
           | 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:
             | 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:
               | > 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 :)
        
           | jcun4128 wrote:
           | 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:
             | 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:
               | 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:
               | 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:
               | > UserLAnd
               | 
               | Hmm that's cool I was not aware of this thing, not
               | surprising but still cool to find out now.
        
       | alphabettsy wrote:
       | 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:
       | That's quite a logo.
        
         | GordonS wrote:
         | 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:
           | > 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:
         | 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
        
       | Sean-Der wrote:
       | 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:
         | 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
        
       | st3ve445678 wrote:
       | First logo I've seen that incorporates a butthole, impressive.
        
       | matthewaveryusa wrote:
       | 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:
         | you should never have a personal browsing session on a work
         | laptop. DISCOVERY. not even once!
        
           | kube-system wrote:
           | That's exactly what this would solve.
        
       | the_doctah wrote:
       | 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?"
        
       | okdjnfweonfe wrote:
       | 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:
         | How does this approach handle different internet speeds? Video
         | playback will be out of sync if buffer times differ.
        
       | jfrunyon wrote:
       | 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:
         | 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.
        
       ___________________________________________________________________
       (page generated 2021-12-01 23:01 UTC)