ShellHub is a modern SSH server for remotely accessing Linux devices via command line (using any SSH client) or web-based user interface. It is intended to be used instead of sshd.

Typically, if you want to SSH a Linux device on a local network, you just need to know its IP address. However, in order to access a Linux device from outside the local network, you will have to go through a few inconveniences, such as getting its public IP address and configuring the router. Changing the VPN/firewall configuration can be cumbersome if the device is behind a corporate firewall that does not allow SSH connections.

ShellHub provides a way to avoid all these hassles, helping you easily and seamlessly access any Linux device behind firewall and NAT.

Software Included

Package Version License
Docker 20.10.12 Apache-2.0
ShellHub 0.10.4 Apache-2.0

Creating an App using the Control Panel

Click the Deploy to DigitalOcean button to create a Droplet based on this 1-Click App. If you aren’t logged in, this link will prompt you to log in with your DigitalOcean account.

Deploy to DO

Creating an App using the API

In addition to creating a Droplet from the ShellHub 1-Click App using the control panel, you can also use the DigitalOcean API. As an example, to create a 4GB ShellHub Droplet in the SFO2 region, you can use the following curl command. You need to either save your API access token) to an environment variable or substitute it in the command below.

curl -X POST -H 'Content-Type: application/json' \
         -H 'Authorization: Bearer '$TOKEN'' -d \
        '{"name":"choose_a_name","region":"sfo2","size":"s-2vcpu-4gb","image": "shellhub"}' \

Getting Started After Deploying ShellHub

You’ll likely want a registered domain name to access your ShellHub Self-Hosted instance. We recommend setting up an A record from your domain to your servers IP address. Ex:

After creating your ShellHub One-Click Droplet, you need to SSH into your Droplet to finish setup.

ssh root@your_droplet_ip

Once you are connected you should change to ShellHub working directory to create the first user and namespace.

cd /var/www/shellhub
./bin/add-user <username> <password> <email>
./bin/add-namespace <namespace> <owner>

Make sure to replace with your account username and with a valid RFC1123 hostname format.

Once ShellHub server is up and running, you access the Web UI at http://Droplet-IP and login with your account to add your first device.

Setting up HTTPS

ShellHub will not work with HTTPS out of the box because certificates are unique for each instance, but you can enable SSL using our automatic HTTPS support using Let’s Encrypt with reasonable SSL settings, HTTP/2 and WebSockets support.

Check your Production Deployment Guide for more information.