# Termix

Plugin-based server management tool that you host yourself.

- Replaces: [Termius](https://openlogs.fyi/alternatives/termius)
- Summary: Paid SSH client services, such as Termius.
- Stack: TypeScript (language)
- Deployment: docker_compose
- License: Apache-2.0 (osi) [source](https://github.com/Termix-SSH/Termix/blob/7b7b17e31f1327edd5e86be2b047f3100c8cd57d/LICENSE)
- Business model: unknown. The README at the pinned commit does not state a business model, so it stays unknown. ([source](https://github.com/Termix-SSH/Termix/blob/7b7b17e31f1327edd5e86be2b047f3100c8cd57d/README.md), read 2026-10-22)
- Difficulty: easy. 1 service, 1 volume mount, no env values to set, no elevated host access. Heuristic score 0 of 11: easy.
- Requirements: not stated
- Repository: [Termix-SSH/Termix](https://github.com/Termix-SSH/Termix)

## Install

1. Docker with the Compose plugin ([source](https://github.com/Termix-SSH/Termix/blob/7b7b17e31f1327edd5e86be2b047f3100c8cd57d/docker/docker-compose.yml))

   ```text
   A host with Docker and the Docker Compose plugin. This entry runs from a compose file.
   ```

2. Save the compose file as docker-compose.yml ([source](https://github.com/Termix-SSH/Termix/blob/7b7b17e31f1327edd5e86be2b047f3100c8cd57d/docker/docker-compose.yml))

   ```yaml
   services:
     termix:
       image: ghcr.io/termix-ssh/termix:latest
       container_name: termix
       restart: unless-stopped
       ports:
         - "8080:8080"
       volumes:
         - termix-data:/app/data
       environment:
         PORT: "8080"
         # Multi-instance deployments should point every backend at the same
         # Redis. Without it, collaboration rooms keep their single-instance
         # in-memory fallback.
         # REDIS_URL: "redis://redis:6379"
         # TERMIX_REDIS_PREFIX: "termix:collab"
         # TERMIX_STEP_CA_REDIS_PREFIX: "termix:step-ca"
         # Hardened deployments can require keys from environment variables or
         # Docker secrets mounted through JWT_SECRET_FILE, DATABASE_KEY_FILE,
         # ENCRYPTION_KEY_FILE and INTERNAL_AUTH_TOKEN_FILE.
         # TERMIX_REQUIRE_EXTERNAL_SECRETS: "true"
         # Trusted reverse-proxy authentication is disabled by default. When
         # enabled, do not expose this container directly to untrusted clients.
         # TRUSTED_PROXY_AUTH_ENABLED: "true"
         # List the address your authenticating proxy connects from, as this
         # container sees it (for a proxy container on termix-net, its IP there).
         # Keep it narrow: published ports can reach the container from the
         # Docker gateway, so do not trust whole private ranges.
         # TRUSTED_PROXY_AUTH_TRUSTED_PROXIES: "172.20.0.10"
         # TRUSTED_PROXY_AUTH_ROLE_MAP: '{"operators":["user"]}'
         # TRUSTED_PROXY_AUTH_USERNAME_HEADER: "x-forwarded-username"
         # TRUSTED_PROXY_AUTH_ROLE_HEADER: "x-forwarded-role"
       networks:
         - termix-net
   
   volumes:
     termix-data:
       driver: local
   
   networks:
     termix-net:
       driver: bridge
   ```

3. Start it ([source](https://github.com/Termix-SSH/Termix/blob/7b7b17e31f1327edd5e86be2b047f3100c8cd57d/docker/docker-compose.yml))

   ```bash
   docker compose up -d
   ```

4. Open the app ([source](https://github.com/Termix-SSH/Termix/blob/7b7b17e31f1327edd5e86be2b047f3100c8cd57d/docker/docker-compose.yml))

   ```text
   Open http://localhost:8080. The compose file publishes host port 8080 for the termix service.
   ```

Compose file check: config_ok on 2026-10-22.

## Gotchas and maintenance

### Gotchas

- Some images use the latest tag or no tag: Images without a pinned version: termix: ghcr.io/termix-ssh/termix:latest. A later pull can get a different version. ([source](https://github.com/Termix-SSH/Termix/blob/7b7b17e31f1327edd5e86be2b047f3100c8cd57d/docker/docker-compose.yml), checked 2026-10-22)
- The compose file publishes host ports: Host ports: 8080 (termix). A port without a host address listens on all host network interfaces. ([source](https://github.com/Termix-SSH/Termix/blob/7b7b17e31f1327edd5e86be2b047f3100c8cd57d/docker/docker-compose.yml), checked 2026-10-22)

### Signals

Computed from a GitHub snapshot taken 2026-10-22.

- Open issues and pull requests: 11
- Stars: 15619, forks: 754
- Last push: 2026-10-22 (0 days ago)
- Latest release: v26.10.4 on 2026-10-21 (0 days ago)

## Sources

- [Repository: https://github.com/Termix-SSH/Termix](https://github.com/Termix-SSH/Termix)
- [License: https://github.com/Termix-SSH/Termix/blob/7b7b17e31f1327edd5e86be2b047f3100c8cd57d/LICENSE](https://github.com/Termix-SSH/Termix/blob/7b7b17e31f1327edd5e86be2b047f3100c8cd57d/LICENSE)
- [Business model: https://github.com/Termix-SSH/Termix/blob/7b7b17e31f1327edd5e86be2b047f3100c8cd57d/README.md](https://github.com/Termix-SSH/Termix/blob/7b7b17e31f1327edd5e86be2b047f3100c8cd57d/README.md)
- [Compose file: https://github.com/Termix-SSH/Termix/blob/7b7b17e31f1327edd5e86be2b047f3100c8cd57d/docker/docker-compose.yml](https://github.com/Termix-SSH/Termix/blob/7b7b17e31f1327edd5e86be2b047f3100c8cd57d/docker/docker-compose.yml)

---
Canonical: https://openlogs.fyi/tools/termix  
Last updated: 2026-10-22
