Docker
The simplest way to get Termix server up and running is with Docker.
Termix is light. It idles at about 118 MB of RAM, and 1 core with 1 GB covers most setups. See Benchmarks for measured usage and how much to allocate for larger fleets.
Installation
- Docker Compose with guacd (Recommended)
- Docker Compose (Remote Desktop Not Supported)
- Docker Run (Remote Desktop Not Supported)
services:
termix:
image: ghcr.io/lukegus/termix:latest
container_name: termix
restart: unless-stopped
ports:
- '8080:8080'
volumes:
- termix-data:/app/data
environment:
PORT: '8080'
depends_on:
- guacd
networks:
- termix-net
guacd:
image: guacamole/guacd:1.6.0
container_name: guacd
restart: unless-stopped
ports:
- "4822:4822"
networks:
- termix-net
volumes:
termix-data:
driver: local
networks:
termix-net:
driver: bridge
To start the containers, run:
docker-compose up -d
services:
termix:
image: ghcr.io/lukegus/termix:latest
container_name: termix
restart: unless-stopped
ports:
- '8080:8080'
volumes:
- termix-data:/app/data
environment:
PORT: '8080'
volumes:
termix-data:
driver: local
To start the container, run:
docker-compose up -d
# Step 1: Create the volume
docker volume create termix-data
# Step 2: Run the container
docker run -d \
--name termix \
--restart unless-stopped \
-p 8080:8080 \
-v termix-data:/app/data \
-e PORT=8080 \
ghcr.io/lukegus/termix:latest
Docker Hub Mirror
As an alternative to GHCR, you can also use the Docker Hub mirror by replacing ghcr.io/lukegus/termix:latest with bugattiguy527/termix:latest in any of the configurations above.
Specific Version
By default, :latest always points to the newest release. If you want to pin a specific version instead, replace :latest in your docker run/compose with one of these tag formats, swapping in the version you want:
:x.x.x, for example:2.4.0:release-x.x.x, for example:release-2.4.0
Both formats point to the same image for a given version, so use whichever you prefer. See a list of all versions here, or browse every published tag on GitHub.
Beta Builds
Termix publishes an automated weekly beta build from active development, tagged :beta. It's a great way to try upcoming features early and help catch issues before they reach stable.
To opt in, replace :latest with :beta in any of the configurations above, for example:
ghcr.io/lukegus/termix:beta
The :beta tag is a rolling, unstable channel:
- It is overwritten every week with a fresh snapshot of in-progress development, it is not a fixed version.
- It may contain incomplete features, regressions, or breaking changes without notice.
- Do not run it in production or on data you can't afford to lose.
If you need to reference an exact beta snapshot later, each weekly build is also pushed as a dated tag, :beta-x.x.x-beta.YYYYMMDD, and published as a pre-release on GitHub.
Found something broken on a beta build? Open a Beta Feedback report on the Support page, or mention it in the Discord server in the meantime. Be sure to include the exact beta build tag you're running.
Database
The compose files above use SQLite, which is the default and needs no setup. The database lives in the termix-data volume.
If you would rather keep the data in PostgreSQL or MySQL, add two variables to the termix service:
environment:
PORT: '8080'
DATABASE_DIALECT: postgres
DATABASE_URL: postgres://termix:yourpassword@db:5432/termix
Keep the termix-data volume either way. Termix still uses it for encryption keys, SSL certificates, and session recordings.
See Database for a full compose example with a Postgres service, MySQL setup, and TLS options.
Environment Variables
See docs.
Usage
Once installed, Termix will be available at http://localhost:8080 (or whichever port you configured).