Overseer Hosted - michaelfdeberry/overseer GitHub Wiki

The Overseer Server provides a hosted solution that provides a frontend and a backend. This allows accounts and configuration to be accessible across your network.

Introduction

The Overseer Server is only accessible by the host device by default. To make the application accessible to other devices on the network a reverse proxy must be configured. See the "Reverse Proxy Setup" section below for more information.

WARNING: It is strongly recommended that you do not make the Overseer Server accessible outside of your local network.

Automated Installation

The automated installation can potentially be used with any Linux distribution, but should be functional on single board computers such as the Raspberry Pi as long as it supports .Net 8.0.

The install script will, download the specified version, install the required dependencies, configure a systemd service, and optionally install and configure nginx as a reverse proxy. The only provides the most basic setup, you will likely need to make additional changes if you require any additional features.

  1. Download

    wget https://github.com/michaelfdeberry/overseer/releases/download/2.0.0-alpha.3/overseer-installer-2.0.0-alpha.3.sh

  2. Execute

    chmod 744 ./overseer-installer-2.0.0-alpha.3.sh && sudo ./overseer-installer-2.0.0-alpha.3.sh

If your initial install is done with this install script it could also be used for applying updates following the same steps.

Hosting On Other Platforms

The recommended way to add Overseer Daemon to your network is hosting it on a Raspberry Pi or similar device. However, it can run on any platform that supports .Net 8.0. If the .Net 8.0 runtime is installed Overseer can be started with the command:

dotnet Overseer.Daemon.dll

The web application will be available at http://localhost:9000/

Please refer to the following documentation to learn how to install .Net Core for your platform.

Linux - MacOS - Windows

As mentioned, this will only be accessible to the local device.

Hosting On Octopi

It is possible to host Overseer on an Octopi instance alongside Octoprint. However, this is only recommended for higher end multi-core devices such as the Raspberry Pi 3 and above family of devices.

To install Overseer on Octopi instance you could follow the "Automated Installation" instructions from above.

The instructions below for configuring HAProxy for use with Overseer can followed with a few caveats.

  1. Skip step 1 as HAProxy will already be installed.

  2. The ports in the examples below will be in use on Octopi. The recommend port for this use case is 9001, making Overseer available at http://<OCTOPI_IP_ADDRESS>:9001/

Reverse Proxy Setup

To make the Overseer web application accessible outside of the host device a reverse proxy is required. There are many different reverse proxy servers available with potentially endless configuration options.

Two basic examples are provided below one using NGINX, and one using HAProxy. However, both examples are only the bare minimum of what is required to get the reverse proxy functional. Please refer to the documentation for your reverse proxy of choice for more advanced configuration.

NGINX

  1. Install NGINX

    sudo apt-get nginx

  2. Open the configuration file

    sudo nano /etc/nginx/sites-available/default

  3. Replace the contents of the file with the configuration below.

    server {
        listen                      80;
    
        location / {
            proxy_pass              http://localhost:9000;
            proxy_http_version      1.1;
            proxy_cache_bypass      $http_upgrade;        
            proxy_set_header        Upgrade $http_upgrade;
            proxy_set_header        Connection keep-alive;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_set_header        Host $host;
        }
    }
    
  4. Restart NGINX

    sudo service nginx restart

This configuration will listen for incoming traffic on the default http port, port 80, and will be available at either http://<DEVICE_HOST_NAME>/ or http://<DEVICE_IP_ADDRESS>/.

In cases where port 80 is not available the configuration can be changed to listen on another port. For example, to access the site by either http://<DEVICE_HOST_NAME>:8080/ or http://<DEVICE_IP_ADDRESS>:8080/ change the line listen 80; to listen 8080;.

HAProxy

  1. Install HAProxy

    sudo apt-get install haproxy

  2. Open the configuration file

    sudo nano /etc/haproxy/haproxy.cfg

  3. Append the configuration below to the bottom of the file

    frontend overseer-public
            bind *:80 v4v6
            use_backend overseer
    
    backend overseer
            server overseer1 localhost:9000
    
    
  4. Restart HAProxy

    sudo service haproxy restart

This configuration will listen for incoming traffic on the default http port, port 80, and will be available at either http://<DEVICE_HOST_NAME>/ or http://<DEVICE_IP_ADDRESS>/.

In cases where port 80 is not available the configuration can be changed to listen on another port. For example, to access the site by either http://<DEVICE_HOST_NAME>:8080/ or http://<DEVICE_IP_ADDRESS>:8080/ change the line bind *:80 v4v6 in the overseer-public section to bind *:8080 v4v6.