Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ngxson/novnc-webrtc
noVNC with WebRTC
https://github.com/ngxson/novnc-webrtc
novnc vnc webrtc
Last synced: 25 days ago
JSON representation
noVNC with WebRTC
- Host: GitHub
- URL: https://github.com/ngxson/novnc-webrtc
- Owner: ngxson
- License: mit
- Created: 2023-09-03T14:57:10.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-09-03T22:19:31.000Z (over 1 year ago)
- Last Synced: 2024-12-29T14:27:53.557Z (about 1 month ago)
- Topics: novnc, vnc, webrtc
- Language: JavaScript
- Homepage:
- Size: 81.1 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# noVNC with WebRTC
```
⚠️ This project is in very alpha version, bugs are expected
```## What is that
noVNC, but it uses WebRTC instead of Websocket
```
┌───────────┐ ┌────────────┐ ┌──────────────┐
│ │ │ │ │ │
│ Browser │ WebRTC │ This app │ TCP │ VNC Server │
│ │ ──────────► │ │ ────────► │ │
└───────────┘ └────────────┘ └──────────────┘```
- The server app is built on rust, see `/server`
- The UI is taken from [official noVNC repo](https://github.com/novnc/noVNC), with minor adaptations and bundled using vite## How to use
### Binary
```shell
./novnc-webrtc -h # show help
./novnc-webrtc --listen "0.0.0.0:6901" --upstream "127.0.0.1:5901"# then, open browser: http://localhost:6901
```TODO: prebuilt binary via github actions
### Docker
TODO
## Changelog
v0.1.0: Initial release
## How to build
Firstly, build the frontend. Please note that `vite-plugin-singlefile` is used to bundle the frontend into a single `index.html`
```bash
cd webui_vanilla
npm i
npm run build
```Then, build the server.
```bash
cd ../server
cargo build -r# output file: server/target/release/novnc-webrtc
```Frontend `index.html` will be embedded into the final binary, making it portable and easy to deploy (no need to mess with `dpkg` or `apt-get install`, yay!!)
## TODO
- [ ] Support HTTPS with custom key / certificate
- [ ] Close TCP connection as soon as WebRTC connection is closed
- [ ] Built-in TURN server
- [ ] Auto reconnect
- [ ] Maybe remake frontend using react-ts