quicklify

Deploy Coolify to any cloud VPS with one command
🚀 What is Quicklify?
Quicklify is a CLI tool that automates Coolify installation on cloud VPS providers. One command to deploy your self-hosted PaaS platform.
Before Quicklify:
Create VPS manually (5 min)
SSH into server (2 min)
Install Docker (10 min)
Configure firewall (5 min)
Install Coolify (10 min)
Total: ~30 minutes + manual work
With Quicklify:
npx quicklify init
✨ Features
- 🎯 One Command Deploy - VPS + Coolify with a single command
- 💰 Cost Savings - $50-200/mo (Vercel/Netlify) → €3.49/mo
- 🔒 Secure by Default - Automated security setup
- 🌍 Multi-Cloud - Hetzner Cloud + DigitalOcean
- 💻 Beautiful CLI - Interactive prompts with validation
- 🎨 ARM64 Ready - Support for cost-effective ARM servers
- ⚡ Fast Setup - Hetzner ~4 min, DigitalOcean ~6 min
- ✨ Dynamic Server Types - Only shows compatible types for selected location
- 🔥 Auto Firewall - Ports 8000, 22, 80, 443 configured automatically
- 🚀 Zero SSH Required - Opens directly in browser after deployment
- 📋 Server Management - List, status check, and destroy commands
- 🏥 Health Check Polling - Detects when Coolify is ready (no more blind waiting)
- 🤖 Non-Interactive Mode - CI/CD friendly with
--provider --token --region --size --name flags
📦 Installation
Using npx (Recommended)
npx quicklify init
Global Installation
npm install -g quicklify
quicklify init
🎬 Quick Start
Step 1: Get API Token
Hetzner Cloud:
- Visit Hetzner Console
- Select your project
- Navigate to Security → API Tokens
- Click "Generate API Token"
- Set permissions to Read & Write
- Copy the token (shown only once!)
DigitalOcean:
- Visit DigitalOcean API
- Generate New Token with Read & Write scope
- Copy the token
Step 2: Deploy Coolify
npx quicklify init
You'll be prompted for:
- ✅ API Token - Paste your cloud provider token
- ✅ Region - Select datacenter location
- ✅ Server Size - Choose VPS specs (CAX11 recommended)
- ✅ Server Name - Name your instance
Step 3: Access Coolify
After deployment (Hetzner ~4 min, DigitalOcean ~6 min):
✅ Deployment Successful!
Server IP: 123.45.67.89
Access Coolify: http://123.45.67.89:8000
Visit the URL, create your admin account, and start deploying!
🔒 Security Notes
Important: Port 8000 is publicly accessible after deployment.
Recommended next steps:
- Add a domain and enable SSL in Coolify settings
- Use Cloudflare for DDoS protection
- Set a strong password on first login
- Consider IP whitelisting for sensitive deployments
For production use, we recommend setting up a domain instead of using the IP address directly.
🌐 Supported Providers
| Hetzner Cloud | ✅ Available | €3.49/mo | ARM64 + x86 |
| DigitalOcean | ✅ Available | $12/mo | x86 |
| Vultr | 📋 Planned | $2.50/mo | x86 |
| Linode | 📋 Planned | $5/mo | x86 |
💡 Use Cases
Perfect for:
- 🚀 Side projects and MVPs
- 💼 Client deployments (freelancers/agencies)
- 🎓 Learning DevOps and self-hosting
- 💸 Cutting cloud hosting costs
- 🏢 Small team internal tools
When to use alternatives:
- Large enterprise? → Coolify Cloud or enterprise PaaS
- Extreme scale? → Kubernetes + managed services
📊 Cost Comparison
| Vercel (Hobby) | $20+ | 5 min | Easy |
| Vercel (Pro) | $50+ | 5 min | Easy |
| Netlify (Pro) | $19+ | 5 min | Easy |
| Quicklify + Hetzner | €3.49 | ~4 min | Easy |
| Quicklify + DigitalOcean | $12 | ~6 min | Easy |
| Manual VPS + Coolify | €3.49 | 30+ min | Hard |
Savings: ~$180-240/year per project! 💰
📋 Recent Updates
v0.4.0 (2026-02-20)
- New commands:
quicklify list, quicklify status [query], quicklify destroy [query]
- Non-interactive mode:
quicklify init --provider --token --region --size --name for CI/CD
- Health check polling: Detects when Coolify is ready instead of blind waiting
- Server persistence: Deploys saved to
~/.quicklify/servers.json for list/status/destroy
destroyServer() added to provider interface (Hetzner + DigitalOcean)
- 233 tests with 97%+ statement coverage
v0.3.1 (2026-02-19)
- Hetzner pricing now shows net prices (excl. VAT), matching website display
- Hetzner server types use
/datacenters API for real availability per location
- Replaced deprecated Hetzner server types (cpx→cx23/cx33)
- "Server name already used" error now prompts for a new name
- Location disabled retry now re-prompts for server type
v0.3.0 (2026-02-19)
- DigitalOcean provider support (full API integration)
- Interactive provider selection (Hetzner / DigitalOcean)
- Step-based back navigation in all prompts
- Network wait loop + install logging for DigitalOcean cloud-init reliability
🗺️ Roadmap
v0.1.0 (Completed)
v0.2.0 (Completed)
v0.2.x (Completed)
v0.3.0 (Completed)
v0.4.0 (Completed)
Future
🛠️ Tech Stack
- Runtime: Node.js 20+
- Language: TypeScript
- CLI Framework: Commander.js
- Interactive Prompts: Inquirer.js
- Styling: Chalk (colors) + Ora (spinners)
- HTTP Client: Axios
- Cloud APIs: Hetzner Cloud API v1, DigitalOcean API v2
- Linting: ESLint 10 + typescript-eslint
- Formatting: Prettier
📖 CLI Reference
Commands
quicklify init
quicklify init --provider hetzner --token YOUR_TOKEN --region nbg1 --size cax11 --name my-server
quicklify list
quicklify status 123.45.67.89
quicklify status my-server
quicklify destroy 123.45.67.89
quicklify destroy my-server
quicklify --version
quicklify --help
Non-Interactive Mode
Pass all options as flags to skip interactive prompts (useful for CI/CD pipelines):
quicklify init \
--provider hetzner \
--token $HETZNER_TOKEN \
--region nbg1 \
--size cax11 \
--name production-coolify
Using environment variables (recommended for CI/CD):
export HETZNER_TOKEN="your-api-token"
export DIGITALOCEAN_TOKEN="your-api-token"
quicklify init --provider hetzner --region nbg1 --size cax11 --name my-server
Token resolution order: --token flag > environment variable > interactive prompt.
If some flags are missing, only the missing values will be prompted interactively.
Interactive Prompts
- Provider Selection - Choose Hetzner Cloud or DigitalOcean
- API Token - Validated before proceeding
- Region Selection - Choose your preferred datacenter
- Server Size - Filtered by Coolify requirements (2GB RAM, 2 vCPU)
- Server Name - Validates format (lowercase, alphanumeric, hyphens)
- Confirmation - Review summary before deployment
All steps support ← Back navigation to return to the previous step.
🧪 Testing
Run Tests
npm test
npm run test:watch
npm run test:coverage
npm run lint
npm run format
Test Structure
tests/
├── __mocks__/ # Mock modules (axios, inquirer, ora, chalk)
├── unit/ # Unit tests
│ ├── cloudInit.test.ts
│ ├── config.test.ts # Config CRUD operations
│ ├── config-edge.test.ts # Config edge cases (corruption, empty files)
│ ├── destroy.test.ts # Destroy command unit tests
│ ├── healthCheck.test.ts # Health check polling tests
│ ├── healthCheck-edge.test.ts # Health check edge cases (302, 401, 500)
│ ├── list.test.ts # List command unit tests
│ ├── logger.test.ts
│ ├── prompts.test.ts
│ ├── providerFactory.test.ts # Provider factory tests
│ ├── status.test.ts # Status command unit tests
│ └── validators.test.ts
├── integration/ # Integration tests (provider API calls)
│ ├── hetzner.test.ts # Including destroyServer tests
│ └── digitalocean.test.ts # Including destroyServer tests
└── e2e/ # End-to-end tests (full command flows)
├── init.test.ts
├── init-noninteractive.test.ts # Non-interactive mode E2E
├── status.test.ts # Status command E2E
└── destroy.test.ts # Destroy command E2E
CI/CD
Tests run automatically on every push/PR via GitHub Actions across:
- OS: Ubuntu, macOS, Windows
- Node.js: 20, 22
Coverage
Current coverage: 97%+ statements/lines, 89%+ branches, 96%+ functions. 233 tests across 18 test suites.
🔧 Troubleshooting
"Invalid API token"
- Ensure token has Read & Write permissions
- Check for extra spaces when copying
- Regenerate token if needed
"Server creation failed"
- Verify cloud account has sufficient funds
- Check account limits (new accounts may have restrictions)
- Try different region or server size
"Cannot access Coolify UI"
- Wait 3-5 more minutes (Coolify initialization takes time)
- Check the install log:
ssh root@YOUR_IP "cat /var/log/quicklify-install.log | tail -20"
- Check firewall settings (should auto-configure)
- Verify server is running in cloud console
🤝 Contributing
Contributions are welcome! See CONTRIBUTING.md for development setup, code guidelines, and PR process.
Areas for contribution:
- New cloud provider integrations
- CLI improvements
- Documentation
- Bug fixes
📄 License
MIT © 2026 Ömer FC
See LICENSE file for details.
🙏 Acknowledgments
- Coolify - The amazing open-source PaaS
- Hetzner - Affordable, reliable cloud infrastructure
- All contributors and users!
⭐ Show Your Support
If Quicklify helped you, please:
- ⭐ Star this repository
- 🐦 Share on Twitter
- 📝 Write a blog post
- 💬 Tell your friends!
Made with ❤️ by @omrfc
Saving developers time, one deployment at a time. ⚡