Deployment guide

Self-Host Termix on a VPS: Open-Source Termius Alternative

Deploy on a VPS Cloud →

Tutorial

Self-Host Termix on a VPS: Open-Source Termius Alternative

Self-hosting6 min read4 steps

Termix is an open-source (Apache-2.0) server manager that brings everything you usually do with an SSH client into the browser: a host book, encrypted SSH keys, a tabbed terminal, an SFTP file manager, Docker container management and per-host metrics. It is the self-hosted counterpart of Termius, with no subscription, and your credentials stay on your own VPS. This guide installs it as a single Docker container behind HTTPS.

Contents· Why self-host your SSH console1/10
  1. 01Why self-host your SSH console
  2. 02What Termix gives you
  3. 03Termix, Termius or a desktop SSH client?
  4. 04Prerequisites
  5. 05Install Termix with Docker Compose
  6. 06Close the door right after installing
  7. 07Back up and update
  8. 08The plugins to turn on first
  9. 09Troubleshooting
  10. 10One-click install from the ServOrbit Marketplace

Why self-host your SSH console

A desktop SSH client keeps your hosts and keys on a single computer; a cloud service like Termius syncs them through a third party, for a per-user subscription. Termix takes the third road: a server you host, reachable from any browser, the desktop app or a phone, with accounts and role-based sharing for the whole team.

Running it on a VPS rather than on a machine inside the network it manages has one simple advantage: when that network goes down, the console stays reachable. That is exactly when you need it.

What Termix gives you

  • SSH terminal — tabs, split screen, history, a command palette and reusable snippets.
  • SFTP files — browse, edit and transfer files, including from one server to another.
  • Docker — container list, logs, stats and console over SSH, with no agent to install.
  • Metrics — live CPU, memory, disk and network for every host.
  • Credential vault — passwords and keys encrypted per user and reusable across hosts.
  • Teams — accounts, roles, four-level host sharing, audit log, TOTP and passkeys.
  • Plugins — RDP/VNC remote desktop, SSH tunnels, Kubernetes, Proxmox, OIDC SSO, enabled as you need them.

Termix, Termius or a desktop SSH client?

Scroll the table

Termix (self-hosted)TermiusDesktop SSH client
Where your hosts and keys liveOn your VPSSynced through the vendor's serviceOn a single computer
LicenceApache-2.0, open sourceProprietaryVaries (OpenSSH, PuTTY: free)
CostThe price of the VPSSubscription for sync and teamsFree
Access from a browserYesNo, app to installNo
Team host sharingYes, roles and audit logYes, team plansNo
Docker, SFTP files, metricsBuilt in through pluginsSFTP, no DockerSeparate tools

Prerequisites

An Ubuntu 24.04 VPS with 1 GB of RAM and 2 GB of disk is enough: Termix uses about 330 MB at idle. You need Docker with the Compose plugin, plus a hostname for HTTPS access — a sub-domain of one of your domains, or the free sub-domain that comes with a ServOrbit VPS.

Install Termix with Docker Compose

  1. Create the Compose file

    Create an /opt/termix directory and put the following docker-compose.yml in it. The port is published on the loopback only: nginx exposes it over HTTPS.

    services:
      termix:
        image: ghcr.io/termix-ssh/termix:26.10.4
        restart: unless-stopped
        ports:
          - "127.0.0.1:8080:8080"
        environment:
          PORT: "8080"
        volumes:
          - termix-data:/app/data
    
    volumes:
      termix-data: {}
  2. Start the container

    Start Termix and follow its boot:

    docker compose up -d
    docker compose logs -f termix

    On first start, Termix generates its own secrets (JWT, database key, encryption key) and stores them in the /app/data volume. The line Termix backend started successfully tells you it is ready, within seconds.

  3. Publish Termix over HTTPS

    In the server block of your nginx vhost, proxy traffic to the container. The Upgrade and Connection headers are required: the terminal runs over WebSockets.

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 1h;
    }

    Then get a certificate (Certbot or similar). When you install from the ServOrbit Marketplace, this step is done for you.

  4. Create the administrator account

    Open your HTTPS address: Termix shows the sign-up form, and the first account created becomes the administrator. Create it right away, then turn off public registration in the admin settings. Then add a host (address, SSH port, user, key or password): the terminal opens in a tab.

Close the door right after installing

As long as no account exists, anyone who reaches the address can create the administrator account. Create yours as soon as the installation finishes, turn off registration, then enable TOTP or a passkey. A console that holds your SSH keys deserves the same protection as the servers themselves.

Back up and update

All the data — SQLite database, generated encryption keys, plugins — lives in the termix-data volume. Archive it regularly:

docker run --rm -v termix_termix-data:/data -v "$PWD":/backup alpine \
  tar czf /backup/termix-$(date +%F).tar.gz -C /data .

Keep that archive somewhere safe: without the keys it holds, saved credentials can no longer be decrypted. To update, change the image tag in the Compose file, then run docker compose pull && docker compose up -d.

The plugins to turn on first

Termix ships with its official plugins; an administrator enables, updates or removes them from the Plugins tab. For a first install on a VPS, four are often enough: SSH Terminal and File Manager for daily work, Docker to drive your servers' containers without opening a session, and Host Metrics to see at a glance which server is saturated.

Next come the ones that serve a team: TOTP and Passkeys for two-factor authentication, Single sign-on to plug in an OpenID Connect provider you already host (Authentik, Pocket ID, ZITADEL), and Session Recording if you need a record of a contractor's work. Turn off what you do not use: every disabled plugin is one less surface to maintain, and the Usage Statistics plugin, which sends a small anonymous daily report, can be switched off like the others.

Troubleshooting

The terminal opens and closes right away. The reverse proxy is not forwarding WebSockets: check the Upgrade and Connection headers in the nginx vhost, then reload nginx with nginx -t && systemctl reload nginx.

Connecting to a host fails. From the VPS, first try the same connection on the command line (ssh -p <port> <user>@<host>): if it fails too, the problem is the firewall or the key, not Termix. For a host only reachable from your internal network, go through a bastion or a VPN such as WireGuard.

Saved credentials no longer open after a restore. The restored volume is missing the encryption keys generated on first start: restore the whole termix-data volume, never the SQLite database alone.

The interface stops responding. Read the logs with docker compose logs --tail 100 termix: on start-up Termix logs every stage (database, plugins, backend), and the last line shown tells you where it stopped.

One-click install from the ServOrbit Marketplace

The ServOrbit Marketplace installs Termix on your VPS with no command line: it deploys the container, configures nginx over HTTPS with WebSockets and gives you the access address in your client area. Pick a sub-domain of one of your domains or the VPS's free sub-domain, then create your administrator account on first access.

Your SSH console, on your own VPS

A ServOrbit Ubuntu 24.04 VPS with 1 GB of RAM is enough for Termix. One-click install from the Marketplace, HTTPS on the VPS's free sub-domain, and your SSH keys never leave your infrastructure.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.

Message us on WhatsAppopens in a new tab