Nomploy Nomad Packs

← All packs

termix v0.1.0

Networking

Termix — a self-hosted SSH and remote-desktop (RDP/VNC) management hub: a terminal, tunnels, a server inventory and session recording in the browser. Deployed as an all-in-one host-networked Nomad job (the Termix app + a guacd sidecar for RDP/VNC).

nomad-pack run termix --registry nomploy
…or one line (add registry + run)
curl -fsSL https://packs.nomploy.com/install.sh | sh -s -- termix

Needs nomad-pack on PATH. The script only adds the nomploy registry and runs this pack.

2 tasks http 8080guacd 4822 2 volumes image ghcr.io/lukegus/termix:latest tracks :latest image bumped today
Variables 11
values.hcl

Save as values.hcl, edit, then run:

nomad-pack run termix -f values.hcl --registry nomploy
# The name of the Nomad job.
job_name = "termix"

# The Nomad namespace to deploy into.
namespace = "default"

# The datacenters to deploy to.
datacenters = ["*"]

# The Termix container image. Pin a tag in production.
image = "ghcr.io/lukegus/termix:latest"

# The guacd (Apache Guacamole proxy daemon) image used for RDP/VNC sessions.
guacd_image = "guacamole/guacd:1.6.0"

# Host port for the Termix web UI.
port = 8080

# Host port for the bundled guacd daemon (loopback only).
guacd_port = 4822

# Named volume for Termix data (inventory, settings, session recordings, RDP drive), shared with guacd.
data_volume = "termix_data"

# Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []

# Resources for the Termix app task.
resources = {
    cpu    = 500
    memory = 512
  }

# Resources for the bundled guacd task.
guacd_resources = {
    cpu    = 300
    memory = 256
  }
NameTypeDefaultDescription
job_name string
"termix"
The name of the Nomad job.
namespace string
"default"
The Nomad namespace to deploy into.
datacenters list
["*"]
The datacenters to deploy to.
image string
"ghcr.io/lukegus/termix:latest"
The Termix container image. Pin a tag in production.
guacd_image string
"guacamole/guacd:1.6.0"
The guacd (Apache Guacamole proxy daemon) image used for RDP/VNC sessions.
port number
8080
Host port for the Termix web UI.
guacd_port number
4822
Host port for the bundled guacd daemon (loopback only).
data_volume string
"termix_data"
Named volume for Termix data (inventory, settings, session recordings, RDP drive), shared with guacd.
constraints list
[]
Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
resources object
{
    cpu    = 500
    memory = 512
  }
Resources for the Termix app task.
guacd_resources object
{
    cpu    = 300
    memory = 256
  }
Resources for the bundled guacd task.
Back up this pack

This pack stores data in one Docker named volume: termix_data

restic

# Run on the node hosting this pack. Point restic at your repo first:
#   export RESTIC_REPOSITORY="s3:https://<account>.r2.cloudflarestorage.com/<bucket>"
#   export RESTIC_PASSWORD="<repo-password>"
#   export AWS_ACCESS_KEY_ID=<key>  AWS_SECRET_ACCESS_KEY=<secret>
restic backup \
  /var/lib/docker/volumes/termix_data/_data

rclone (sync to S3/R2)

rclone sync /var/lib/docker/volumes/termix_data/_data backup:<bucket>/termix_data

Paths assume the default Docker volume location (/var/lib/docker/volumes). Restore by stopping the job, restoring files into the same volume, and re-running the pack.

Readme

termix

Termix is a self-hosted SSH and remote-desktop management hub — a browser terminal, SSH tunnels, an RDP/VNC client, a server inventory and session recording, all in one place.

This pack runs Termix all-in-one as a single host-networked Nomad job:

Both share the host network (so termix reaches guacd over 127.0.0.1) and the termix_data volume (inventory, settings, session recordings, RDP drive). No external database is required.

Quick start

nomad-pack run termix --registry=nomploy

Then open http://<node-ip>:8080 and create the first admin account.

Configuration

Variable Default Notes
port 8080 Web UI host port
guacd_port 4822 Bundled guacd daemon (loopback)
data_volume termix_data Shared data + recordings volume

Security

Termix stores the SSH/RDP/VNC credentials for the hosts you add, so treat it as sensitive: keep it behind your VPN or a reverse proxy that enforces authentication, and back up the termix_data volume regularly.