From 72fdc7d169581da606ace1cd3aae82ebbc76fb46 Mon Sep 17 00:00:00 2001 From: Jannis Mattheis Date: Sun, 4 Oct 2020 19:44:43 +0200 Subject: [PATCH] Add docs --- docs/.nojekyll | 0 docs/CNAME | 1 + docs/README.md | 21 + docs/_sidebar.md | 6 + docs/apple-touch-icon.png | Bin 0 -> 32667 bytes docs/config.md | 72 + docs/favicon-16x16.png | Bin 0 -> 1211 bytes docs/favicon-32x32.png | Bin 0 -> 2522 bytes docs/favicon.ico | Bin 0 -> 15086 bytes docs/index.html | 51 + docs/install.md | 79 + docs/logo.png | Bin 0 -> 81679 bytes docs/logo.svg | 3130 +++++++++++++++++++++++++++++++++++++ docs/nat-traversal.md | 30 + docs/proxy.md | 137 ++ 15 files changed, 3527 insertions(+) create mode 100644 docs/.nojekyll create mode 100644 docs/CNAME create mode 100644 docs/README.md create mode 100644 docs/_sidebar.md create mode 100644 docs/apple-touch-icon.png create mode 100644 docs/config.md create mode 100644 docs/favicon-16x16.png create mode 100644 docs/favicon-32x32.png create mode 100644 docs/favicon.ico create mode 100644 docs/index.html create mode 100644 docs/install.md create mode 100644 docs/logo.png create mode 100644 docs/logo.svg create mode 100644 docs/nat-traversal.md create mode 100644 docs/proxy.md diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 0000000..2c0cb59 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +screego.net diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..2d18670 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,21 @@ +# screego/server + +Screego was created because of a displeasure against cooperate chatting solutions. +For developers, screen sharing shouldn't be optimized for low bandwidth or presenting some slides. +It should be high definition, that you still can read the tiny font of your colleague. +No more, "wait a minute, the stream isn't updating". + +Screego is an addition to existing software and only helps to share your screen. Nothing else (:. + +## Features + +* Multi User Screenshare +* Secure transfer via WebRTC +* Low latency / High resolution +* Simple Install via [Docker](https://hub.docker.com/r/screego/server) / single binary +* Integrated [TURN](nat-traversal.md) Server see [NAT Traversal](nat-traversal.md) + + +--- + +[Installation](install.md) ᛫ [Configuration](config.md) diff --git a/docs/_sidebar.md b/docs/_sidebar.md new file mode 100644 index 0000000..7a994f3 --- /dev/null +++ b/docs/_sidebar.md @@ -0,0 +1,6 @@ +* [Home](/) +* [Installation](install.md) +* [Config](config.md) +* [NAT Traversal](nat-traversal.md) +* [Reverse Proxy](proxy.md) +* [GitHub](https://github.com/screego/server) diff --git a/docs/apple-touch-icon.png b/docs/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eca9e3f8b4e20d6823cf006213cb89c062469462 GIT binary patch literal 32667 zcmV)*K#9MJP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 aN-hBE7ZG&wLN%2D0000 TLS is required for Screego to work. Either enable TLS inside Screego or + use a reverse proxy to serve Screego via TLS. + +Screego tries to obtain config values from different locations in sequence. +Properties will never be overridden. Thus, the first occurrence of a setting will be used. + +#### Order + +* Environment Variables +* `screego.config.local` (in same path as the binary) +* `screego.config` (in same path as the binary) +* `$HOME/.config/screego/server.config` +* `/etc/screego/server.config` + +#### Config Example + +```ini +# The external ip of the server +SCREEGO_EXTERNAL_IP= + +# A secret which should be unique. Is used for cookie authentication. +SCREEGO_SECRET= + +# If TLS should be enabled for HTTP requests. Screego requires TLS, +# you either have to enable this setting or serve TLS via a reverse proxy. +SCREEGO_SERVER_TLS=false +# The TLS cert file (only needed if TLS is enabled) +SCREEGO_TLS_CERT_FILE= +# The TLS key file (only needed if TLS is enabled) +SCREEGO_TLS_KEY_FILE= + +# The address the http server will listen on. +SCREEGO_SERVER_ADDRESS=0.0.0.0:5050 + +# The address the TURN server will listen on. +SCREEGO_TURN_ADDRESS=0.0.0.0:3478 + +# If reverse proxy headers should be trusted. +# Screego uses ip whitelisting for authentication +# of TURN connections. When behind a proxy the ip is always the proxy server. +# To still allow whitelisting this setting must be enabled and +# the `X-Real-Ip` header must be set by the reverse proxy. +SCREEGO_TRUST_PROXY_HEADERS=false + +# Defines when a user login is required +# Possible values: +# all: User login is always required +# turn: User login is required for TURN connections +# none: User login is never required +SCREEGO_AUTH_MODE=turn + +# Defines origins that will be allowed to access Screego (HTTP + WebSocket) +# Example Value: https://screego.net,https://sub.gotify.net +SCREEGO_CORS_ALLOWED_ORIGINS= + +# Defines the location of the users file. +# File Format: +# user1:bcrypt_password_hash +# user2:bcrypt_password_hash +# +# Example: +# user1:$2a$12$WEfYCnWGk0PDzbATLTNiTuoZ7e/43v6DM/h7arOnPU6qEtFG.kZQy +# +# The user password pair can be created via +# screego hash --name "user1" --pass "your password" +SCREEGO_USERS_FILE= + +# The loglevel (one of: debug, info, warn, error) +SCREEGO_LOG_LEVEL=info +``` \ No newline at end of file diff --git a/docs/favicon-16x16.png b/docs/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..2cd313dca5fdca0d76f3b6fb06428377d34c80b2 GIT binary patch literal 1211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>8H;1l8sRKU>i-*VMs z^9h$tr`WGEsBNm-^?cHV8e$aU4Gl%{E&04n@ zx9l;UddHz*zg)#(&8i&+?fVTUUbUTY#B#!E?UmKK8*(()#;DIt(rDPOS-o4gVXuDg zS^Ejc&HGMit*+2sm!-KjK?8^ywrj7tYCQR_)1+hO-G@x3-7}u~Ut?VY!>U#0Gj7_< zzil!1j^(`DHnVS;O}=P3=PCoke~0<|4d$=cUAV-6VtG@rdq`zlZh=#d7M zCAr#5Qq?9z8_iEJnwy|9JxY6Ng8E!PKo#L;%cko)SEY|&2BTD5~11Yuem0Q zVO6O1j%1r0ZX>2gPg7 zrmwynx~(MV`Q)s}6VvbZ7VW4i+FzIXu)peZSNZZgw6+L?S;$bMipt`x4ssJ++8wabBN52lx8H`EZ?k-a~5~`Yk9L@rd$YLO! z4Z@6k@zH@m278I8uPgf#E@mNSqo*;3z?8~x$ z9zA>b^s)GZ1}=_G9HG~*T;uHSXxf?dNN7^fSKi*Qmy9+QeR5!AbyZEBy6oAsuu#)d zUf%@`V$Iw7@}jHV_s-kL*sK_FpyTX~BUjGcIW$R7DbS{p+x@(m|%csEdXhh1L9K$%xNSn88sN6;yOe zM8U)NbE}oDt+KJUwYs_feO9dpGBE)WAu&Nw#~9e3icXyxDp1Mr@}%K=tI7kQJgHjZ z8c~vxSdwa$T$Bo=7>o>z40H_*bPbF{3@xk-jIB%!v<-}`3=H}nF58HrAvZrIGp!Q0 zhW~ryc!3%uK{f>ErER1{tn5>XPASgue| zl%JNFld4csS&*ubSx}P9z)&&g@h2XR!Y~buQ~syVcs>ncU{>bVOXe0<7WSSj!Yr)d z(qM8pg;{xXh{EX`S56!`b42C{`{@Rc1zvg#ufzpQJ~^3A1zN%2>FVdQ&MBb@0F*`7 AMF0Q* literal 0 HcmV?d00001 diff --git a/docs/favicon-32x32.png b/docs/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..3b20f798a4437b1dbac5657ae4d7b31bf7fa860d GIT binary patch literal 2522 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 E9|vUR3IG5A literal 0 HcmV?d00001 diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..e624ac9 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,51 @@ + + + + + Screego + + + + + + + + + + + +
+ + + + + + + + + + + diff --git a/docs/install.md b/docs/install.md new file mode 100644 index 0000000..e35de93 --- /dev/null +++ b/docs/install.md @@ -0,0 +1,79 @@ +# Installation + +Latest Version: **GITHUB_VERSION** + +?> Before starting Screego you may read [Configuration](config.md). + +## Docker + +Setting up Screego with docker is pretty easy, you basically just have to start the docker container, and you are ready to go: + +The [screego/server](https://hub.docker.com/r/screego/server) docker images are multi-arch docker images. +This means the image will work for `amd64`, `i386`, `ppc64le` (power pc), `arm64`, `arm v7` (Raspberry PI). + +```bash +$ docker run -p 8080:5050 -e SCREEGO_EXTERNAL_IP=0.0.0.0 screego/server:GITHUB_VERSION +``` + +By default, Screego runs on port 5050. + +### docker-compose.yml + +```yaml +version: "3.7" +services: + screego: + image: screego/server:GITHUB_VERSION + ports: + - 8080:5050 + environment: + SCREEGO_EXTERNAL_IP: "0.0.0.0" +``` + +## Binary + +### Supported Platforms: + +* linux_amd64 (64bit) +* linux_i386 (32bit) +* armv7 (32bit used for Raspberry Pi) +* armv6 +* arm64 (ARMv8) +* ppc64 +* ppc64le +* windows_i386.exe (32bit) +* windows_amd64.exe (64bit) + +Download the zip with the binary for your platform from [screego/server Releases](https://github.com/screego/server/releases). + +```bash +$ wget https://github.com/screego/server/releases/download/vGITHUB_VERSION/screego_GITHUB_VERSION_{PLATFORM}.tar.gz +``` + +Unzip the archive. + +```bash +$ tar xvf screego_GITHUB_VERSION_{PLATFORM}.tar.gz +``` + +Make the binary executable (linux only). + +```bash +$ chmod +x screego +``` + +Execute screego: + +```bash +$ ./screego +# on windows +$ screego.exe +``` + +## Arch-Linux(aur) + +TODO + +## Source + +TODO diff --git a/docs/logo.png b/docs/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..18d0cab5595bb67e181aec312f20eb6be1c9f259 GIT binary patch literal 81679 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ℜ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 literal 0 HcmV?d00001 diff --git a/docs/logo.svg b/docs/logo.svg new file mode 100644 index 0000000..dccd081 --- /dev/null +++ b/docs/logo.svg @@ -0,0 +1,3130 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/nat-traversal.md b/docs/nat-traversal.md new file mode 100644 index 0000000..25f1420 --- /dev/null +++ b/docs/nat-traversal.md @@ -0,0 +1,30 @@ +# NAT Traversal + +In most cases peers cannot directly communicate with each other because of firewalls or other restrictions like NAT. +To work around this issue, WebRTC uses +[Interactive Connectivity Establishment (ICE)](http://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment). +This is a framework for helping to connect peers. + +ICE uses STUN and/or TURN servers to accomplish this. + +?> Screego exposes a STUN and TURN server. You don't have to configure this separately. + By default, user authentication is required for using TURN. + +## STUN + +[Session Traversal Utilities for NAT (STUN)](http://en.wikipedia.org/wiki/STUN) is used to find +the public / external ip of a peer. This IP is later sent to others to create a direct connection. + +When STUN is used, only the connection enstablishment will be done through Screego. The actual video stream will be +directly sent to the other peer and doesn't go through Screego. + +While STUN should work for most cases, there are stricter NATs f.ex. +[Symmetric NATs](https://en.wikipedia.org/wiki/Network_address_translation) +where it doesn't, then, TURN will be used. + +## TURN + +[Traversal Using Relays around NAT (TURN)](http://en.wikipedia.org/wiki/TURN) is used to work around Symmetric NATs. +It does it by relaying all data through a TURN server. As relaying will create traffic on the server, +Screego will require user authentication to use the TURN server. This can be configured see [Configuration](config.md). + diff --git a/docs/proxy.md b/docs/proxy.md new file mode 100644 index 0000000..958dba6 --- /dev/null +++ b/docs/proxy.md @@ -0,0 +1,137 @@ +# Proxy + +!> When using a proxy enable `SCREEGO_TRUST_PROXY_HEADERS`. See [Configuration](config.md). + +## nginx + +### At root path + +```nginx +upstream screego { + # Set this to the address configured in + # SCREEGO_SERVER_ADDRESS. Default 5050 + server 127.0.0.1:5050; +} + +server { + listen 80; + + # Here goes your domain / subdomain + server_name screego.example.com; + + location / { + # Proxy to screego + proxy_pass http://screego; + proxy_http_version 1.1; + + # Set headers for proxying WebSocket + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_redirect http:// $scheme://; + + # Set proxy headers + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto http; + + # The proxy must preserve the host because screego verifies it with the origin + # for WebSocket connections + proxy_set_header Host $http_host; + } +} +``` + +### At a sub path + +```nginx +upstream screego { + # Set this to the address configured in + # SCREEGO_SERVER_ADDRESS. Default 5050 + server 127.0.0.1:5050; +} + +server { + listen 80; + + # Here goes your domain / subdomain + server_name screego.example.com; + + location /screego/ { + rewrite ^/screego(/.*) $1 break; + + # Proxy to screego + proxy_pass http://screego; + proxy_http_version 1.1; + + # Set headers for proxying WebSocket + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_redirect http:// $scheme://; + + # Set proxy headers + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto http; + + # The proxy must preserve the host because screego verifies it with the origin + # for WebSocket connections + proxy_set_header Host $http_host; + } +} +``` + +## Apache (httpd) + +The following modules are required: + +* mod_proxy +* mod_proxy_wstunnel +* mod_proxy_http + +### At root path + +```apache + + ServerName sceego.example.com + Keepalive On + + # The proxy must preserve the host because screego verifies it with the origin + # for WebSocket connections + ProxyPreserveHost On + + # Replace 5050 with the port defined in SCREEGO_SERVER_ADDRESS. + # Default 5050 + + # Proxy web socket requests to /stream + ProxyPass "/stream" ws://127.0.0.1:5050/stream retry=0 timeout=5 + + # Proxy all other requests to / + ProxyPass "/" http://127.0.0.1:5050/ retry=0 timeout=5 + + ProxyPassReverse / http://127.0.0.1:5050/ + +``` + +### At a sub path + +```apache + + ServerName screego.example.com + Keepalive On + + Redirect 301 "/screego" "/screego/" + + # The proxy must preserve the host because screego verifies it with the origin + # for WebSocket connections + ProxyPreserveHost On + + # Proxy web socket requests to /stream + ProxyPass "/screego/stream" ws://127.0.0.1:5050/stream retry=0 timeout=5 + + # Proxy all other requests to / + ProxyPass "/screego/" http://127.0.0.1:5050/ retry=0 timeout=5 + # ^- !!trailing slash is required!! + + ProxyPassReverse /screego/ http://127.0.0.1:5050/ + +```