Skip to content

WebSSH v1.0.0

Choose a tag to compare

@bifrost0x bifrost0x released this 23 Jul 07:26
· 223 commits to main since this release
Immutable release. Only release title and notes can be modified.

WebSSH v1.0.0

This is the first official release of WebSSH: a modern, self-hosted browser-based SSH terminal with an integrated SFTP file manager.

WebSSH is designed for homelabs, server administration, and small teams that want convenient browser access without relying on an external service.

Highlights

Terminal

  • Up to 10 concurrent SSH sessions
  • Tabs and 1, 2, or 4-pane layouts
  • Broadcast input across multiple sessions
  • Persistent remote sessions through tmux
  • Session restoration and manual reconnect
  • Saved connection profiles and jump hosts
  • Reusable post-connect command sets
  • Command palette, terminal search, notes, and transcripts
  • Configurable scrollback and multiple terminal themes

SFTP file manager

  • Dual-pane file browser
  • Drag-and-drop uploads
  • Server-to-server transfers
  • Transfer queue with conflict handling
  • Batch operations
  • File previews and log tail mode
  • Inline text editor
  • Directory downloads as ZIP archives
  • Direct SFTP access without opening a terminal

Multi-user administration

  • Individual user accounts
  • Per-user profiles, SSH keys, commands, and settings
  • Administrator panel and user management
  • Registration controls
  • Structured audit logging
  • Six interface languages

Security

  • Encrypted SSH key storage
  • Per-user encryption key derivation
  • bcrypt password hashing
  • CSRF protection and rate limiting
  • Persistent SSH host-key verification
  • Session ownership checks
  • Security headers and optional SSRF protection
  • Optional, restricted Tailscale SSH integration

Deployment

  • Docker and Docker Compose support
  • Multi-architecture images for AMD64 and ARM64
  • Reverse-proxy examples for nginx, Traefik, and Caddy
  • Subfolder deployment support
  • Persistent configuration and user data under /app/data

Quick start

docker run -d \
  --name webssh \
  -p 5000:5000 \
  -e CORS_ORIGINS=http://localhost:5000 \
  -v webssh_data:/app/data \
  --restart unless-stopped \
  ghcr.io/bifrost0x/webssh:1.0.0

Then open http://localhost:5000 and create the first administrator account.

Updating an existing Docker Compose installation

Back up your persistent data before updating, then run:

docker compose pull
docker compose up -d

Important notes

  • WebSSH currently uses in-memory SSH session state and must run with a single application worker.
  • Persistent tmux sessions require tmux to be installed on the remote SSH host.
  • Tailscale SSH is disabled by default and uses the WebSSH node's shared Tailscale identity. Review the documented access restrictions before enabling it.
  • Keep /app/data on a persistent Docker volume. It contains accounts, settings, encrypted keys, profiles, and the generated secret key.

Thank you to everyone who tested WebSSH, submitted feedback, or contributed improvements.

Questions, ideas, and feature requests are welcome in GitHub Discussions.