Appearance
Terminal
Home Lab has a built-in web SSH terminal. Open Terminal in the sidebar to shell into any host - VPSes, bare-metal, Proxmox LXCs - and your running Docker containers, all from the browser with multiple tabs open at once.
It's a real terminal (xterm.js) bridged over a WebSocket to an SSH client on the server, so it behaves like a normal shell: colours, resizing, interactive programs (vim, htop, top) all work. The xterm assets are vendored into the image - no CDN, works offline.
Secrets are encrypted - set SECRET_KEY
Host passwords and private keys are stored AES-encrypted at rest, never in plaintext and never sent to the browser. Set a SECRET_KEY env var so the key is yours; if you don't, Home Lab generates one in the data volume and warns you in the UI.
Adding a host
Click Add host:
| Field | Notes |
|---|---|
| Name / Group | Label and folder (e.g. vps, proxmox) |
| Host / IP, Port, User | Standard SSH target |
| Auth | Password or Private key (+ optional passphrase) |
| Proxmox LXC | Switch to pct enter to reach a container through its node |
Works for any reachable host - a cloud VPS, a Pi, another server - not just Proxmox.
Proxmox LXCs
Two ways to reach LXCs:
- Direct SSH - if the container runs
sshd, just add it by IP. pct enter- for containers without an SSH server, set auth to the Proxmox node's credentials and switch the host to pct enter with the container's VMID. Home Lab SSHes to the node and runspct enter <vmid>.
Import from Proxmox
Add host → the Proxmox button enumerates your guests via the Proxmox API you already configured and lets you tick the ones to add (name, node, and the static IP from net0 when present - fill any blanks after).
Using the terminal
- Click a host to open a tab; open as many as you like and switch between them.
- Each session shows a connection-status dot. Window resizes are sent to the remote PTY automatically.
- Snippets - save common commands and fire them into the active session from the dropdown.
SFTP file browser
The Files button on a host opens an SFTP browser - navigate folders, download files (click), and upload (drag a file in). Handy for grabbing a log or dropping a config without leaving the dashboard.
Generate a key
Add host → the key button generates an ed25519 keypair in-browser:
- Copy the public key into the target's
~/.ssh/authorized_keys. - Paste the private key into the host's Private key field (it's encrypted on save).
Docker container shells
Running containers appear under Docker containers in the host list - click one for a real interactive docker exec shell (needs the EXEC capability on that socket-proxy). This is the interactive companion to the Docker management command runner.
Audit
The audit button shows a log of recent SSH connections (who/where/when), stored in the data volume.
Security notes
- The WebSocket runs on the same origin and is gated by whatever protects the rest of the dashboard (e.g. a forward-auth gateway).
- Secrets are AES-encrypted with your
SECRET_KEY; the data volume is yours. - Host keys are remembered on first connect (trust-on-first-use) and a change is treated as a failure - basic MITM protection.