Skip to content

Web Terminal

Eight.ly appliances have no SSH shell by default — the web terminal is how you get a shell. It's a full terminal with tmux session persistence, clipboard support, and automatic reconnection, and it's only reachable by an account with the Admin role.

Access points

  • Dashboard > Quick Actions > Terminal — opens a new terminal session
  • Infrastructure > Server > Shell tab — terminal scoped to the selected server

Features

Session persistence

Terminal sessions run inside tmux on the server. Close your browser tab, come back later, and your session is exactly where you left it — running processes, command history, everything.

Copy and paste

Clipboard integration works through the browser clipboard API. Select text to copy, use your OS paste shortcut to paste. Works across tabs and windows.

Resize handling

The terminal automatically resizes to fit your browser window. Resize the window or panel and the PTY adjusts immediately.

Reconnect

If your connection drops (network hiccup, laptop sleep), click the Reconnect button that appears in the terminal header. Your tmux session is still running on the server — you just need to reattach.

Common Operations

The terminal gives you root shell access for anything the GUI doesn't cover:

# Check disk usage
df -h

# View Docker container logs (last 100 lines, follow)
docker logs --tail 100 -f container_name

# Restart a service
systemctl restart eightly

# Check what's using the most memory
ps aux --sort=-%mem | head -20

# Run a SnapRAID sync
snapraid sync

# Check SnapRAID status
snapraid status

# View real-time system resource usage
htop

tmux Basics

Since the terminal runs inside tmux, you have access to tmux's full feature set:

Shortcut Action
Ctrl+B % Split pane vertically (side by side)
Ctrl+B " Split pane horizontally (top/bottom)
Ctrl+B arrow keys Switch between panes
Ctrl+B d Detach from session (keeps it running)
Ctrl+B c Create a new window
Ctrl+B n Next window
Ctrl+B p Previous window
Ctrl+B [ Enter scroll mode (use arrow keys, q to exit)

Multiple panes for monitoring

Split the terminal into panes to watch logs in one pane while working in another. Ctrl+B % to split, then run docker logs -f container in one pane and use the other for commands.

Limits

Setting Value
Max concurrent sessions 50
Idle session reap 24 hours

Sessions idle for more than 24 hours are automatically cleaned up. Active sessions with running processes are never reaped.

Troubleshooting

Terminal won't connect

The terminal uses WebSocket connections. If it won't connect:

  • Behind a reverse proxy: Ensure your proxy passes WebSocket upgrades. For Traefik, this is automatic. For nginx, add proxy_set_header Upgrade $http_upgrade; and proxy_set_header Connection "upgrade"; to your config.
  • Firewall blocking WebSocket: Some corporate firewalls block WebSocket connections. Try accessing via Tailscale or a Cloudflare Tunnel instead.
  • Check the URL: The terminal connects to the same host as your dashboard. If you're accessing via IP, the WebSocket connects to that IP. If via hostname, the hostname must resolve correctly.

Black screen on connect

Wait a few seconds — the PTY needs time to allocate. If it persists, click Reconnect. A black screen usually means the WebSocket connected but the tmux session hasn't attached yet.

Input lag

Input lag is almost always network latency. The terminal renders locally via WebGL, so rendering isn't the bottleneck. Check your network connection to the server. Over Tailscale or a tunnel, expect slightly higher latency than direct LAN access.

Technical details

The terminal uses a Proxmox-style binary protocol over WebSocket with a WebGL-accelerated renderer for smooth scrolling and large output buffers. The backend manages PTY sessions through tmux with coder/websocket for the transport layer.