Skip to content

radhakishan404/sshipit

Repository files navigation

πŸš€ SSHipIt

Self-hosted CI/CD over SSH for Node.js, Next.js, and React apps.
Built for developers by developer who want production control without sharing server access.

GitHub stars GitHub forks GitHub issues CI License

Latest release Last commit Repo size Node.js Self-hosted SSH Powered PRs welcome


πŸ˜… Why I Built This

I was doing deployments like this:

ssh -> git pull -> npm install -> build -> migrate -> pm2 restart -> repeat

Across multiple servers. Every day.

So I built SSHipIt:

  • No GitHub Actions dependency
  • No sharing production server with third-party CI
  • No one-env-key-at-a-time UI pain
  • Just clean, local-first, SSH-native deployments

If this saves your time, star it and share it.

✨ What It Does

  • πŸ“¦ Project management for Node.js, Next.js, React
  • πŸ–₯️ Reusable SSH servers across projects
  • πŸ” Encrypted server credentials (AES-256-GCM at rest)
  • βš™οΈ Smart stack defaults (install/build/start/restart)
  • 🌱 Bulk .env editing for production
  • 🚚 Manual deploy + one-click redeploy
  • πŸ“œ Live log streaming over WebSocket
  • 🧭 Deployment history with filtering + cancel/delete
  • 🧱 Release folders + current symlink strategy
  • πŸ§ͺ Migration support (Prisma / Sequelize / Knex / TypeORM)

🧠 Architecture

flowchart LR
    UI["SSHipIt UI (Browser)"] --> API["Node.js API + WebSocket"]
    API --> DB["SQLite (projects, env, servers, deployments)"]
    API --> RUNNER["Deploy Runner"]
    RUNNER --> LOCAL["Local workspace deploy"]
    RUNNER --> SSH["Remote deploy over SSH"]
    SSH --> TARGET["Server (repo, releases, current, pm2)"]
Loading

⚑ Quick Start (60 seconds)

git clone https://github.com/radhakishan404/sshipit.git
cd sshipit
npm install
cp .env.example .env
npm start

Open: http://localhost:3000

Required .env keys:

  • PORT
  • DATABASE_PATH
  • WORKSPACE_ROOT
  • KEEP_RELEASES
  • ENCRYPTION_KEY (set a long random value in production)

πŸ› οΈ First Deployment

  1. Create a project
  2. Select framework and click smart defaults
  3. Paste production env in bulk
  4. Add or attach an SSH server
  5. Test connection
  6. Select target server
  7. Click Deploy Now
  8. Follow live logs

🧩 Default Stack Behavior

Stack Install Build Restart
Node.js npm ci || npm install optional PM2 restart/start fallback
Next.js npm ci || npm install npm run build PM2 restart/start fallback
React npm ci || npm install npm run build usually nginx reload

You can override all commands per project.

πŸ”Œ API + WebSocket

Core APIs:

  • GET /api/projects
  • POST /api/projects
  • PUT /api/projects/:id
  • DELETE /api/projects/:id
  • GET /api/projects/:id/env
  • POST /api/projects/:id/env/bulk
  • GET /api/projects/:id/servers
  • POST /api/projects/:id/deploy
  • GET /api/projects/:id/deployments
  • POST /api/deployments/:id/redeploy
  • POST /api/deployments/:id/cancel
  • DELETE /api/deployments/:id

WebSocket:

  • ws://localhost:3000/ws

πŸ“š Dependency Map

Dependency Use
express HTTP API
ws Live logs/events over WebSocket
better-sqlite3 Local metadata DB
ssh2 SSH execution and remote deploy
dotenv Runtime env loading
zod Request validation
uuid IDs
cors, morgan API support + logs

πŸ—ΊοΈ Roadmap (PRs Welcome)

  • Git webhook auto-deploy (GitHub/GitLab/Bitbucket)
  • Build/test quality gates
  • Health-check gate before success
  • One-click rollback
  • Blue/green and canary rollout options
  • Secret backends (Vault, SSM)
  • Slack/Discord/email notifications
  • Multi-user auth + RBAC
  • Docker/Compose mode
  • Kubernetes target adapter
  • Deployment analytics dashboard

If you want to build one, open a PR.

πŸ“£ Want Users? Read This

A practical growth plan is here:

It includes:

  • launch-week checklist
  • where to post
  • post templates (X/LinkedIn/Reddit/dev.to)
  • repeatable content strategy for stars + users

🀝 Contributing

  • Read CONTRIBUTING.md
  • Use issue templates in .github/ISSUE_TEMPLATE
  • Keep PRs focused and include logs/screenshots for deploy/UI changes

πŸ” Security

Please read SECURITY.md for responsible disclosure.

πŸ“„ License

MIT - see LICENSE.

🧭 Maintainer Setup (GitHub UI)

To complete project hygiene, set these in the repo settings:

  • Description:
    • Self-hosted CI/CD over SSH for Node.js, Next.js, and React apps
  • Website:
    • https://github.com/radhakishan404/sshipit#readme
  • Topics:
    • cicd, self-hosted, ssh, deployment, nodejs, nextjs, react, devops
  • Enable:
    • Discussions
    • Issues
    • Wikis (optional)
    • Security advisories

About

CD over SSH for Node.js, Next.js, and React apps

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors