2 min read
NeXTSSH

NeXTSSH: A Web-based SSH Client and Terminal Emulator

Landing Page

Connect to and command your remote servers effortlessly with NeXTSSH, a web-based SSH client and terminal emulator. Master your systems directly from your browser!

Key Features

  • Seamless SSH Connections: Establish secure connections to your remote servers with ease.
  • Responsive Terminal Experience: Enjoy a fluid, full-featured terminal right in your web browser.
  • Organized Connection Management: Conveniently manage multiple server connections.

Technologies

  • NextJS: Blazing-fast React-based web framework.
  • NodeJS: Robust JavaScript runtime environment.
  • Socket.io: Real-time, bi-directional communication for seamless updates.
  • Xterm.js: Robust terminal emulation in the browser.
  • SSH2: Comprehensive SSH2 implementation for NodeJS.

Local Development

  1. Clone the Repository:

    git clone https://github.com/tapiwamla/NeXTSSH.git
    
  2. Install Dependencies:

    npm install
    
  3. Add Environment Variables: Create a .env file with the following content:

    NEXTAUTH_SECRET='your-secret-key' (Use `openssl rand -base64 32` to generate a secret key)
    GOOGLE_CLIENT_ID='your-client-id'
    GOOGLE_CLIENT_SECRET='your-client-secret'
    GITHUB_CLIENT_ID='your-client-id'
    GITHUB_CLIENT_SECRET='your-client-secret'
    

    Note: The NEXTAUTH_SECRET value is optional for development, but required for production.

  4. For development, start the Development Server:

    npm run dev 
    

    For production, first build the project:

    npm run build
    

    Then start the server:

    npm run start
    

Screenshots

Connection Page:

New Connection Page

Connections Dashboard:

Connections Dashboard

Terminal Page:

Terminal Page

Account Page:

Account Page

Dark Mode:

Dark Mode

Testing

  • The project includes Jest for unit testing.

  • Run unit tests:

    npm test
    

Notes

  • Support: If you find NeXTSSH useful, a star on the GitHub repo would be awesome!
  • Security: NeXTSSH handles SSH connections. Ensure you follow best security practices and use strong credentials.
  • Deployment: Explore suitable hosting options (like cloud providers) for production deployment.