# 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
+
+
+
### 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 00000000..80d23c4b
--- /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 00000000..7f27f9a8
--- /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 00000000..13862742
--- /dev/null
+++ b/docs/_media/icons/firefox.svg
@@ -0,0 +1,111 @@
+
+
+
\ 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 00000000..6f20e808
--- /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 00000000..2fa37cef
--- /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 00000000..01e2b01b
--- /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 00000000..bf910688
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 00000000..f0ceb85e
--- /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 00000000..cd38f150
--- /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 00000000..09385930
--- /dev/null
+++ b/docs/_media/icons/vlc.svg
@@ -0,0 +1,107 @@
+
+
\ 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 00000000..10d087af
--- /dev/null
+++ b/docs/_media/icons/xfce.svg
@@ -0,0 +1,95 @@
+
+
\ No newline at end of file
diff --git a/docs/getting-started/README.md b/docs/getting-started/README.md
index b3678b18..cf19c645 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)).