Ulterius Progress Report: August 2016

Has it been a month already? Time always goes by so fast when you're buried in code. The past few weeks have been full of bug fixing and optimization and I want to take this time to share with you some of the more notable changes that have been introduced with version 1.1.

But first, lets go over some stats. Since launch Ulterius has:

  • Used 120TB of bandwidth
  • Been installed on over 20,000 machines
  • Received 196,325 unique visitors
  • Processed 4,781,547 total requests
  • Processed 4,768,993 SSL secured requests

Not bad for our first month. Now let's jump into what's new.

Lower Resource Usage

One issue with Ulterius 1.0 is that screen share ate a lot of CPU. I've been quite adamant in the past about how the holy trinity of remote desktop is unachievable:

Choose Two: Low Bandwidth, Low CPU, Fluid Experience

Thanks to some clever engineering and a complete overhaul of the backend, we can proudly announce that Ulterius is the first remote desktop solution that can deliver all three at once.

Before
15.3% CPU utilization After
7.8% CPU utilization

We hope to bring the resource usage of screen share down even further once Session 0 support is introduced. With screen share disabled the server typically uses a mere 0.4% CPU, with peaks rarely exceeding 2%.

A More Responsive API

Gone is the need for a separate screen share password, as well as congestion when webcam streaming is enabled. A new internal API allows for heavier data usage without client-side lag. You'll also find that a lot of bugs caused by an unexpected disconnect have also been taken care of with this update.

A New and Improved Bootstrapper

The original bootstrapper left a lot to be desired; it failed to launch on startup and had a nasty snippet of code that would cause an endless startup on certain systems. With the new bootstrapper you can now ensure Ulterius starts everytime your computer boots. All recent editions of Windows (7 and up) are now supported and able to run Ulterius with no hassle.

Settings!

1.0 lacked quite a few settings, so with 1.1 we made it a priority to ensure more of the server was configurable to fit your needs. No more spending time manually editing the JSON config file; just hop into the client and make your changes.

Settings panel

Reverse Proxy

As of 1.1 all endpoints in the API now point toward a path, allowing for more easily redirected requests via a reverse proxy. For example:

# Ulterius proxying
map $http_upgrade $connection_upgrade {

    default upgrade;
    '' close;
}


server {

    listen 80;
    listen 22009;
    listen 22008;
    listen 22010;
    listen 22007;
    # The host name to respond to
    server_name client.yourserver.com;
    location / {

        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://yourserver.com:22006;
    }
    location /api {

        # Backend ulterius server
        proxy_pass http://yourserver.com:22007;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }

    location /webcam {

        # Backend ulterius server
        proxy_pass http://yourserver.com:22010;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
    location /terminal {

        # Backend ulterius server
        proxy_pass http://yourserver.com:22008;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
    location /screenshare {

        # Backend ulterius server
        proxy_pass http://yourserver.com:22009;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

What Next?

This month we're aiming to get quite a few major features done for v1.2, including:

  • Custom script/job scheduling.
  • A more refined terminal with PowerShell and win-bash support (with multiple session support)
  • Multi-monitor screen share
  • SMART-based drive monitoring
  • Network interfaces overview
  • Developer mode

Thanks for checking out this month's progress report. Be sure to take a look at the GitHub project page for a full road-map to 1.2. Thank you all for supporting this project. Join us tomorrow at 12:00 PM EDT on reddit for our very first AMA.

Note: in the future all contributors for the month will appear at the bottom of this blog.


Download Ulterius from https://ulterius.io/