Sign inSign up

greatsharktech/sharkshell

By greatsharktech

β€’Updated about 1 month ago

🦈 SharkShell β€” Secure web-based SSH client with multi-tab terminals and workspace management

Image
Networking
Security
Developer tools
0

3.6K

greatsharktech/sharkshell repository overview

SharkShell

⁠SharkShell 🦈

Secure, Self-Hosted Web SSH Client
By Greatshark Technologies

Docker Pulls License: AGPL v3 React NestJS Docker PostgreSQL


SharkShell is a modern, self-hosted web-based SSH terminal and keystore manager. Connect to remote servers directly from your browser with enterprise-grade security.

⁠✨ Features

FeatureDescription
πŸ–₯️ Multi-Tab TerminalsOpen multiple SSH sessions in tabbed terminals
πŸ“‚ WorkspacesOrganize sessions into named workspaces with persistence
πŸ” Encrypted KeystoreAES-256-GCM encryption for all stored credentials
πŸ”‘ SSH Key ManagementGenerate, upload, download, and organize SSH keys
πŸ‘₯ Host & Key GroupsColor-coded groups with glowing visual indicators
πŸ’Ύ Session PersistenceSessions survive page refresh β€” click to reconnect
🎨 Modern UIGlassmorphic design with dark mode and micro-animations

⁠🐳 Quick Start

# Download the compose file
curl -O https://raw.githubusercontent.com/sushilkumarsahani41/SharkShell/main/docker-compose.yml

# Start SharkShell
docker compose up -d

Open http://localhost:8080⁠ πŸš€

To change the port, create a .env file next to docker-compose.yml:

COMPOSE_PORT=9000

Upgrading is a single command:

docker compose pull && docker compose up -d

Your database and secrets are in named volumes β€” they survive every upgrade automatically.


⁠Docker Run (Quick One-Liner)
docker run -d \
  --name sharkshell \
  -p 8080:80 \
  -v sharkshell-pgdata:/app/pgdata \
  -v sharkshell-secrets:/app/secrets \
  greatsharktech/sharkshell:latest
⁠Bring Your Own Database

Set all four DB_* vars β€” SharkShell skips the internal PostgreSQL and connects to yours instead.

Docker Compose β€” add to .env:

DB_HOST=your-db-host
DB_USER=your-user
DB_PASSWORD=your-password
DB_NAME=sharkshell

Docker Run:

docker run -d \
  --name sharkshell \
  -p 8080:80 \
  -e DB_HOST=your-db-host \
  -e DB_USER=your-user \
  -e DB_PASSWORD=your-password \
  -e DB_NAME=sharkshell \
  -v sharkshell-secrets:/app/secrets \
  greatsharktech/sharkshell:latest

First-Time Setup: On your initial visit, SharkShell detects a fresh database and shows the Admin Account Setup screen. Create your admin account β€” open registration is disabled immediately afterward to secure your instance.

Data Persistence: All data lives in named Docker volumes (sharkshell-pgdata, sharkshell-secrets). Both docker run and docker compose use the same volume names, so you can switch between the two without losing anything.

β βš™οΈ Configuration

All settings are optional β€” SharkShell auto-generates secure defaults if not provided.

VariableDefaultDescription
DB_HOSTpostgresDatabase hostname
DB_PORT5432Database port
DB_USERsharkshellDatabase user
DB_PASSWORDauto-generatedDatabase password (strong random)
DB_NAMEsharkshellDatabase name
ENCRYPTION_KEYauto-generatedAES-256 key (64-char hex string)
JWT_SECRETauto-generated RSAJWT signing key (RSA 2048-bit keypair)
COMPOSE_PORT8080Exposed HTTP port

β πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚          SharkShell Container                β”‚
β”‚                                              β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”‚
β”‚   β”‚  nginx   │────────▢│  Nest.js API β”‚      β”‚
β”‚   β”‚  :80     β”‚ /api/*  β”‚  :3002       β”‚      β”‚
β”‚   β”‚          β”‚ ws://   β”‚              β”‚      β”‚
β”‚   β”‚ (React   β”‚         β”‚  SSH Proxy   β”‚      β”‚
β”‚   β”‚  SPA)    β”‚         β”‚  Auth/Crypto β”‚      β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚
β”‚                               β”‚              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                        β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”
                        β”‚  PostgreSQL   β”‚
                        β”‚  (internal    β”‚
                        β”‚   or external)β”‚
                        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
LayerTechnology
FrontendReact 18, Vite, xterm.js
BackendNestJS 10, Socket.IO, ssh2
DatabasePostgreSQL 16
AuthJWT (RS256 / HS256), bcrypt
EncryptionAES-256-GCM
ContainerDocker, nginx, supervisord

β πŸ”’ Security

  • First-Time Lockdown β€” Seamless admin account setup on blank databases; open registration is blocked once the admin is established.
  • RSA JWT Keys β€” auto-generated 2048-bit RSA keypair for token signing
  • AES-256-GCM β€” all passwords and private keys encrypted at rest
  • Strong Defaults β€” auto-generated database passwords and encryption keys
  • Non-Root Container β€” runs as unprivileged user inside Docker
  • Persistent Secrets β€” keys stored in Docker volume, survive restarts

β πŸ› οΈ Development

# Clone
git clone https://github.com/sushilkumarsahani41/SharkShell.git
cd SharkShell

# Backend
cd backend && npm install && npm run start:dev

# Frontend (new terminal)
cd frontend && npm install && npm run dev

Backend runs on http://localhost:3002, Frontend on http://localhost:5173

β πŸ“„ License

Copyright Β© 2026 Greatshark Technologies. All Rights Reserved.

SharkShell is released under the GNU Affero General Public License v3.0 (AGPLv3).

You are free to:

  • βœ… Use, run, and modify for personal or internal business use

You must:

  • πŸ“ Publish source code if you offer a modified version as a network service (SaaS)

Commercial Licenses are available for enterprises that wish to embed SharkShell into proprietary software. Contact Greatshark Technologies for details.


Made with πŸ’™ by Greatshark Technologies⁠

Tag summary

Content type

Image

Digest

sha256:fcb6565e7…

Size

84.2 MB

Last updated

about 1 month ago

docker pull greatsharktech/sharkshell