docs (wip)

This commit is contained in:
Craig 2020-02-10 01:58:24 +00:00
parent 2615ccc529
commit 15e490a72f
4 changed files with 36 additions and 13 deletions

View File

@ -1,5 +1,5 @@
<div align="center"> <div align="center">
<img src="_media/logo.png" width="450" height="auto"/> <a href="https://n.eko.moe/#/" ><img src="https://raw.githubusercontent.com/nurdism/neko/master/docs/_media/logo.png" width="450" height="auto"/></a>
<br/> <br/>
<br/> <br/>
<img src="https://i.imgur.com/ZSzbQr7.gif" width="650" height="auto"/> <img src="https://i.imgur.com/ZSzbQr7.gif" width="650" height="auto"/>
@ -10,7 +10,7 @@
# 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. 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 ## Features
* Text Chat (With basic markdown support, discord flavor) * Text Chat (With basic markdown support, discord flavor)
* Admin users (Kick, Ban & Force Give/Release Controls) * Admin users (Kick, Ban & Force Give/Release Controls)
* Clipboard synchronization (on [supported browsers](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/readText)) * Clipboard synchronization (on [supported browsers](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/readText))
@ -18,7 +18,22 @@
* Ignore user (chat and emotes) * Ignore user (chat and emotes)
* Persistent settings * Persistent settings
### Why n.eko? ## Why n.eko?
I like cats 🐱 (`Neko` is the Japanese word for cat), I'm a weeb/nerd 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. ***But why the cat butt?*** Because cats are *assholes*, but you love them anyways.
## Documentation
* [Getting Started](https://n.eko.moe/#/getting-started)
* [Quick Start](https://n.eko.moe/#/quick-start)
* [Configuration](https://n.eko.moe/#/configuration)
* [Development](https://n.eko.moe/#/development)
* [Client](https://n.eko.moe/#/client)
* [Server](https://n.eko.moe/#/server)
* [Docker](https://n.eko.moe/#/docker)
* [Non Goals](https://n.eko.moe/#/non-goals)
* [Contributing](https://n.eko.moe/#/contributing)
* [Change logs](https://n.eko.moe/#/change-logs/)
* [Technologies](https://n.eko.moe/#/technologies)
* [Glossary](https://n.eko.moe/#/glossary)

View File

@ -1,5 +1,5 @@
<div align="center"> <div align="center">
<img src="_media/logo.png" width="450" height="auto"/> <a href="https://n.eko.moe/#/" ><img src="https://raw.githubusercontent.com/nurdism/neko/master/docs/_media/logo.png" width="450" height="auto"/></a>
<br/> <br/>
<br/> <br/>
<img src="https://i.imgur.com/ZSzbQr7.gif" width="650" height="auto"/> <img src="https://i.imgur.com/ZSzbQr7.gif" width="650" height="auto"/>

View File

@ -7,9 +7,9 @@
| Resolution | Cores | Ram | Recommendation | | Resolution | Cores | Ram | Recommendation |
|-------------|-------|-------|------------------| |-------------|-------|-------|------------------|
| 1024×576@30 | 2 | 2gb | Not Recommended | | 1024×576@30 | 2 | 2gb | Not Recommended |
| 1280x720@30 | 4 | 4gb | Good Performance | | 1280x720@30 | 4 | 3gb | Good Performance |
| 1280x720@30 | 6 | 4-6gb | Recommended | | 1280x720@30 | 6 | 4gb | Recommended |
| 1280x720@30 | 8 | 8gb+ | Best Performance | | 1280x720@30 | 8 | 4gb+ | 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. *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.
@ -30,4 +30,11 @@
``` ```
5. Visit the IP address server in your browser and login, the default password is `neko` 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. > 💡 **Protip**: Run `nano docker-compose.yaml` to edit the settings, then press `ctrl+x` to exit and save the file.
## Well known cloud providers
* [Hetzner Cloud](https://www.hetzner.com/cloud)
* [Scaleway](https://www.scaleway.com/)
* [Digital Ocean](https://www.digitalocean.com/)
* [Linode](https://www.linode.com/)
* [Vultr](https://www.vultr.com/)

View File

@ -16,17 +16,18 @@ import (
func New(sessions types.SessionManager, config *config.WebRTC) *WebRTCManager { func New(sessions types.SessionManager, config *config.WebRTC) *WebRTCManager {
logger := log.With().Str("module", "webrtc").Logger() logger := log.With().Str("module", "webrtc").Logger()
setings := webrtc.SettingEngine{ settings := webrtc.SettingEngine{
LoggerFactory: loggerFactory{ LoggerFactory: loggerFactory{
logger: logger, logger: logger,
}, },
} }
setings.SetEphemeralUDPPortRange(config.EphemeralStart, config.EphemeralEnd) settings.SetNetworkTypes([]webrtc.NetworkType{webrtc.NetworkTypeUDP4})
settings.SetEphemeralUDPPortRange(config.EphemeralStart, config.EphemeralEnd)
return &WebRTCManager{ return &WebRTCManager{
logger: logger, logger: logger,
setings: setings, settings: settings,
cleanup: time.NewTicker(1 * time.Second), cleanup: time.NewTicker(1 * time.Second),
shutdown: make(chan bool), shutdown: make(chan bool),
sessions: sessions, sessions: sessions,
@ -44,7 +45,7 @@ func New(sessions types.SessionManager, config *config.WebRTC) *WebRTCManager {
type WebRTCManager struct { type WebRTCManager struct {
logger zerolog.Logger logger zerolog.Logger
setings webrtc.SettingEngine settings webrtc.SettingEngine
sessions types.SessionManager sessions types.SessionManager
videoPipeline *gst.Pipeline videoPipeline *gst.Pipeline
audioPipeline *gst.Pipeline audioPipeline *gst.Pipeline
@ -146,7 +147,7 @@ func (m *WebRTCManager) CreatePeer(id string, sdp string) (string, types.Peer, e
engine.PopulateFromSDP(description) engine.PopulateFromSDP(description)
// Create API with MediaEngine and SettingEngine // Create API with MediaEngine and SettingEngine
api := webrtc.NewAPI(webrtc.WithMediaEngine(engine), webrtc.WithSettingEngine(m.setings)) api := webrtc.NewAPI(webrtc.WithMediaEngine(engine), webrtc.WithSettingEngine(m.settings))
// Create new peer connection // Create new peer connection
connection, err := api.NewPeerConnection(*m.configuration) connection, err := api.NewPeerConnection(*m.configuration)