Skip to content
bifrost0xPublic

About

Security-focused, self-hosted SSH and SFTP workspace for homelabs and teams - multi-user, passkeys, OIDC, encrypted keys, backups, and offline-ready.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

323 stars

Watchers

0 watching

Forks

Latest commit

 

History

731 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

WebSSH

WebSSH 3 - your self-hosted SSH, files and automation workspace.

Product site · Watch the full tour · Documentation · Roadmap · Container image · Discussions

Tests CodeQL GitHub Container Registry Python 3.11 or newer Apache 2.0 License Interactive code map Latest release GitHub stars No telemetry

Product tour

WebSSH 3 dashboard with saved SSH routes and infrastructure

WebSSH keeps terminal work, files, commands, diagnostics, and notes in one responsive browser workspace. It is self-hosted, multi-user, and built without a hosted control plane or runtime CDN dependencies.

Preview the animated product tour

WebSSH tour showing a focused terminal, split sessions, the SFTP workspace, and account security

New in WebSSH 3

Status-first overview

Host readiness, open sessions, automation results and reachability at a glance. Arrange panels freely, dismiss handled alerts and find hosts with /.

Native automation

Run command sets and templates now or on a schedule, with exact-target review, saved passwords or keys and bounded per-step output.

Find SSH hosts

Scan a network range you choose for SSH and SFTP servers, gently and only on request, then add a host from a prefilled form.

Upgrading from 2.x? Read the WebSSH 3 changes and upgrade notes.

Why WebSSH

  • One workspace, not a terminal tab. Keep SSH sessions, SFTP sources, commands, live Linux context, and notes aligned with the active server.
  • Self-hosted by design. Accounts, profiles, encrypted keys, host trust, audit records, and application data remain on your WebSSH instance.
  • Safe operational boundaries. Authentication, ownership checks, network policy, host-key verification, quotas, and bounded runtime work are explicit.
  • Useful from phone to workstation. The same interface adapts from a focused mobile shell to multi-pane desktop operations.

Features

Overview and automation

  • Status-first overview: host readiness from stored configuration, open sessions, 14-day automation results, reachability and recent activity.
  • Free layout per account: drag, resize, hide and restore panels, with keyboard controls and a reset to the default arrangement.
  • Needs attention lists unverified host keys, missing jump hosts, changed saved passwords and failed runs. Handled items can be dismissed and come back when the situation changes.
  • Optional reachability checks (off, on demand, or automatic): one TCP connection to the SSH port under the SSH network policy, no login.
  • Hosts show their platform and services such as Docker or Nextcloud, read-only over SSH without elevated rights.
  • Find hosts scans a range you name for SSH and SFTP servers at a gentle, fixed pace and opens the host form prefilled. It only runs when you start it.
  • Readable route summaries and an expandable SSH map with saved arrangements.
  • A classic overview remains available, with a per-account choice of Overview or Workspaces as the start page after sign-in.
  • Reusable workflows from commands, command sets and templates, immediate runs, cron schedules, cancellation and bounded per-step output history, for saved hosts or complete groups. Administrators enable Automation; it is disabled by default and requires HTTPS.
  • Optional encrypted, per-account passwords shared by saved hosts and supported connection types. Administrators enable this under Integrations.
  • Application backup exports exclude stored passwords and SSH private keys. Keep a separate credential recovery plan before restoring.

See the WebSSH 3 changes and upgrade notes, automation guide and credential guide.

See all eleven themes in WebSSH 3 WebSSH 3 dashboard cycling through eleven themes

Terminal workspace

  • Multiple SSH sessions with tabs and 1-, 2-, or 4-pane layouts.
  • Optional persistent remote shells through tmux, with session-local mouse scrolling and folder synchronization after explicit Bash prompt setup.
  • Saved connections, jump hosts, key, password, SSH server PAM MFA, and optional Tailscale SSH authentication paths.
  • Broadcast input, terminal search, transcripts, reconnect controls, and configurable scrollback.
  • Per-account terminal appearance with four self-hosted Nerd Font Mono families (JetBrains Mono, Hack, Fira Mono, and Source Code Pro), local font selection, and live shell, code, and character previews.
  • Session-aware Files, Commands, Diagnostics, and Notes contexts.
  • Active Session Monitoring for supported Linux resource and runtime data.
  • Expanded Diagnostics for resource history, processes, systemd services, and Docker containers.
  • Clipboard-Only Service Actions that prepare allowlisted commands without executing the service change inside WebSSH.

Fonts and Nerd Font symbols are served locally; see the terminal font guide.

Files and transfers

  • Source-first SFTP and opt-in SMB workspace with independent tabs and one or two file panes.
  • Uploads, downloads, previews, inline text editing, and common file operations.
  • Streamed HTTP bulk transfers with Socket.IO limited to control events and bounded editor content.
  • Server-to-server transfers across SFTP and SMB sources with progress, cancellation, explicit conflict handling, and a shared transfer queue.
  • Same-source moves between folders without silently replacing existing items.
  • Stable, visible transfer reasons such as permission denied, conflict, unavailable source, timeout, and configured-limit violations.
  • Per-user ownership checks, size limits, quotas, and path validation.

SMB is disabled by default (SMB_ENABLED=false) and needs an exact SMB_ALLOWED_TARGETS allowlist. WebSSH requires SMB 3.1.1 with signing and encryption, never silently overwrites a destination and refuses symlink and wide-link traversal. See the file workspace guide for authentication, access checks, limits and the trust boundary.

Identity and security

  • Local multi-user accounts with isolated profiles, keys, files, settings, and SSH host trust.
  • Optional Passkeys, authenticator apps (TOTP), and one-time Recovery Codes.
  • Optional OIDC, admin-configured GitHub App, and LDAP/Active Directory sign-in with conservative account linking and assurance handling.
  • Action-bound confirmation for protected account and administrative changes.
  • Encrypted SSH private-key storage and per-user known-host decisions.
  • CSRF protection, secure response headers, rate limits, request limits, audit logging, and production fail-closed checks.

Operations and administration

  • Docker and Docker Compose deployment with a persistent data volume.
  • Health and readiness endpoints for deployment checks.
  • User administration, registration controls, security feature gates, and structured audit export and retention.
  • Consistent online backups and restore with maintenance mode, staging isolation, quotas, explicit confirmation, and bounded execution.
  • Optional Redis-backed rate-limit counters.
  • Vendored browser dependencies, a same-origin Content Security Policy, and no built-in telemetry.

Screenshots

Captured from the current interface with synthetic hosts and example data.

Arrange the overview

WebSSH overview in layout editing mode with move, width and hide controls on every panel

Every panel can be moved, resized or hidden. The arrangement belongs to your account and stacks in the same order on small screens.

Find SSH hosts

WebSSH host discovery dialog listing SSH servers found in a network range, with saved hosts marked and Add buttons for new ones

Discovery reads only the greeting an SSH server sends by itself, marks hosts you already saved and turns a result into a prefilled new host.

Focused session workspace

Connected WebSSH terminal with active-session controls and a notes workspace

The active session stays central while contextual tools remain close at hand.

Multiple live sessions

WebSSH desktop workspace with two live terminal panes and four session tabs

Split panes make side-by-side observation and coordinated work visible without mixing session ownership or terminal state.

Commands, favorites, and reusable sequences

WebSSH Command Library with searchable command cards, operating-system filters, and separate Favorites and Command Sets tabs

Browse the library, keep frequently used entries in Favorites, and build reusable Command Sets. Each has its own label, icon, and color.

WebSSH Command Set editor with a searchable library, ordered steps, and per-step parameter controls

Arrange steps, review parameters, and assign a saved sequence to a connection.

File workspace

WebSSH dual-pane file workspace with trusted sources and a transfer queue

Each pane has an explicit source, endpoint, path, trust state, and selection.

Optional SFTP Unix permissions (disabled by default) preview changes before applying them; see the permissions guide.

Review file changes before saving

WebSSH file editor showing the destination, a colored line diff, original-file backup, and explicit save confirmation

Check the target and changed lines, optionally download the original, then explicitly save the reviewed content.

Preview the file editing workflow

WebSSH file workflow from dual-pane browsing through preview, editing, save confirmation, and transfer completion

Security Center

WebSSH Security Center showing sign-in assurance, SSH host trust, Passkeys, TOTP, and Recovery Codes

The Security Center explains how the current sign-in confirms protected changes and keeps factors and SSH trust in one account-owned view.

Mobile workspace

WebSSH mobile terminal workspace with responsive session controls and connection status

Quick Start

The supplied Compose file is intended for evaluation and trusted homelab networks. It stores the database, generated application secret, user data, and encrypted keys in the webssh_data volume.

mkdir webssh-deployment
cd webssh-deployment
curl -O https://raw.githubusercontent.com/bifrost0x/webssh/main/docker-compose.yml
docker compose up -d

Open http://localhost:5000. On a new instance, create the first administrator immediately from a trusted network. The one-time browser bootstrap closes after that account exists.

Verify readiness with curl -fsS http://localhost:5000/ready.

The supplied Compose file follows latest. For controlled upgrades, pin a published version or verified image digest, keep Compose files from the same release, and back up the data with matching secrets. See upgrade and rollback guidance.

Do not expose this homelab configuration to the Internet unchanged. Read the Quick Start, the Production Deployment guide and the production container boundaries.

Security Boundary

WebSSH trust boundaries from the browser through the single application process to owned SSH and SFTP targets

WebSSH is trusted infrastructure: it handles credentials, terminal I/O and file data, and is not an end-to-end encrypted relay.

Keep these deployment contracts intact:

  • Terminate HTTPS at a trusted boundary and protect the WebSSH host, data volume, logs, backups, and administrator accounts.
  • Review SSH host-key fingerprints before trusting them and investigate unexpected changes.
  • Production uses exactly one Gunicorn gthread worker. Live SSH state and part of the resource coordination are process-local; multiple workers or replicas are not supported without an external session-state architecture.
  • Thread count, socket admission, per-user socket limits, background workers, and quotas form one capacity model. Keep HTTP capacity reserved.
  • External OIDC or LDAP identity never bypasses the local account, ownership, or authorization model. Retain a tested local break-glass administrator.
  • Native backups exclude saved remote passwords and SSH keys. They still contain account authentication data and may contain the persisted application secret; store them encrypted and off-host. After restore, reimport keys, recreate passwords, reassign credentials, and review and re-enable schedules.

See the Security Model and Hardening guide and the project's security policy before exposing WebSSH to untrusted networks.

Documentation

Detailed guidance lives in the WebSSH Wiki; its versioned source is reviewed with the code.

Goal Guide
Install with Docker Docker and Docker Compose
Deploy behind HTTPS Production Deployment
Configure every setting Configuration Reference
Connect and verify hosts SSH Connections and Host Keys
Use terminal and tmux sessions Terminal and Persistent tmux Sessions
Work with files and transfers SFTP File Workspace and Transfers
Configure authentication Authentication Overview
Run backup or restore Backup, Restore and Secret Rotation
Troubleshoot health checks Health Checks and Troubleshooting
Understand the runtime Architecture and Runtime Lifecycle
Develop and test locally Development and Testing

More: roadmap · project history · planning and releases · product site · code graph · container image

Contributing and Support

Bug reports and focused pull requests are welcome. For feature proposals and architecture ideas, start with GitHub Discussions so the security and runtime boundaries can be reviewed before implementation.

Star History

Star history of bifrost0x/webssh

License

WebSSH is available under the Apache License 2.0.

Bundled third-party components retain their own licenses. See Licensing and retained notices.

About

Security-focused, self-hosted SSH and SFTP workspace for homelabs and teams - multi-user, passkeys, OIDC, encrypted keys, backups, and offline-ready.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

323 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages