neko mirror
Go to file
2020-01-14 20:42:29 +00:00
.devcontainer some more tweaks 2020-01-14 09:39:47 +00:00
.docker some more tweaks 2020-01-14 11:00:43 +00:00
.github some more tweaks 2020-01-14 09:39:47 +00:00
client some more tweaks 2020-01-14 09:39:47 +00:00
server some more tweaks 2020-01-14 11:00:43 +00:00
.gitattributes first commit 2020-01-13 08:05:38 +00:00
.gitignore first commit 2020-01-13 08:05:38 +00:00
docker-compose.yaml 2.0 for compatibility 2020-01-14 20:42:29 +00:00
Dockerfile some more tweaks 2020-01-14 09:39:47 +00:00
neko.code-workspace first commit 2020-01-13 08:05:38 +00:00
README.md readme tweak 2020-01-14 20:42:07 +00:00
tsconfig.json first commit 2020-01-13 08:05:38 +00:00

n.eko

This is a proof of concept project I threw together over the last few days, it's ugly, it's not perfect, but it looks nice. This uses web rtc to stream a desktop inside of a docker container, I made this because rabb.it went under and my internet can't handle streaming and discord keeps crashing. I just want to watch anime with my friends ლ(ಠ益ಠლ) so I started digging throughout the net and found a few kinda clones, but non of them had the virtual browser, then I found Turtus and I was able to figure out the rest.

This is by no means a fully featured clone of rabbit. The client has no concept of other peers. It has bugs, but for the most part it works. I'm not sure what the future holds for this. If I continue to use it and like it, I'll probably keep pushing updates to it. I'd be happy to accept PRs for any improvements.

Why n.eko?

I like cats (Neko is the Japanese word for cat), I'm a weeb/nerd, I own the domain n.eko.moe and I love the logo /shrug

Super easy mode setup

  1. Head on to Digital Ocean and create an account
  2. Go here and click on "Create Docker Droplet"
  3. Configure the droplet:
    • 576p [$15/mo] Not Recommended
    • 720p [$40/mo] Good Performance
    • 720p [$80/mo] Recommended
    • 720p+ [$160/mo] Best Performance
  4. Login to the droplet over ssh
  5. Run these commands:
    ufw allow 80/tcp
    wget https://raw.githubusercontent.com/nurdism/neko/master/docker-compose.yaml
    docker-compose up -d
    
  6. Visit the IP address of the droplet in your browser and login, the default password is neko

Protip: Run nano docker-compose.yaml to edit the settings, then press ctrl+x to exit and save the file.

Heres the cool part, this will only cost you a little bit (maybe a few cents), as long as you remember to delete the droplet after you are done! Droplets are charged per hour, so when you want to share, just create a new droplet and start sharing.

Running the container:

sudo docker run -p 8080:8080 -e NEKO_PASSWORD='secret' --shm-size=2gb nurdism/neko:latest 

Note: --shm-size=2gb is required, firefox-esr tabs will crash (not sure if 2gb is really needed)

Config

NEKO_USER=$USERNAME     // User
NEKO_DISPLAY=0          // Display number
NEKO_WIDTH=1280         // Display width
NEKO_HEIGHT=720         // Display height
NEKO_PASSWORD=neko      // Password
NEKO_BIND=0.0.0.0:8080  // Bind
NEKO_KEY=               // (SSL)Key 
NEKO_CERT=              // (SSL)Cert

Development

Highly recommend you use a dev container for vscode, I've included the .devcontainer I've used to develop this app. To build neko run: cd .docker && ./build

Goals

  • Remove need for gstreamer, handle encoding/capturing with go
  • Make firefox work with client (wrtc issues)
  • Remove the need for supervisor and handle starting/stopping the applications
  • Find ouw witch audio/video codec is the cheapest as far as data and performance goes (with minimal quality loss)
  • Slim down the robotgo package and just handle the key io
  • Add user names for the client
  • Add (text) chat for the client
  • Add that cool emoji thing rabb.it had
  • Slim down the docker container (use alpine)