docs (wip)
This commit is contained in:
parent
2615ccc529
commit
15e490a72f
21
README.md
21
README.md
@ -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)
|
||||||
|
@ -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"/>
|
||||||
|
@ -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/)
|
@ -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)
|
||||||
|
Reference in New Issue
Block a user