Modern VNC Server and client, web based and secure
Go to file
2021-10-06 23:56:34 +13:00
.ci Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
builder vncserver: remove obsolete code 2021-09-18 22:56:19 +12:00
centos Deb/Rpm: add Perl Switch dependency 2021-09-09 20:45:56 +12:00
cmake Correct spelling of License file 2021-04-20 15:41:38 -04:00
common Fix DigitalOcean load balancer websocket connection (they too used wrong case in a header) 2021-08-17 13:30:33 +03:00
contrib Correct spelling of License file 2021-04-20 15:41:38 -04:00
debian Put select-de.sh in /usr/lib 2021-09-18 22:45:23 +12:00
doc Initial commit 2020-09-20 12:16:44 +00:00
docker Update README.md 2020-10-11 13:44:40 -04:00
kasmweb@f9f5b01cc2 Merge branch 'master' into KASM-1609_select_de_to_run 2021-09-10 03:22:29 +12:00
release Put select-de.sh in /usr/lib 2021-09-18 22:45:23 +12:00
spec Specs: add comments 2021-10-06 23:56:34 +13:00
tests Initial commit 2020-09-20 12:16:44 +00:00
unix vncserver: print browser url to connect to 2021-10-06 23:44:35 +13:00
win Add support for notifying clients about pointer movements 2021-03-29 11:27:54 +03:00
.gitignore Deb: add first quilt patch 2021-01-29 22:12:43 +13:00
.gitlab-ci.yml Feature/kasm 1838 libjpeg turbo from source (#49) 2021-09-07 08:11:21 -04:00
.gitmodules KASM-1512 api stats KASM-1790 cursor 2021-08-05 11:12:03 -04:00
ACKNOWLEDGEMENTS.md Correct spelling of License file 2021-04-20 15:41:38 -04:00
BUILDING.txt Initial commit 2020-09-20 12:16:44 +00:00
CMakeLists.txt Bump up Windows version from Vista to Windows 7 2020-09-21 13:36:48 +03:00
config.h.in Silence clang deprecated warnings on macOS 2020-09-21 13:43:22 +03:00
LICENSE.TXT [skip CI] updates to docs 2021-04-13 10:23:00 -04:00
Pipfile Specs: require Python 3.8 2021-09-16 22:23:55 +12:00
Pipfile.lock Specs: require Python 3.8 2021-09-16 22:23:55 +12:00
README.md Update README 2021-09-19 00:32:22 +12:00
run-specs Add spec runner 2021-09-14 19:10:33 +12:00

KasmVNC - Linux Web Remote Desktop

Kasm Technologies developed Kasm Workspaces, the Containerized Streaming Platform. Kasm has open-sourced the Workspace docker images, which include containerized full desktops and apps and base images intended for developers to create custimized streaming containers. These containers can be used standalone or within the Kasm Workspaces Platform which provides a full Enterprise feature set. KasmVNC is used as the streaming tech for our container images, however, you can use KasmVNC for individual servers. While the term VNC is in the name, KasmVNC is not intended to remain compliant with the RFB spec and has different goals than other VNC projects:

  • Web-based - KasmVNC is designed to provide a web accessible remote desktop. It comes with a web server and websocket server built in. There is no need to install other components. Simply run and navigate to your desktop's URL on the port you specify. While you can still tun on the legacy VNC port, it is disabled by default.
  • Security - The RFB specification (VNC) limits the password field to 8 characters, so while the client may take a longer password, only the first 8 characters are sent. KasmVNC defaults to HTTPS with HTTP Basic Auth and disables the legacy VNC authentication method which is not sufficiently secure for internet accessible systems.
  • Simplicity - KasmVNC aims at being simple to deploy and configure.

New Features!

  • Webp image compression for better bandwidth usage
  • Automatic mixing of webp and jpeg based on CPU availability on server
  • Multi-threaded image encoding for smoother frame rate for servers with more cores
  • Full screen video detection, goes into configurable video mode for better full screen videoo playback performance.
  • Dynamic jpeg/webp image coompression quality settings based on screen change rates
  • Seemless clipboard support (on Chromium based browsers)
  • Allow client to set/change most configuration settings
  • Data Loss Prevention features
    • Key stroke logging
    • Clipboard logging
    • Max clipboard transfer size up and down
    • Min time between clipboard operations required
    • Keyboard input rate limit
    • Screen region selection
  • Deb packages for Debian, Ubuntu, and Kali Linux included in release.
  • RPM packages for CentOS, Fedora. RPM packages are currently not updatable and not released, though you can build and install them. See build documentation.
  • Web API added for remotely controlling and getting information from KasmVNC
  • Multi-User with ability to pass control to other users.
  • Web UI uses a webpack for faster load times.
  • Network and CPU bottleneck statistics

Future Goals:

  • Support uploads and downloads
  • Pre-build Packages for all major Linux distributions

Installation

Debian-based

wget -qO- https://github.com/kasmtech/KasmVNC/releases/download/v0.9.1-beta/kasmvncserver_0.9.1~beta-1_amd64.deb

sudo apt-get install ./kasmvncserver_0.9.1~beta-1_amd64.deb

# Add your user to the ssl-cert group
sudo addgroup $USER ssl-cert
# You will need to re-connect in order to pick up the group change

# Run KasmVNC on display :10 and on interface 0.0.0.0:
KASMVNC_OPTIONS=':10 -depth 24 -geometry 1280x1050
  -cert /etc/ssl/certs/ssl-cert-snakeoil.pem
  -key /etc/ssl/private/ssl-cert-snakeoil.key -sslOnly -FrameRate=24
  -interface 0.0.0.0 -httpd /usr/share/kasmvnc/www'
vncserver $KASMVNC_OPTIONS

# On the first run, vncserver will ask you to create a KasmVNC user and choose a desktop
# environment you want to run. It can detect Cinnamon, Mate, LXDE, KDE, Gnome,
# XFCE. You can also choose to manually edit xstartup.
# After you chose a desktop environment or to manually edit xstartup,
# vncserver won't ask you again, unless you run it as:
vncserver $KASMVNC_OPTIONS -select-de

# You can select a specific Desktop Environment like this:
vncserver $KASMVNC_OPTIONS -select-de mate

# Tail the logs
tail -f ~/.vnc/`hostname`:10.log

Now navigate to your system at https://[ip-address]:8443/

To stop the KasmVNC you started earlier on display 10:

vncserver -kill :10

The options for vncserver:

Argument Description
depth Color depth, for jpeg/webp should be 24bit
geometry Screensize, this will automatically be adjusted when the client connects.
websocketPort The port to use for the web socket. Use a high port to avoid having to run as root.
cert SSL cert to use for HTTPS
sslOnly Disable HTTP
interface Which interface to bind the web server to.

Development

Would you like to contribute to KasmVNC? Please reachout to us at info@kasmweb.com. We have investigated or are working on the following, if you have experience in these fields and would like to help please let us know.

Real-time H264 encoding using NVIDIA and Intel encoding technology.

Windows version of KasmVNC. We have been able to get it to compile for Windows and increased the performance, but still not releasable. Experienced Windows developers with a background in cross compiling would help.

ARM version of KasmVNC, we have had requests for this and at one point we did have an ARM build of KasmVNC but it takes dev cycles to mainain and bring it back to life.

Compiling From Source

See the builder/README.md. We containerize our build systems to ensure highly repeatable builds.

License and Acknowledgements

See the LICENSE.TXT and ACKNOWLEDGEMENTS.MD