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;andproxy_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.