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 18+
- 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 9 + 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: 18, 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. β‘