diff --git a/.github/logo.png b/.github/logo.png deleted file mode 100644 index 46ffaba9..00000000 Binary files a/.github/logo.png and /dev/null differ diff --git a/README.md b/README.md index 168f01c3..bf1154f1 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@
- -
- -
+ +
+
+
+
-# **n**.eko +# n.eko This app uses Web RTC to stream a desktop inside of a docker container, I made this because [rabb.it](https://en.wikipedia.org/wiki/Rabb.it) went under and my internet can't handle streaming and discord keeps crashing when my friend attempts to. I just want to watch anime with my friends ლ(ಠ益ಠლ) so I started digging throughout the internet and found a few *kinda* clones, but none of them had the virtual browser, then I found [Turtus](https://github.com/Khauri/Turtus) and I was able to figure out the rest. This is by no means a fully featured clone of rabbit, it hs only *one* room. It's stateless, so no saved user names or passwords. ### Features @@ -15,87 +16,9 @@ * Clipboard synchronization (on [supported browsers](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/readText)) * Emote overlay * Ignore user (chat and emotes) - * Settings are saved to local storage + * Persistent settings -### Why **n**.eko? +### 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. - -### Super easy mode setup -1. Deploy a server or VPS - - *Recommended Specs:* - - | Resolution | Cores | Ram | Recommendation | - |------------|-------|-------|------------------| - | **576p** | 2 | 2gb | Not Recommended | - | **720p** | 4 | 4gb | Good Performance | - | **720p** | 6 | 4-6gb | Recommended | - | **720p+** | 8 | 8gb+ | Best Performance | - - ***Why are the specs so high?*** : If you think about it, you have to run a full desktop, a browser (a resource hog on its own) *and* encode/transmit the desktop, there's a lot going on and so it demands some power. - -2. [Login via SSH](https://www.digitalocean.com/docs/droplets/how-to/connect-with-ssh/) - -3. Install Docker - ``` - curl -sSL https://get.docker.com/ | CHANNEL=stable bash - ``` -4. Run these commands: - ``` - sudo ufw allow 80/tcp // if you have ufw installed/enabled - sudo ufw allow 59000:59100/udp - wget https://raw.githubusercontent.com/nurdism/neko/master/docker-compose.yaml - sudo docker-compose up -d - ``` -5. Visit the IP address server 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. - -### Running: -#### Chromium container: -``` -sudo docker run -p 80:8080 -p 59000-59100:59000-59100/udp -e NEKO_PASSWORD='secret' -e NEKO_ADMIN='secret' --cap-add SYS_ADMIN nurdism/neko:chromium -``` -*Note:* `--cap-add SYS_ADMIN` is required for chromium to run properly - ----- -#### Firefox container: -``` -sudo docker run -p 8080:8080 -p 59000-59100:59000-59100/udp -e NEKO_PASSWORD='secret' -e NEKO_ADMIN='secret' --shm-size=1gb nurdism/neko:firefox -``` -*Note:* `--shm-size=1gb` is required for firefox, tabs will crash otherwise - - -### Docker Basic Configuration -``` -SCREEN_WIDTH=1280 // Display width -SCREEN_HEIGHT=720 // Display height -SCREEN_DEPTH=24 // Display bit depth -DISPLAY=:99.0 // Display number - -NEKO_PASSWORD=neko // Password -NEKO_ADMIN=neko // Admin Password -NEKO_BIND=0.0.0.0:8080 // Bind -NEKO_KEY= // (SSL)Key, needed for clipboard sync -NEKO_CERT= // (SSL)Cert, needed for clipboard sync -``` -for full documentation on configuring the server [go here](./server/README.md) - -### Development -*Highly* recommend you use a [dev container](https://code.visualstudio.com/docs/remote/containers) for [vscode](https://code.visualstudio.com/), I've included the `.devcontainer` I've used to develop this app. To build **n**.eko docker container run: -``` -cd .docker && ./build docker -``` -the `.docker` folder also contains `./test ` bash script which will launch a desktop with a browser for testing out any changes with the server. - -To run the client with hot loading (for development of new client features) -``` -cd ./client && npm run serve -``` - -### Non Goals -* Turning n.eko into a service that serves multiple rooms and browsers/desktops. -* Supporting multiple platforms -* Voice chat, use [Discord](https://discordapp.com/) \ No newline at end of file diff --git a/client/ABOUT.md b/client/ABOUT.md deleted file mode 100644 index 0b635e2e..00000000 --- a/client/ABOUT.md +++ /dev/null @@ -1,12 +0,0 @@ -
- -
- -# **n**.eko - This app uses Web RTC to stream a desktop inside of a docker container, I made this because [rabb.it](https://en.wikipedia.org/wiki/Rabb.it) went under and my internet can't handle streaming and discord keeps crashing when my friend attempts to. I just want to watch anime with my friends ლ(ಠ益ಠლ) so I started digging throughout the internet and found a few *kinda* clones, but none of them had the virtual browser, then I found [Turtus](https://github.com/Khauri/Turtus) and I was able to figure out the rest. This is by no means a fully featured clone of rabbit, it hs only *one* room. It's stateless, so no saved user names or passwords. - -### 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. - diff --git a/client/README.md b/client/README.md deleted file mode 100644 index 58f99497..00000000 --- a/client/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# **n**.eko client -Web client for n.eko - -### Environment ------- -``` -VUE_APP_SERVER_PORT // development server port -``` - -### Building ------- -``` -npm install && npm run build -``` diff --git a/client/src/components/about.vue b/client/src/components/about.vue index c94562c8..1449ef5e 100644 --- a/client/src/components/about.vue +++ b/client/src/components/about.vue @@ -147,7 +147,7 @@ if (this.about === '') { this.loading = true this.$http - .get('https://raw.githubusercontent.com/nurdism/neko/master/client/ABOUT.md') + .get('https://raw.githubusercontent.com/nurdism/neko/master/docs/README.md') .then(res => { return this.$http.post('https://api.github.com/markdown', { text: res.data, diff --git a/docs/README.md b/docs/README.md index 0dc9b427..bf1154f1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,101 +1,24 @@
- -
- -
+ +
+
+
+
-# **n**.eko +# n.eko This app uses Web RTC to stream a desktop inside of a docker container, I made this because [rabb.it](https://en.wikipedia.org/wiki/Rabb.it) went under and my internet can't handle streaming and discord keeps crashing when my friend attempts to. I just want to watch anime with my friends ლ(ಠ益ಠლ) so I started digging throughout the internet and found a few *kinda* clones, but none of them had the virtual browser, then I found [Turtus](https://github.com/Khauri/Turtus) and I was able to figure out the rest. This is by no means a fully featured clone of rabbit, it hs only *one* room. It's stateless, so no saved user names or passwords. ### Features * Text Chat (With basic markdown support, discord flavor) * Admin users (Kick, Ban & Force Give/Release Controls) - * Clipboard synchronization + * Clipboard synchronization (on [supported browsers](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/readText)) * Emote overlay * Ignore user (chat and emotes) - * Settings are saved to local storage + * Persistent settings -### Why **n**.eko? +### 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. - -### Super easy mode setup -1. Deploy a server or VPS - - *Recommended Specs:* - - | Resolution | Cores | Ram | Recommendation | - |------------|-------|-------|------------------| - | **576p** | 2 | 2gb | Not Recommended | - | **720p** | 4 | 4gb | Good Performance | - | **720p** | 6 | 4-6gb | Recommended | - | **720p+** | 8 | 8gb+ | Best Performance | - - ***Why are the specs so high?*** : If you think about it, you have to run a full desktop, a browser (a resource hog on its own) *and* encode/transmit the desktop, there's a lot going on and so it demands some power. - -2. [Login via SSH](https://www.digitalocean.com/docs/droplets/how-to/connect-with-ssh/) - -3. Install Docker - ``` - curl -sSL https://get.docker.com/ | CHANNEL=stable bash - ``` -4. Run these commands: - ``` - sudo ufw allow 80/tcp // if you have ufw installed/enabled - sudo ufw allow 59000:59100/udp - wget https://raw.githubusercontent.com/nurdism/neko/master/docker-compose.yaml - sudo docker-compose up -d - ``` -5. Visit the IP address your server 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. - -### Running: -#### Chromium container: -``` -sudo docker run -p 80:8080 -p 59000-59100:59000-59100/udp -e NEKO_PASSWORD='secret' -e NEKO_ADMIN='secret' --cap-add SYS_ADMIN nurdism/neko:chromium -``` -*Note:* `--cap-add SYS_ADMIN` is required for chromium to run properly - ----- -#### Firefox container: -``` -sudo docker run -p 8080:8080 -p 59000-59100:59000-59100/udp -e NEKO_PASSWORD='secret' -e NEKO_ADMIN='secret' --shm-size=1gb nurdism/neko:firefox -``` -*Note:* `--shm-size=1gb` is required for firefox, tabs will crash otherwise - - -### Docker Basic Configuration -``` -SCREEN_WIDTH=1280 // Display width -SCREEN_HEIGHT=720 // Display height -SCREEN_DEPTH=24 // Display bit depth -DISPLAY=:99.0 // Display number - -NEKO_PASSWORD=neko // Password -NEKO_ADMIN=neko // Admin Password -NEKO_BIND=0.0.0.0:8080 // Bind -NEKO_KEY= // (SSL)Key, needed for clipboard sync -NEKO_CERT= // (SSL)Cert, needed for clipboard sync -``` -for full documentation on configuring the server [go here](./server/README.md) - -### Development -*Highly* recommend you use a [dev container](https://code.visualstudio.com/docs/remote/containers) for [vscode](https://code.visualstudio.com/), I've included the `.devcontainer` I've used to develop this app. To build **n**.eko docker container run: -``` -cd .docker && ./build docker -``` -the `.docker` folder also contains `./test ` bash script which will launch a desktop with a browser for testing out any changes with the server. - -To run the client with hot loading (for development of new client features) -``` -cd ./client && npm run serve -``` - -### Non Goals -* Turning n.eko into a service that serves multiple rooms and browsers/desktops. -* Supporting multiple platforms -* Voice chat, use [Discord](https://discordapp.com/) \ No newline at end of file diff --git a/docs/_coverpage.md b/docs/_coverpage.md index e69de29b..3d06b42b 100644 --- a/docs/_coverpage.md +++ b/docs/_coverpage.md @@ -0,0 +1,12 @@ + + + + +> A self hosted virtual browser that runs in docker + +[GitHub](https://github.com/nurdism/neko/) +[Get Started](#neko) + + + +![color](#18191c) \ No newline at end of file diff --git a/docs/_media/logo.png b/docs/_media/logo.png new file mode 100644 index 00000000..a611a7ba Binary files /dev/null and b/docs/_media/logo.png differ diff --git a/docs/_sidebar.md b/docs/_sidebar.md index e69de29b..efa7334f 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -0,0 +1,14 @@ + + +* [Getting Started](/getting-started) + * [Quick Start](/quick-start) + * [Configuration](/configuration) +* [Development](/development) + * [Client](/client) + * [Server](/server) + * [Docker](/docker) + * [Non Goals](/non-goals) + * [Contributing](/contributing) + * [Change logs](/change-logs/) +* [Technologies](/technologies) +* [Glossary](/glossary) \ No newline at end of file diff --git a/docs/change-logs/README.md b/docs/change-logs/README.md new file mode 100644 index 00000000..0ad0430b --- /dev/null +++ b/docs/change-logs/README.md @@ -0,0 +1 @@ +# Change logs (WIP) \ No newline at end of file diff --git a/docs/client.md b/docs/client.md index e69de29b..9c0e17ef 100644 --- a/docs/client.md +++ b/docs/client.md @@ -0,0 +1,14 @@ +# Client (WIP) +Web client for n.eko + +## Environment +------ +``` +VUE_APP_SERVER_PORT // development server port +``` + +## Building +------ +``` +npm install && npm run build +``` diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 00000000..ed163ad4 --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,10 @@ +# Configuration (WIP) + +## Docker Basic Configuration +``` +NEKO_PASSWORD=neko // Password +NEKO_ADMIN=neko // Admin Password +NEKO_BIND=0.0.0.0:8080 // Bind +NEKO_KEY= // (SSL) Key, needed for clipboard sync +NEKO_CERT= // (SSL) Cert, needed for clipboard sync +``` \ No newline at end of file diff --git a/docs/contributing.md b/docs/contributing.md index e69de29b..5fed7537 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -0,0 +1 @@ +# Contributing (WIP) diff --git a/docs/development.md b/docs/development.md index e69de29b..ee58f8ee 100644 --- a/docs/development.md +++ b/docs/development.md @@ -0,0 +1,12 @@ +# Development (WIP) + +*Highly* recommend you use a [dev container](https://code.visualstudio.com/docs/remote/containers) for [vscode](https://code.visualstudio.com/), I've included the `.devcontainer` I've used to develop this app. To build **n**.eko docker container run: +``` +cd .docker && ./build docker +``` +the `.docker` folder also contains `./test ` bash script which will launch a desktop with a browser for testing out any changes with the server. + +To run the client with hot loading (for development of new client features) +``` +cd ./client && npm run serve +``` \ No newline at end of file diff --git a/docs/docker.md b/docs/docker.md index e69de29b..ea53e15e 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -0,0 +1,15 @@ +# Docker (WIP) + +## Running: +### Chromium container: +``` +sudo docker run -p 80:8080 -p 59000-59100:59000-59100/udp -e NEKO_PASSWORD='secret' -e NEKO_ADMIN='secret' --cap-add SYS_ADMIN --shm-size=1gb nurdism/neko:chromium +``` +*Note:* `--cap-add SYS_ADMIN` & `--shm-size=1gb` is required for chromium to run properly + +---- +### Firefox container: +``` +sudo docker run -p 8080:8080 -p 59000-59100:59000-59100/udp -e NEKO_PASSWORD='secret' -e NEKO_ADMIN='secret' --shm-size=1gb nurdism/neko:firefox +``` +*Note:* `--shm-size=1gb` is required for firefox, tabs will crash otherwise \ No newline at end of file diff --git a/docs/getting-started.md b/docs/getting-started.md index e69de29b..4f999031 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -0,0 +1 @@ +# Getting Started (WIP) diff --git a/docs/glossary.md b/docs/glossary.md new file mode 100644 index 00000000..69a11b92 --- /dev/null +++ b/docs/glossary.md @@ -0,0 +1 @@ +# Glossary (WIP) diff --git a/docs/index.html b/docs/index.html index e26d503b..8fccd9a3 100644 --- a/docs/index.html +++ b/docs/index.html @@ -6,17 +6,21 @@ - +
diff --git a/docs/non-goals.md b/docs/non-goals.md new file mode 100644 index 00000000..381d12f5 --- /dev/null +++ b/docs/non-goals.md @@ -0,0 +1,5 @@ +# Non Goals (WIP) + +* Turning n.eko into a service that serves multiple rooms and browsers/desktops. +* Supporting multiple platforms +* Voice chat, use [Discord](https://discordapp.com/) \ No newline at end of file diff --git a/docs/quick-start.md b/docs/quick-start.md new file mode 100644 index 00000000..28509c73 --- /dev/null +++ b/docs/quick-start.md @@ -0,0 +1,33 @@ +# Quick Start (WIP) + +1. Deploy a server or VPS + + **Recommended Specs:** + + | Resolution | Cores | Ram | Recommendation | + |-------------|-------|-------|------------------| + | 1024×576@30 | 2 | 2gb | Not Recommended | + | 1280x720@30 | 4 | 4gb | Good Performance | + | 1280x720@30 | 6 | 4-6gb | Recommended | + | 1280x720@30 | 8 | 8gb+ | Best Performance | + + *Why are the specs so high?* : If you think about it, you have to run a full desktop, a browser (a resource hog on its own) *and* encode/transmit the desktop, there's a lot going on and so it demands some power. + + *Note:* changing the resolution will require additional setup + +2. [Login via SSH](https://www.digitalocean.com/docs/droplets/how-to/connect-with-ssh/) + +3. Install Docker + ```shell + curl -sSL https://get.docker.com/ | CHANNEL=stable bash + ``` +4. Run these commands: + ```shell + sudo ufw allow 80/tcp # if you have ufw installed/enabled + sudo ufw allow 59000:59100/udp + wget https://raw.githubusercontent.com/nurdism/neko/master/docker-compose.yaml + sudo docker-compose up -d + ``` +5. Visit the IP address server 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. \ No newline at end of file diff --git a/docs/server.md b/docs/server.md index e69de29b..b2a8489d 100644 --- a/docs/server.md +++ b/docs/server.md @@ -0,0 +1,65 @@ +# Server (WIP) +Server for n.eko, as of right now this will *only* work on Linux systems, only tested on Debian based distros. + +## Configuration +------ +``` +--debug // (bool) enable debug mode +--logs // (bool) save logs to file +--config "" // (string) configuration file path +--bind "127.0.0.1:8080" // (string) address/port/socket to serve neko +--cert "" // (string) path to the SSL cert used to secure the neko server +--key "" // (string) path to the SSL key used to secure the neko server +--static "./www" // (string) path to neko client files to serve +--device "auto_null.monitor" // (string) audio device to capture +--display ":99.0" // (string) XDisplay to capture +--aduio "" // (string) audio codec parameters to use for streaming (unused) +--video "" // (string) video codec parameters to use for streaming (unused) +--epr "59000-59100" // (string) limits the pool of ephemeral ports that ICE UDP connections can allocate from +--vp8 // (bool) use VP8 video codec +--vp9 // (bool) use VP9 video codec +--h264 // (bool) use H264 video codec +--opus // (bool) use Opus audio codec +--g722 // (bool) use G722 audio codec +--pcmu // (bool) use PCMU audio codec +--pcma // (bool) use PCMA audio codec +--password "neko" // (string) password for connecting to stream +--admin "admin" // (string) admin password for connecting to stream +``` + +Config can be set via environment variables with the prefix `NEKO_` (I.E. NEKO_BIND="127.0.0.1:8080") + +## Requirements +------ +Runtime: +``` +gstreamer1.0-plugins-base // opus plugin +gstreamer1.0-plugins-good // pulseaudio, ximagesrc & vpx plugins +gstreamer1.0-plugins-bad // openh264 plugin (build from source) +gstreamer1.0-plugins-ugly // x264 plugin +gstreamer1.0-pulseaudio // pulseaudio plugin +xclip // clipboard sync +libxtst6 // keyboard and mouse input +``` + +Development: +``` +libxtst-dev +``` + +## Testing +------ +located in `.docker` folder +``` +./test firefox // creates an x server, puleseaudio server add firefox instance +./test chromium // creates an x server, puleseaudio server add chromium instance +``` + +## Building +------ +located in `.docker` folder +``` +./build gst // builds the required gst packages in `.build/gst/` +./build docker // builds the docker images +./build push // pushes the images to docker hub +``` diff --git a/docs/technologies.md b/docs/technologies.md new file mode 100644 index 00000000..6a58e22a --- /dev/null +++ b/docs/technologies.md @@ -0,0 +1 @@ +# Technologies (WIP) \ No newline at end of file diff --git a/server/README.md b/server/README.md deleted file mode 100644 index 53831a8d..00000000 --- a/server/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# **n**.eko server -Server for n.eko, as of right now this will *only* work on Linux systems, only tested on Debian based distros. - -### Configuration ------- -``` ---debug // (bool) enable debug mode ---logs // (bool) save logs to file ---config "" // (string) configuration file path ---bind "127.0.0.1:8080" // (string) address/port/socket to serve neko ---cert "" // (string) path to the SSL cert used to secure the neko server ---key "" // (string) path to the SSL key used to secure the neko server ---static "./www" // (string) path to neko client files to serve ---device "auto_null.monitor" // (string) audio device to capture ---display ":99.0" // (string) XDisplay to capture ---aduio "" // (string) audio codec parameters to use for streaming (unused) ---video "" // (string) video codec parameters to use for streaming (unused) ---epr "59000-59100" // (string) limits the pool of ephemeral ports that ICE UDP connections can allocate from ---vp8 // (bool) use VP8 video codec ---vp9 // (bool) use VP9 video codec ---h264 // (bool) use H264 video codec ---opus // (bool) use Opus audio codec ---g722 // (bool) use G722 audio codec ---pcmu // (bool) use PCMU audio codec ---pcma // (bool) use PCMA audio codec ---password "neko" // (string) password for connecting to stream ---admin "admin" // (string) admin password for connecting to stream -``` - -Config can be set via environment variables with the prefix `NEKO_` (I.E. NEKO_BIND="127.0.0.1:8080") - -### Requirements ------- -Runtime: -``` -gstreamer1.0-plugins-base // opus plugin -gstreamer1.0-plugins-good // pulseaudio, ximagesrc & vpx plugins -gstreamer1.0-plugins-bad // openh264 plugin (build from source) -gstreamer1.0-plugins-ugly // x264 plugin -gstreamer1.0-pulseaudio // pulseaudio plugin -xclip // clipboard sync -libxtst6 // keyboard and mouse input -``` - -Development: -``` -libxtst-dev -``` - -### Testing ------- -located in `.docker` folder -``` -./test firefox // creates an x server, puleseaudio server add firefox instance -./test chromium // creates an x server, puleseaudio server add chromium instance -``` - -### Building ------- -located in `.docker` folder -``` -./build gst // builds the required gst packages in `.build/gst/` -./build docker // builds the docker images -./build push // pushes the images to docker hub -```