billchurch / webssh2

Web SSH Client using ssh2, socket.io, xterm.js, and express. webssh webssh2
MIT License
2.32k stars 532 forks source link

Feedback Request: New WebSSH2 Client and Server Architecture #368

Open billchurch opened 3 weeks ago

billchurch commented 3 weeks ago

Overview

I've been working on significantly refactoring WebSSH2, aiming to improve modularity, flexibility, and compatibility with different frameworks. I want to share this work in progress and gather feedback from the community.

Key Changes

  1. Split Architecture: The project has been split into separate client and server components:

  2. Targeted Node Version: The server has been refactored to target an older version of Node.js (v6.9.1) for a specific use case. However, after I get some feedback here, I intend to release a newer version of the server code targeting node v18 (or greater, depending on the feedback).

  3. Docker Image: A new Docker image is available for testing:

    docker run -it --rm --name webssh2 -p 2222:2222 -e DEBUG="webssh2*" billchurch/webssh2:bigip-server
  4. Modularity: The new architecture allows for easier client customization for different frameworks while maintaining a consistent server backend.

Goals

Feedback Requested

  1. Does this new architecture make sense for your use cases?
  2. Have you encountered any issues with the current WebSSH2 that this might address?
  3. What features or improvements would you like to see in this new version?
  4. Do you have any thoughts on the documentation structure and content in the new repos?
  5. What did I miss that you used from the previous client? What features do we need to add?

Next Steps

Based on community feedback, we'll refine this approach and merge it into the main WebSSH2 project. Your input is crucial in shaping the future of WebSSH2.

Please review the READMEs in both repositories for more details:

Thank you for your time and input! -Bill

billchurch commented 3 weeks ago

webssh2_client improvements:

billchurch commented 3 weeks ago

bigip-server what does it all mean

Please ignore the name; you don't need a BIG-IP to run this. The docker has everything you need. Eventually, this will replace an existing solution that runs on a BIG-IP as an iRule.

israel-tsadok-silk commented 1 week ago

First, I would like to say thank you for this project. We've been using it for almost 2 years now for quick access to our testing environments, and it has been very popular among our internal users.

Our use case is fairly simple: we have an internal website that allows users to bring up a test VM. Once the VM is up, the user can click it, and a webssh2 terminal gets opened in a new tab, already authenticated, ready for commands. While this may seem a little crazy from a security perspective, these are ephemeral test systems, only accessible locally, and the number of people with access to the network is small.

I did some quick testing of webssh2:bigip-server. These are my observations:

The split makes sense, the code looks cleaner, and I appreciate the extra documenation.

I have a couple of items on my wishlist, though I'm not sure if this is the right place for them or if I should just create separate issues, but you asked, so here goes:

I don't think either of these are easier to implement with the new architecture.

billchurch commented 1 week ago

Thanks; this is precisely what I was looking for. Based on your feedback here and in webssh_client, I opened issues to track these requests/fixes and changes.

I mostly appreciate the notes for documentation, as it can be a struggle to document some of these changes or omissions.