SSH2incus web ssh and more

The ssh2incus project is excited to announce the release of v0.9, a major milestone that introduces a web-based ssh access to Incus instances.

Overview

SSH2Incus v0.9 transforms how developers and admins interact with Incus by introducing a sleek, intuitive web dashboard alongside the existing command-line interface. This release brings professional-grade instance management capabilities to the browser without sacrificing the power and flexibility that command-line users expect.

Modern Web Dashboard

The new web interface provides a responsive, dark-mode-enabled dashboard for managing Incus instances and access terminal with optional session persistence using tmux or screen.

Web-Based Terminal

Access instance shells directly from the browser with the new terminal emulation:

  • xterm.js integration for full terminal support
  • Persistent sessions using tmux/screen
  • Terminal resizing and interactive command support
  • Real-time updates via WebSocket connection
  • Automatic package installation for tmux/screen

Instance Creation Wizard

Creating new instances is now as easy as filling out a form. The new 4-step wizard guides users through every configuration option without requiring command-line syntax:

Step 1: Basic Configuration

  • Instance name and project selection
  • Automatic name uniqueness validation
  • Profile selection with merging
  • Image selection with searchable dropdown
  • Resource allocation (CPU, Memory, Disk)
  • Ephemeral toggle

Step 2: Advanced Settings

  • Configuration key-value pairs (e.g., security.privileged: true)
  • Specialized device editors:
    • Proxy devices with TCP/UDP/Unix socket support and NAT mode
    • Disk devices for mounting volumes and directories
    • Generic devices for other device types
  • Device name conflict detection
  • Real-time validation with helpful error messages

Step 3: Cloud-Init Configuration

  • Code editor with syntax highlighting
  • Support for YAML cloud-config and shell scripts
  • Auto-detection of bash script via shebang
  • Smart warning: Alerts users when selected image doesn’t support cloud-init
  • Preloaded cloud-init data from selected profile

Step 4: Review & Create

  • Complete configuration summary before creation
  • Applied profiles

Download from GitHub

Community Feedback

Your feedback is valuable! Please share it via our community board:

  • :bullseye: Feature requests for additional functionality
  • :bug: Bug reports with reproduction steps
  • :light_bulb: Ideas for improving the user experience
  • :e_mail: Comments on the new profile merging behavior
6 Likes

This looks like a really nice idea. I like the approach of not needing to run an SSH server inside every container or VM and instead handling access from the Incus host itself. That alone can simplify a lot of setups, especially when you’re managing many instances.

The web-based SSH console is a cool addition too. Being able to jump into a container from the browser without extra tooling feels very practical for day-to-day admin work, testing, or quick checks. It also makes Incus feel more accessible for people who don’t want to rely entirely on CLI workflows.

From a security perspective, it does seem important to be careful about how the web UI is exposed. Putting it behind a reverse proxy with proper TLS and auth would definitely be a must if it’s reachable from outside your LAN — similar to how you’d lock things down before routing traffic through external services.

Overall, this feels like a solid evolution of the old ssh2lxd idea, adapted well for Incus. Curious to see how people end up using it long-term and whether it becomes part of more standard Incus setups.

1 Like

We’ve just released ssh2incus v0.10 with a whole lot of little improvements in the web UI and a few new features to simplify instance deletion using ssh. Here are some highlights:

Added

  • Instance Removal via SSH: Delete instances using ssh /rm/instance.project@host or ssh /remove/instance.project@host commands
    • Force deletion with /rm-f/ or /remove-force/ to skip confirmation
    • Requires root host user for security
    • Automatically handles ephemeral instance cleanup
    • Shows instance details before confirmation
  • Login String Explanation: New /explain/ command decodes complex login strings
    • Example: ssh /explain/root@myinstance.default@host shows parsed components
    • Helps troubleshooting and onboarding

Improved

  • Image Selection: Web UI now supports selecting images from local or remote repositories
  • OS Detection: Enhanced OS detection for better web UI display of instance information
  • Config Viewer: Read-only CodeMirror modal for viewing multi-line configuration values
  • Terminal Font: Bundled monospace nerd font for consistent terminal/editor rendering
  • Web UI Reliability: Fixed empty instance list display when no containers are running
  • NixOS Compatibility: SSH authentication now checks /etc/ssh/authorized_keys.d/<user> in addition to ~/.ssh/authorized_keys
  • Non-Root Operation: Auto-detects process owner instead of hardcoding “root” as default host user for authentication
1 Like

We’re excited to share what’s coming in the next ssh2incus release in March 2026.

The web interface continues to improve, and you can now manage multiple remote Incus servers from a single ssh2incus instance.

New features include:

New Dashboard — See Incus server statistics, CPU, Memory, Storage utilization.

Secrets Management — Manage secrets for instance creation for use in environment variables and cloud-init scripts.

Instance Lifecycle — Import/export instances locally and to S3.

Config Editor — Create, manage, and test instance setup profiles and cloud-init files. An integrated AI assistant helps you edit or generate cloud-init configurations effortlessly.

Coming soon:

Infrastructure Services — Application Load Balancer (similar to AWS ALB), DNS Server (similar to AWS Route53), and SSL certificate management (similar to AWS ACM).

Best of all, everything runs self-hosted on your own infrastructure. :grinning_face_with_smiling_eyes: