Termix: A Self-Hosted Web SSH Platform for Engineers
Termix, created by LukeGus, is a self-hosted, web-based server management platform. Think of it as a central hub for managing your servers. Instead of needing a desktop SSH client for every server you work with, you can access a secure terminal, edit files, and create tunnels all through your web browser.
For a software engineer, this is incredibly useful for several reasons
Ubiquitous Access
You can manage your servers from any device with a web browser—your laptop, a tablet, or even a friend's computer. You're no longer tied to your local machine to get work done.
Secure & Centralized
By hosting Termix yourself, you maintain full control over your server management tools. This can be more secure than relying on third-party SaaS platforms, as your server credentials never leave your own network.
Collaboration
Termix can be a great way to provide controlled access to team members. For example, you can use it to give a new developer secure shell access to a staging server without the hassle of configuring SSH keys on their local machine.
The easiest and most common way to get Termix up and running is with Docker. This approach is great because it isolates the application and its dependencies, making the installation process simple and clean.
First, you'll need to make sure you have Docker and Docker Compose installed on your server.
Create a docker-compose.yml file This file tells Docker how to set up the Termix container. Open your favorite text editor and create a file named docker-compose.yml with the following content
version: '3.3'
services:
termix:
image: lukegus/termix:latest
container_name: termix
ports:
- "8080:8080"
volumes:
- ./data:/app/data
restart: unless-stopped
Let's break down this file
image: lukegus/termix:latest
This specifies the Docker image to use. The latest tag ensures you get the newest version of Termix.
container_name: termix
This gives our container a readable name.
ports: - "8080:8080"
This maps port 8080 on your host machine to port 8080 inside the container. This is how you'll access Termix via your web browser (e.g., http://your-server-ip:8080).
volumes: - ./data:/app/data
This creates a persistent volume. Termix uses this folder to store its configuration, user data, and saved connections. It's crucial so you don't lose your data if the container is removed.
restart: unless-stopped
This ensures Termix automatically restarts if the server reboots.
Run the container Save the docker-compose.yml file, and from the same directory, run the following command in your terminal
docker-compose up -d
The -d flag runs the container in "detached" mode, which means it will run in the background.
Access Termix
Once the container is running, open your web browser and navigate to http
//<your-server-ip>
8080. You should see the Termix login page!
Once you're logged into Termix, the interface is quite intuitive. Here's how you might use it in your day-to-day work
Imagine you need to connect to a new EC2 instance or a DigitalOcean droplet.
In the Termix web UI, go to Connections and click Add New.
Enter the host IP or hostname, the SSH port (usually 22), and your username.
You can then choose to use a password or, more securely, an SSH key. You can paste your private key directly into the UI.
This saves you from managing SSH configuration files (~/.ssh/config) across multiple machines. All your server connections are now centralized in Termix.
Once connected, you'll have a fully functional terminal in your browser. You can run any command you need, just like a regular SSH session.
For example, to check the status of a web server on a production box
# Check the status of the Nginx service
sudo systemctl status nginx
Or to deploy a new version of your application
# Navigate to the application directory
cd /var/www/my-app
# Pull the latest code from your Git repository
git pull origin main
# Restart the application service
sudo systemctl restart my-app.service
This is incredibly useful for quick fixes, monitoring, or running deployment scripts on the go.
Termix also supports SSH tunnels. This is a very powerful feature for a developer.
For example, let's say you have a PostgreSQL database running on a remote server that's not publicly accessible. You want to connect to it with a local desktop client like DBeaver or TablePlus.
You can set up a tunnel in Termix to forward a local port to the remote database's port.
In the Termix UI, create a new tunnel.
Set the Local Port to 5432 (or any available port on your local machine).
Set the Remote Host to localhost and the Remote Port to 5432 (the database port on the server).
The tunnel will connect via your Termix host.
Now, you can connect your desktop database client to localhost:5432, and Termix will securely forward that traffic to your remote database.