This tool automatically deploys (updates) your website or application whenever you push new code to GitHub. Think of it as a robot that watches your GitHub repository and updates your live website whenever you make changes.
You need basic command-line knowledge and understanding of how your website is deployed. If you can copy files and run commands on your server, you can use this tool.
- Static websites (HTML, CSS, JavaScript)
- Node.js applications
- Python web apps (Django, Flask)
- Go applications
- PHP websites
- Docker containers
- Any project that can be deployed with command-line tools
Yes! This is open-source software. You only pay for your own server hosting.
- A GitHub repository with your code
- A server (VPS, cloud instance, etc.) where your website runs
- Your code already deployed on that server at least once manually
- Basic command-line access to your server
Yes! You can configure multiple repositories and deploy them to different locations on your server.
Any Linux server where you can install Go and run command-line tools will work. This includes:
- VPS providers (DigitalOcean, Linode, Vultr)
- Cloud providers (AWS EC2, Google Cloud, Azure)
- Dedicated servers
- Even a Raspberry Pi!
You can use any random string, but for security, generate a strong one:
openssl rand -hex 20Or use an online password generator to create a 40-character random string.
This depends on your project type:
Static HTML site:
git pull && rsync -av ./ /var/www/html/Node.js with PM2:
git pull && npm install && npm run build && pm2 restart myappPython Flask:
git pull && pip install -r requirements.txt && systemctl restart myappYes! Change the BRANCH_FILTER setting:
BRANCH_FILTER=productionAdd multiple entries to REPO_MAP separated by commas:
REPO_MAP=user/website:~/sites/website,user/api:~/apps/apiThen set commands for each:
COMMANDS_website=git pull && npm run build
COMMANDS_api=git pull && go build && systemctl restart api- Check your server's firewall - Make sure port 3000 is open
- Verify the webhook URL - Should be
http://your-server-ip:3000/admin/webhook(or your custom path from config) - Check the secret - Must match exactly between GitHub and your
.envfile - Look at GitHub's webhook delivery page - Shows if GitHub is successfully sending webhooks
- Test commands manually - Run your deployment commands by hand to see if they work
- Check permissions - Make sure the tool can access your website files
- Look at the logs - Check
/var/log/deployer.logfor error details - Verify paths - Make sure the paths in
REPO_MAPare correct
- Check file ownership - The user running the tool needs access to your website files
- Check directory permissions - Make sure directories are readable/writable
- Consider running as the web server user - Often
www-dataornginx
- Check if it's still running -
ps aux | grep cicd-thing - Look for error messages - Check the logs for crashes
- Set up automatic restart - Use systemd or supervisor to restart if it crashes
- Check server resources - Make sure you're not running out of memory/disk
Yes, when configured properly:
- GitHub webhooks are verified with HMAC signatures
- API endpoints require authentication
- All communication should use HTTPS in production
- You restrict access using your reverse proxy, firewall, or WAF
Yes! In production, put a reverse proxy (like nginx) in front of this tool to handle HTTPS.
Yes. Use your reverse proxy, firewall, or WAF to allow only GitHub's webhook IP ranges or your trusted networks to reach the service.
Change it immediately in both your .env file and GitHub webhook settings. Restart the tool after changing.
The tool can handle multiple concurrent deployments (configurable with CONCURRENCY_LIMIT). For most small to medium projects, the default settings work fine.
Deployments only run when you push code, so there's minimal impact. The tool itself uses very little resources when idle.
Yes, but you might need to increase the TIMEOUT_SECONDS setting for projects that take a long time to build.
Built-in rollback support is planned for a future version. For now, implement rollback using your own scripts or deployment tooling (e.g. keeping previous builds and switching symlinks).
Not directly, but you can:
- Run this tool on multiple servers
- Use your deployment commands to sync to other servers
- Use container orchestration tools
Yes! Set DRY_RUN=true to simulate deployments without actually running them.
README.md- Complete technical documentationAPI.md- API endpoint documentationDEPLOYMENT_EXAMPLES.md- Real-world configuration examples
- Check the logs - Look at both the tool's output and
/var/log/deployer.log - Test manually - Try running your deployment commands by hand
- Use dry run mode - Set
DRY_RUN=trueto see what would happen - Check the health endpoint - Visit
http://your-server:3000/health
Yes! This is open-source software. Check the repository for contribution guidelines and issue reporting.
- Use HTTPS with a reverse proxy
- Set up the tool as a system service (systemd)
- Configure log rotation
- Set up monitoring and alerts
- Use strong secrets and IP restrictions
- Test your rollback procedures
Yes. Have regular backups for your database and important files so you can recover quickly if a deployment or manual rollback goes wrong.
Check for updates periodically, especially for security fixes. The tool will log its version in the health endpoint.