diff --git a/README.md b/README.md index 2f399ab..5b7b1d7 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,23 @@
- +

- release - license - pulls - issues + + release + + + license + + + pulls + + + issues + + + issues + Chat on discord @@ -14,11 +25,7 @@ build

-
-
-
-
# n.eko @@ -27,15 +34,77 @@ This app uses WebRTC to stream a desktop inside of a docker container, original Then I found [this](https://github.com/nurdism/neko) project and started to dig into it. I really liked the idea of having collaborative browser browsing together with mutliple people, so I created a fork. Initially, I wanted to merge my changes to the upstream repository, but the original author did not have time for this project anymore and it got eventually archived. +## Use-cases and comparison + +Neko started as a virtual browser that is streamed using WebRTC to multiple users. +- It is **not only limited to a browser**; it can run anything that runs on linux (e.g. VLC). Browser only happens to be the most popular and widely used use-case. +- In fact, it is not limited to a single program either; you can install a full desktop environment (e.g. XFCE). +- Speaking of limits, it does not need to run in a container; you could install neko on your host, connect to your X server and control your whole VM. +- Theoretically it is not limited to only X server, anything that can be controlled and scraped periodically for images could be used instead. + - Like implementing RDP or VNC protocol, where neko would only act as WebRTC relay server. This is currently only future. + +Primary use case is connecting with multiple people, leveraging real time synchronization and interactivity: +- **Watch party** - watching video content together with multiple people and reacting to it (chat, emotes) - open source alternative to [giggl.app](https://giggl.app/). +- **Interactive presentation** - not only screen sharing, but others can control the screen. +- **Collaborative tool** - brainstorming ideas, cobrowsing, code debugging together. +- **Support/Teaching** - interactively guiding people in controlled environment. +- **Embed anything** - embed virtual browser in your web app - open source alternative to [hyperbeam](https://hyperbeam.com/). + - open any third-party website or application, synchronize audio and video flawlessly among multiple participants. + - request rooms using API with [neko-rooms](https://github.com/m1k1o/neko-rooms). + +Other use cases that benefit from single-user: +- **Personal workspace** - streaming containerized apps and desktops to end-users - similar to [kasm](https://www.kasmweb.com/). +- **Persistent browser** - own browser with persistent cookies available anywhere - similar to [mightyapp](https://www.mightyapp.com/). + - no state is left on the host browser after terminating the connection. + - sensitive data like cookies are not transferred - only video is shared. +- **Throwaway browser** - a better solution for planning secret parties and buying birthday gifts off the internet. + - use Tor Browser and [VPN](https://github.com/m1k1o/neko-vpn) for additional anonymity. + - mitigates risk of OS fingerprinting and browser vulnerabilities by running in container. +- **Session broadcasting** - broadcast room content using RTMP (to e.g. twitch or youtube...). +- **Session recording** - broadcast RTMP can be saved to a file using e.g. [nginx-rtmp](https://www.nginx.com/products/nginx/modules/rtmp-media-streaming/) + - have clean environment when recording tutorials. + - no need to hide bookmarks or use incognito mode. +- **Jump host** - access your internal applications securely without the need for VPN. +- **Automated browser** - you can install [playwright](https://playwright.dev/) or [puppeteer](https://pptr.dev/) and automate tasks while being able to actively intercept them. + +Compared to clientless remote desktop gateway (e.g. [Apache Guacamole](https://guacamole.apache.org/) or [websockify](https://github.com/novnc/websockify) with [noVNC](https://novnc.com/)), installed with remote desktop server along with desired program (e.g. [linuxserver/firefox](https://docs.linuxserver.io/images/docker-firefox)) provides neko additionally: +- **Smooth video** because it uses WebRTC and not images sent over WebSockets. +- **Built in audio** support, what is not part of Apache Guacamole or noVNC. +- **Multi-participant control**, what is not natively supported by Apache Guacamole or noVNC. + +### Supported browsers + +
+ + + + + + + + +
+ +### Other programs + +
+ + + + + ... others in m1k1o/neko-apps +
+ ### Features * Text Chat (With basic markdown support, discord flavor) - * Admin users (Kick, Ban & Force Give/Release Controls) + * Admin users (Kick, Ban & Force Give/Release Controls, Lock room) * Clipboard synchronization (on [supported browsers](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/readText)) * Emote overlay * Ignore user (chat and emotes) * Persistent settings * Automatic Login with custom url args. (add `?usr=&pwd=` to the url.) + * Broadcasting room content using RTMP (to e.g. twitch or youtube...) ### Why n.eko? @@ -43,13 +112,13 @@ 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. -# Multiple rooms +## Multiple rooms For n.eko room management software, visit [neko-rooms](https://github.com/m1k1o/neko-rooms). It also offers zero-knowledge [installation script (with HTTPS and Traefik)](https://github.com/m1k1o/neko-rooms/#zero-knowledge-installation-with-https-and-traefik). -# Documentation +## Documentation * [Getting Started](https://neko.m1k1o.net/#/getting-started/) * [Quick Start](https://neko.m1k1o.net/#/getting-started/quick-start) @@ -63,6 +132,10 @@ It also offers zero-knowledge [installation script (with HTTPS and Traefik)](htt * [Technologies](https://neko.m1k1o.net/#/technologies) * [Changelog](https://neko.m1k1o.net/#/changelog) -# How to contribute? How to build? +## How to contribute? How to build? Navigate to [.docker](.docker) folder for further information. + +## Support + +If you want to support this project, you can do it [here](https://github.com/sponsors/m1k1o). diff --git a/docs/_media/icons/brave.svg b/docs/_media/icons/brave.svg new file mode 100644 index 0000000..80d23c4 --- /dev/null +++ b/docs/_media/icons/brave.svg @@ -0,0 +1,4 @@ + + + + diff --git a/docs/_media/icons/chromium.svg b/docs/_media/icons/chromium.svg new file mode 100644 index 0000000..7f27f9a --- /dev/null +++ b/docs/_media/icons/chromium.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_media/icons/firefox.svg b/docs/_media/icons/firefox.svg new file mode 100644 index 0000000..1386274 --- /dev/null +++ b/docs/_media/icons/firefox.svg @@ -0,0 +1,111 @@ + + + +Firefox Browser logo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/_media/icons/google-chrome.svg b/docs/_media/icons/google-chrome.svg new file mode 100644 index 0000000..6f20e80 --- /dev/null +++ b/docs/_media/icons/google-chrome.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/_media/icons/microsoft-edge.svg b/docs/_media/icons/microsoft-edge.svg new file mode 100644 index 0000000..2fa37ce --- /dev/null +++ b/docs/_media/icons/microsoft-edge.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_media/icons/opera.svg b/docs/_media/icons/opera.svg new file mode 100644 index 0000000..01e2b01 --- /dev/null +++ b/docs/_media/icons/opera.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/docs/_media/icons/remmina.png b/docs/_media/icons/remmina.png new file mode 100644 index 0000000..bf91068 Binary files /dev/null and b/docs/_media/icons/remmina.png differ diff --git a/docs/_media/icons/tor-browser.svg b/docs/_media/icons/tor-browser.svg new file mode 100644 index 0000000..f0ceb85 --- /dev/null +++ b/docs/_media/icons/tor-browser.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/_media/icons/vivaldi.svg b/docs/_media/icons/vivaldi.svg new file mode 100644 index 0000000..cd38f15 --- /dev/null +++ b/docs/_media/icons/vivaldi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/_media/icons/vlc.svg b/docs/_media/icons/vlc.svg new file mode 100644 index 0000000..0938593 --- /dev/null +++ b/docs/_media/icons/vlc.svg @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/_media/icons/xfce.svg b/docs/_media/icons/xfce.svg new file mode 100644 index 0000000..10d087a --- /dev/null +++ b/docs/_media/icons/xfce.svg @@ -0,0 +1,95 @@ + + + XFCE 4 Logo + + + + image/svg+xml + + XFCE 4 Logo + + + Savvas Radevic + + + http://www.xfce.org/about/artwork + + XFCE logo +* Based on xfce_logo.svg from http://www.xfce.org/about/artwork +* Optimized colours +* Added "X" and "XFCE" text. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/getting-started/README.md b/docs/getting-started/README.md index b3678b1..cf19c64 100644 --- a/docs/getting-started/README.md +++ b/docs/getting-started/README.md @@ -1,5 +1,19 @@ # Getting started & FAQ +
+ + + + + + + + + + + +
+ Use the following docker images: - `m1k1o/neko:latest` or `m1k1o/neko:firefox` - for Firefox. - `m1k1o/neko:chromium` - for Chromium (needs `--cap-add=SYS_ADMIN`, see the [security implications](https://www.redhat.com/en/blog/container-tidbits-adding-capabilities-container)).