nimdeploy¶
Push to your git host, and your server deploys itself. One static binary, signed webhooks, a log per deploy, no root needed.
nimdeploy receives push webhooks from GitHub, Gitea, Forgejo, GitLab or
Bitbucket, checks the signature, the repository and the branch, and runs the
deploy command you configured for that repository. It is the small piece
between "git push" and "the new version is live" for servers that are not
Kubernetes: a VPS, an EC2 instance, a HestiaCP box.
-
Safe by default
HMAC signature checked on every request, one secret per repository, listens on localhost behind your proxy, runs as an unprivileged user. The payload is never turned into a command.
-
No root needed
Installs into your home with a systemd user service, or as a system unit run by a service account that a named operator controls with a tiny sudoers rule.
-
A log per deploy
Every run gets its own log file,
latest.logpoints at the newest,nimdeploy historylists them, old ones are pruned automatically. -
Queue, not chaos
One deploy at a time per app; pushes that arrive meanwhile are queued and only the latest one runs. Exact commit, 30 min timeout, process group killed on timeout.
-
Waits for CI
Optionally deploy only when your GitHub Actions workflows pass for the pushed commit, and mark each commit with ✅ / ❌.
-
Tells you when it breaks
Failure and recovery messages to Slack, Discord, Telegram or any URL, with the last lines of the log.
Ready-made deploy scripts¶
nimdeploy runs any command. The release ships tested scripts for common stacks:
| Script | For |
|---|---|
deploy-nuxt.sh |
Nuxt SSR under pm2: atomic releases, health check, automatic rollback |
deploy-laravel-fpm.sh |
Laravel served by the system's PHP-FPM, shared permissions, optional queue/scheduler |
deploy-laravel-frankenphp.sh |
Laravel on a local port with FrankenPHP under pm2 |
deploy-laravel.sh |
Laravel on the host or in Docker Compose (Sail) |
deploy-pm2.sh |
Any Node app managed by pm2 |
At a glance¶
$ nimdeploy status
DEPLOY STATUS STARTED DURATION COMMIT BY LOG
agency-backend success 2026-10-06 10:12:03 48s a41f09c ana 20261006-101203-7f3a21.log
agency-frontend running (+1 queued) 2026-10-06 10:15:40 - c93a11f marc 20261006-101540-c93a11.log
nimdeploy is open source (MIT) and maintained by Nimbox360.