diff --git a/README.md b/README.md index 8cb6820..0d4c5da 100644 --- a/README.md +++ b/README.md @@ -90,32 +90,153 @@ For ARM-based devices (like Raspberry Pi, with GPU hardware acceleration): - `m1k1o/neko:arm-chromium` - for Chromium. - `m1k1o/neko:arm-base` - for custom arm based. -Networking: +### Networking: - If you want to use n.eko in **external** network, you can omit `NEKO_NAT1TO1`. It will automatically get your Public IP. - If you want to use n.eko in **internal** network, set `NEKO_NAT1TO1` to your local IP address (e.g. `NEKO_NAT1TO1: 192.168.1.20`)- +- Currenty it is not supported to supply multiple NAT addresses. -Why so many ports? -- WebRTC needs UDP ports for each channel it creates towards users. -- Every user will need 2 UDP ports (for getting audio/video and sending mouse positions). +### Why so many ports? +- WebRTC needs UDP ports in order to transfer Audio/Video towards user and Mouse/Keyboard events to the server in real time. +- If you don't set `NEKO_ICELITE=true`, every user will need 2 UDP ports. +- If you set `NEKO_ICELITE=true`, every user will need only 1 UDP port. It is **recommended** to use *ice-lite*. +- Do not forget, they are **UDP** ports, that configuraion must be correct in your firewall/router/docker. - You can freely limit number of UDP ports. But you can't map them to diferent ports. - This **WONT** work: `32000-32100:52000-52100/udp` - You can change API port (8080). - This **WILL** work: `3000:8080` -Behind reverse proxy? -- Nginx configuration: https://github.com/nurdism/neko/issues/111#issuecomment-742656957 -- Apache configuration: https://github.com/nurdism/neko/blob/cad98a62a5bd7f1daf2c11980631bb14ba81a1f6/docs/apache-proxypass-config.md#example-apache-config -- Traefik configuration: https://github.com/m1k1o/neko-vpn/blob/a1b934515dcf597992a515d61d307c2450a11002/docker-compose.yml#L38-L43 +### Behind reverse proxy? -Want to use VPN for your neko browsing? +
+ Traefik2 configuration + + ```yaml + labels: + - "traefik.enable=true" + - "traefik.http.services.neko-frontend.loadbalancer.server.port=8080" + - "traefik.http.routers.neko.rule=${TRAEFIK_RULE}" + - "traefik.http.routers.neko.entrypoints=${TRAEFIK_ENTRYPOINTS}" + - "traefik.http.routers.neko.tls.certresolver=${TRAEFIK_CERTRESOLVER}" + ``` + + (by @m1k1o, [example](https://github.com/m1k1o/neko-vpn/blob/a1b934515dcf597992a515d61d307c2450a11002/docker-compose.yml#L38-L43)) +
+ +
+ Nginx configuration + + ```conf + server { + listen 443 ssl http2; + server_name example.com; + + location / { + proxy_pass http://127.0.0.1:8080; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_read_timeout 86400; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Forwarded-Port $server_port; + proxy_set_header X-Forwarded-Protocol $scheme; + } + } + ``` + + (by @GigaFyde, [source](https://github.com/nurdism/neko/issues/111#issuecomment-742656957)) +
+ +
+ Apache configuration + + ```xml + + # The ServerName directive sets the request scheme, hostname and port that + # the server uses to identify itself. This is used when creating + # redirection URLs. In the context of virtual hosts, the ServerName + # specifies what hostname must appear in the request's Host: header to + # match this virtual host. For the default virtual host (this file) this + # value is not decisive as it is used as a last resort host regardless. + # However, you must set it for any further virtual host explicitly. + + # Paths of those modules might vary across different distros. + LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so + LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so + LoadModule proxy_wstunnel_module /usr/lib/apache2/modules/mod_proxy_wstunnel.so + + ServerName example.com + ServerAlias www.example.com + + ProxyRequests Off + ProxyPass / http://localhost:8080/ + ProxyPassReverse / http://localhost:8080/ + + RewriteEngine on + RewriteCond %{HTTP:Upgrade} websocket [NC] + RewriteCond %{HTTP:Connection} upgrade [NC] + RewriteRule /ws(.*) "ws://localhost:8080/ws$1" [P,L] + + # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, + # error, crit, alert, emerg. + # It is also possible to configure the loglevel for particular + # modules, e.g. + #LogLevel info ssl:warn + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + # For most configuration files from conf-available/, which are + # enabled or disabled at a global level, it is possible to + # include a line for only one particular virtual host. For example the + # following line enables the CGI configuration for this host only + # after it has been globally disabled with "a2disconf". + #Include conf-available/serve-cgi-bin.conf + + ``` + + (by @DarkReaper231, [source](https://github.com/nurdism/neko/blob/cad98a62a5bd7f1daf2c11980631bb14ba81a1f6/docs/apache-proxypass-config.md#example-apache-config)) +
+ +
+ Caddy configuration + + ```conf + https://example.com { + reverse_proxy localhost:8080 { + header_up Host {host} + header_up X-Real-IP {remote_host} + header_up X-Forwarded-For {remote_host} + header_up X-Forwarded-Proto {scheme} + } + } + ``` + + (by @ccallahan, [source](https://github.com/nurdism/neko/pull/125/commits/eb4ceda75423b0d960c8aea0240acf6d7a10fef4)) +
+ +### Want to customize and install own addons, set custom bookmarks? +- You would need to modify existing policy file and mount it to your container. +- For Firefox, copy [this](https://github.com/m1k1o/neko/blob/dev/.m1k1o/firefox/policies.json) file, modify and mount it as: ` -v '${PWD}/policies.json:/usr/share/firefox-esr/distribution/policies.json'` +- For Chromium, copy [this](https://github.com/m1k1o/neko/blob/dev/.m1k1o/chromium/policies.json) file, modify and mount it as: ` -v '${PWD}/policies.json:/etc/chromium/policies/managed/policies.json'` + +### Want to use VPN for your neko browsing? - Check this out: https://github.com/m1k1o/neko-vpn -Accounts: +### Want to have multiple rooms on demand? +- Check this out: https://github.com/m1k1o/neko-rooms + +### Want to use different Apps than Browser? +- Check this out: https://github.com/m1k1o/neko-apps + +### Accounts: - There are no accounts, display name (a.k.a. username) can be freely chosen. Only paword needs to match. Depeding on which password matches, visitor gets its privilege: - Anyone, who enters with `NEKO_PASSWORD` will be **user**. - Anyone, who enters with `NEKO_PASSWORD_ADMIN` will be **admin**. -Screen size +### Screen size - Only admins can change screen size. - You can set default screen size, but this size **MUST** be one from list, that your server supports. - You will get this list in frontend, where you can choose from. @@ -295,4 +416,4 @@ NEKO_ICESERVERS: # How to contribute? -Navigate to `.m1k1o/README.md` for further information. +Navigate to [.m1k1o/README.md](.m1k1o/README.md) for further information.