Skip to content

WebSSH v1.1.0

Choose a tag to compare

@bifrost0x bifrost0x released this 03 Aug 14:44
· 194 commits to main since this release
Immutable release. Only release title and notes can be modified.
17d6ab8

WebSSH v1.1.0

WebSSH v1.1.0 is a substantial security, reliability, identity, and administration update. It adds native web backup and restore, modern authentication options, stronger SSH and storage boundaries, safer transfer handling, and a significantly expanded test and supply-chain baseline.

Highlights

Native web backup and restore

  • Create, download, upload, verify, and restore backups directly from Administration > Backup & Restore.
  • Create online-consistent snapshots with SQLite's native backup API while WebSSH remains available.
  • Protect generated archives with administrator-only, session-bound, one-time downloads and automatic expiry.
  • Validate uploaded archives against path traversal, symlinks, duplicate or encrypted members, ZIP bombs, checksum and size mismatches, malformed databases, and unsupported schema versions.
  • Restore through maintenance mode with password reauthentication, two explicit confirmations, emergency rollback, session invalidation, and a controlled application restart.
  • Preserve verification and restore support for legacy format-v1 archives while new CLI and web archives use format v2 with explicit data-schema compatibility.
  • Keep the existing offline CLI backup, verification, restore, and persisted-secret rotation workflows fully supported.

Backup archives contain highly sensitive application data. Store downloaded archives encrypted, off-host, and with access restricted to administrators.

Authentication and account security

  • Add username-less discoverable passkey sign-in and a password-protected credential replacement path.
  • Add OIDC identity support with explicit administrator linking based on stable issuer and subject identifiers. Accounts are never linked automatically by email address.
  • Add recovery-code management, hardened recovery login, bounded WebAuthn challenges, and a dedicated Security interface.
  • Make the first account on a fresh standard installation the initial administrator through a one-time atomic bootstrap flow.
  • Preserve existing administrator assignments and repair only legacy installations that contain users but no administrator.
  • Add administrator audit export, retention controls, completeness metadata, and safer asynchronous security actions.

SSH, SFTP, and persistent-state hardening

  • Replace Eventlet with native threaded Socket.IO and background execution while retaining the required single-worker deployment model for process-local SSH state.
  • Add per-user SSH host trust, persistent host-key verification, DNS/address pinning, stronger SSRF controls, resource quotas, and bounded Paramiko operations.
  • Add explicit transfer lifecycle management, cancellation, bounded upload and download routes, reliable temporary-client cleanup, and safer remote ZIP handling.
  • Harden atomic storage, schema validation, corruption handling, migrations, user deletion quarantine, and secret rotation with rollback safeguards.
  • Add graceful runtime shutdown, connection cleanup, liveness and readiness endpoints, and persistent-data write checks.
  • Upgrade the container runtime to Python 3.14 and refresh the locked Python, JavaScript, and CI dependency stack.

Saved connection workflow

  • Launch complete saved connections directly without flashing the Quick Connect dialog.
  • Fall back to review only when a password, key, jump-host credential, or authorization decision is still required.
  • Upload SSH keys inline while editing a saved connection without losing entered profile data.
  • Rename stored keys atomically while preserving key usability after mutation acknowledgements.
  • Use consistent Saved Connections and Quick Connect terminology across all six supported languages.
  • Improve keyboard accessibility, touch targets, and the 375 px mobile layout.

Operations and supply-chain security

  • Add /health and /ready endpoints and use readiness checks for the container healthcheck.
  • Add a production Compose overlay and clearer reverse-proxy, secret, identity-provider, backup, and recovery guidance.
  • Reproducibly lock Python dependencies with hashes and validate the locks in CI.
  • Pin GitHub Actions and container inputs, and add CodeQL, Trivy, dependency, browser, Redis 7/8, SSH integration, and container-threading gates.
  • Publish multi-architecture AMD64 and ARM64 images with SBOM and provenance attestations.

Upgrade notes

  1. Create and download a verified backup before upgrading. The new native Admin workflow can create an online-consistent backup without stopping WebSSH.

  2. Pull the versioned image ghcr.io/bifrost0x/webssh:1.1.0, or update an existing Compose deployment with:

    docker compose pull
    docker compose up -d
  3. Wait for the container healthcheck and verify /ready, administrator login, stored keys, a direct terminal connection, and SFTP before returning the service to users.

Built-in database and storage migrations run during startup. Existing users and administrator assignments are preserved, but backups remain mandatory before an upgrade of persistent state.

Custom Python deployments should note that the runtime no longer uses Eventlet. The official container now uses Python 3.14. WebSSH must still run with one application worker because live SSH state remains process-local.

Validation

The release commit passed the complete Python test matrix, JavaScript unit tests, browser E2E scenarios, Redis 7 and 8 checks, SSH integration, container-threading smoke tests, dependency-lock verification, CodeQL, Trivy image scanning, and multi-architecture Docker builds.

Included pull requests

Full changelog: v1.0.0...v1.1.0

Thank you to everyone who tested WebSSH, reported issues, suggested improvements, or contributed changes.