Important
Sshelf is currently in Public Beta (v0.1.0-beta). While core features like the encrypted vault and terminal are functional, you may encounter bugs. We recommend backing up your APP_KEY and testing in a safe environment.
Sshelf (Secure Shelf) is a secure SSH credential manager and real-time web terminal built with Laravel 13, Livewire 3, and xterm.js. It allows you to manage multiple server credentials securely and access them directly from your browser.
- Encrypted Vault: Server credentials (passwords/private keys) are encrypted at rest using industry-standard AES-256-GCM.
- Web Terminal: High-performance interactive terminal powered by xterm.js and Laravel Reverb.
- SSH Key Manager: Generate and manage Ed25519 SSH keys directly within the application.
- Role-Based Access Control (RBAC): Assign Admin or Viewer roles to restrict who can manage infrastructure vs who can only access it.
- Real-Time Health Monitoring: Periodically fetches CPU, Memory, and Disk usage via SSH and broadcasts live updates to your dashboard.
- API & CLI Bridge: Programmatic access with token-based (Sanctum) authentication, allowing external tools to interact with your vault and execute commands.
- Audit Trails: Detailed UI for viewing connection history, including IP addresses, timestamps, and session durations.
- Organization: Group servers with smart tags and search for easy management.
- Mobile Friendly: Fully responsive design with card views optimized for small screens.
- Import/Export: Easily migrate data via JSON, CSV, or standard SSH config files.
Sshelf is optimized for self-hosting using FrankenPHP. The simplest way to deploy is using Docker Compose:
- Clone the repository and enter the directory.
- Create your
.envfile:cp .env.example .env
- Generate an application key:
Paste this key into your
docker run --rm -v $(pwd):/app php:8.3-cli php /app/artisan key:generate --show.envasAPP_KEY. - Start the stack:
docker-compose up -d
Sshelf will be available at http://localhost:8080.
Sshelf is open-source and free to use. If you find it useful and want to support its continued development, please consider sponsoring the project:
Your support helps cover hosting costs and keeps the project alive!
- Encryption: Keep your
APP_KEYsafe. If lost, you will lose access to all stored server passwords. - Background Worker: Sshelf uses a background process for the terminal. Ensure
PHP_BINARY_PATHin your.envpoints to your CLI PHP binary. - Reverb: Real-time communication is handled by Laravel Reverb. Ensure your firewall allows WebSocket traffic on the configured port.
-
Clone the repository:
git clone https://github.com/syofyanzuhad/sshelf.git cd sshelf -
Install dependencies:
composer install npm install
-
Setup environment:
cp .env.example .env php artisan key:generate
-
Run migrations:
php artisan migrate
-
Build assets:
npm run build
Start the development servers:
php artisan reverb:start
npm run devSshelf is designed with security in mind:
- Authorization: Strict Laravel Policies ensure users only access their own servers.
- Privacy: Terminal sessions are broadcast over private, authenticated WebSocket channels.
- Audit: Every access attempt is logged for complete transparency.
The Sshelf project is open-source software licensed under the MIT license.