mirror of
https://github.com/m1k1o/neko.git
synced 2024-07-24 14:40:50 +12:00
neko mirror
.devcontainer | ||
.docker | ||
.examples | ||
.m1k1o | ||
client | ||
docs | ||
server | ||
.gitattributes | ||
.gitignore | ||
docker-compose.dev.yaml | ||
LICENSE | ||
neko.code-workspace | ||
README.md | ||
tsconfig.json |
n.eko (m1k1o fork)
This app uses Web RTC to stream a desktop inside of a docker container. This is fork of https://github.com/nurdism/neko.
Differences to original repository.
New Features
- Clipboard button with text area - for browsers, that don't support clipboard syncing (FireFox, what a shame...) or for HTTP.
- Keyboard modifier state synchronization (Num Lock, Caps Lock, Scroll Lock) for each hosting.
- Added chromium ungoogled (with h265 support) an kept up to date by @whalehub.
- Added Picture in Picture button (only for watching screen, controlling not possible).
- Added RTMP broadcast. Enables broadcasting neko screen to local RTMP server, YouTube or Twitch.
- Stereo sound (works properly only in Firefox host).
- Added limited support for some mobile browsers with
playsinline
attribute. - Added
VIDEO_BITRATE
andAUDIO_BITRATE
in kbit/s to control stream quality (in collaboration with @mbattista). - Added
MAX_FPS
, where you can specify max WebRTC frame rate. When set to0
, frame rate won't be capped and you can enjoy your real60fps
experience. Originally, it was constant at25fps
.
Bugs
- Fixed minor gst pipeline bug.
- Locked screen only for users, admins can still join.
- Fixed h264 pipelines bugs (by @mbattista).
- Fixed sessions manager thread safety by adding mutexes (caused panic in rare edge cases).
- Now when user gets kicked, he won't join as a ghost user again but will be logged out.
- iOS compatibility! Fixed really strange CSS bug, which prevented iOS from loading the video.
Misc
- Custom docker workflow.
- Based on debian buster instead of stretch.
- Custom avatars without any 3rd party depenency.
- Ignore duplicate notify bars.
- No pointer events for notify bars.
- Disable debug mode by default.
- Remove HTML tags from user name.
- Upgraded
pion/webrtc
to v3 (by @mbattista).
Getting started & FAQ
Use following docker images:
m1k1o/neko:latest
- for Firefox.m1k1o/neko:chromium
- for Chromium Ungoogled (needs--cap-add=SYS_ADMIN
).m1k1o/neko:base
- for custom base.
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
)-
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).
- 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
- This WONT work:
- You can change API port (8080).
- This WILL work:
3000:8080
- This WILL work:
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
Want to use VPN for your neko browsing?
- Check this out: https://github.com/m1k1o/neko-vpn
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.
- Anyone, who enters with
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.
Firefox
version: "3.4"
services:
neko:
image: "m1k1o/neko:latest"
restart: "unless-stopped"
shm_size: "2gb"
ports:
- "8080:8080"
- "52000-52100:52000-52100/udp"
environment:
NEKO_SCREEN: '1920x1080@30'
NEKO_PASSWORD: neko
NEKO_PASSWORD_ADMIN: admin
NEKO_EPR: 52000-52100
NEKO_NAT1TO1: <your-IP>
Chromium Ungoogled
version: "3.4"
services:
neko:
image: "m1k1o/neko:chromium"
restart: "unless-stopped"
shm_size: "2gb"
ports:
- "8080:8080"
- "52000-52100:52000-52100/udp"
cap_add:
- SYS_ADMIN
environment:
NEKO_SCREEN: '1920x1080@30'
NEKO_PASSWORD: neko
NEKO_PASSWORD_ADMIN: admin
NEKO_EPR: 52000-52100
NEKO_NAT1TO1: <your-IP>
Mobile UI
Although on iOS is neko not working, the UI screens have been fixed for small screens.