quicklify 0.9.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +144 -19
- package/README.tr.md +800 -0
- package/dist/commands/add.d.ts +9 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +151 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/backup.d.ts +1 -0
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +104 -1
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +20 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/maintain.d.ts +8 -0
- package/dist/commands/maintain.d.ts.map +1 -0
- package/dist/commands/maintain.js +253 -0
- package/dist/commands/maintain.js.map +1 -0
- package/dist/commands/remove.d.ts +2 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/remove.js +25 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/restart.d.ts.map +1 -1
- package/dist/commands/restart.js +4 -0
- package/dist/commands/restart.js.map +1 -1
- package/dist/commands/restore.js +1 -1
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/status.d.ts +6 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +120 -7
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/update.d.ts +5 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +101 -14
- package/dist/commands/update.js.map +1 -1
- package/dist/index.js +30 -4
- package/dist/index.js.map +1 -1
- package/dist/providers/hetzner.js +2 -2
- package/dist/providers/hetzner.js.map +1 -1
- package/dist/providers/linode.d.ts +21 -0
- package/dist/providers/linode.d.ts.map +1 -0
- package/dist/providers/linode.js +203 -0
- package/dist/providers/linode.js.map +1 -0
- package/dist/providers/vultr.d.ts +21 -0
- package/dist/providers/vultr.d.ts.map +1 -0
- package/dist/providers/vultr.js +183 -0
- package/dist/providers/vultr.js.map +1 -0
- package/dist/utils/config.d.ts +1 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +7 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/prompts.d.ts.map +1 -1
- package/dist/utils/prompts.js +2 -0
- package/dist/utils/prompts.js.map +1 -1
- package/dist/utils/providerFactory.d.ts.map +1 -1
- package/dist/utils/providerFactory.js +10 -0
- package/dist/utils/providerFactory.js.map +1 -1
- package/dist/utils/serverSelect.d.ts +1 -0
- package/dist/utils/serverSelect.d.ts.map +1 -1
- package/dist/utils/serverSelect.js +37 -6
- package/dist/utils/serverSelect.js.map +1 -1
- package/dist/utils/templates.d.ts.map +1 -1
- package/dist/utils/templates.js +6 -0
- package/dist/utils/templates.js.map +1 -1
- package/dist/utils/yamlConfig.d.ts.map +1 -1
- package/dist/utils/yamlConfig.js +3 -3
- package/dist/utils/yamlConfig.js.map +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|

|
|
9
9
|
[](https://socket.dev/npm/package/quicklify)
|
|
10
10
|
|
|
11
|
-
> Deploy Coolify to
|
|
11
|
+
> Deploy Coolify to a cloud VPS with one command
|
|
12
12
|
|
|
13
13
|
## 🚀 What is Quicklify?
|
|
14
14
|
|
|
15
|
-
Quicklify is a CLI tool that automates Coolify
|
|
15
|
+
Quicklify is a CLI tool that automates [Coolify](https://coolify.io/) deployment on cloud VPS providers. Coolify is an open-source, self-hosted alternative to Vercel/Netlify/Heroku — and Quicklify gets it running on your VPS with one command.
|
|
16
16
|
|
|
17
17
|
**Before Quicklify:**
|
|
18
18
|
|
|
@@ -29,7 +29,7 @@ Total: ~30 minutes + manual work
|
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
31
|
npx quicklify init
|
|
32
|
-
# Hetzner: ~4
|
|
32
|
+
# Hetzner: ~4 min | DigitalOcean: ~6 min | Vultr: ~5 min | Linode: ~6 min
|
|
33
33
|
# Zero manual work ✨
|
|
34
34
|
```
|
|
35
35
|
|
|
@@ -38,10 +38,10 @@ npx quicklify init
|
|
|
38
38
|
- 🎯 **One Command Deploy** - VPS + Coolify with a single command
|
|
39
39
|
- 💰 **Cost Savings** - $50-200/mo (Vercel/Netlify) → €3.79/mo
|
|
40
40
|
- 🔒 **Secure by Default** - Automated security setup
|
|
41
|
-
- 🌍 **Multi-Cloud** - Hetzner Cloud
|
|
41
|
+
- 🌍 **Multi-Cloud** - Hetzner Cloud, DigitalOcean, Vultr, Linode
|
|
42
42
|
- 💻 **Beautiful CLI** - Interactive prompts with validation
|
|
43
43
|
- 🎨 **ARM64 Ready** - Support for cost-effective ARM servers
|
|
44
|
-
- ⚡ **Fast Setup** - Hetzner ~4 min, DigitalOcean ~6 min
|
|
44
|
+
- ⚡ **Fast Setup** - Hetzner ~4 min, DigitalOcean ~6 min, Vultr ~5 min, Linode ~6 min
|
|
45
45
|
- ✨ **Dynamic Server Types** - Only shows compatible types for selected location
|
|
46
46
|
- 🔥 **Auto Firewall** - Ports 8000, 22, 80, 443 configured automatically
|
|
47
47
|
- 🚀 **Zero SSH Required** - Opens directly in browser after deployment
|
|
@@ -64,6 +64,69 @@ npx quicklify init
|
|
|
64
64
|
- 📄 **YAML Config** - `quicklify init --config quicklify.yml` for one-command deploy
|
|
65
65
|
- 📋 **Templates** - `--template starter|production|dev` with per-provider defaults
|
|
66
66
|
- 🤖 **Non-Interactive Mode** - CI/CD friendly with `--provider --token --region --size --name` flags
|
|
67
|
+
- ➕ **Add Existing Servers** - `quicklify add` to register existing Coolify servers
|
|
68
|
+
- 🔄 **Bulk Operations** - `--all` flag for status, update, backup across all servers
|
|
69
|
+
- 🔁 **Auto-Restart** - `status --autostart` restarts Coolify if server is running but Coolify is down
|
|
70
|
+
- 🔧 **Full Maintenance** - `quicklify maintain` runs status, update, health check, reboot in sequence
|
|
71
|
+
|
|
72
|
+
## 🎯 What Can You Do with Quicklify?
|
|
73
|
+
|
|
74
|
+
### Deploy a Coolify Server in Minutes
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npx quicklify init # Interactive setup
|
|
78
|
+
npx quicklify init --provider hetzner --full-setup # With auto firewall + SSH hardening
|
|
79
|
+
npx quicklify init --template production # Production-ready defaults
|
|
80
|
+
npx quicklify init --config quicklify.yml # From YAML config file
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Manage Your Servers
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
quicklify list # List all registered servers
|
|
87
|
+
quicklify status my-server # Check server + Coolify status
|
|
88
|
+
quicklify status --all # Check all servers at once
|
|
89
|
+
quicklify ssh my-server # SSH into a server
|
|
90
|
+
quicklify ssh my-server -c "uptime" # Run a remote command
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Keep Everything Updated & Healthy
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
quicklify update my-server # Update Coolify to latest version
|
|
97
|
+
quicklify restart my-server # Reboot the server
|
|
98
|
+
quicklify maintain my-server # Full maintenance: status → update → health → reboot
|
|
99
|
+
quicklify maintain --all # Maintain all servers sequentially
|
|
100
|
+
quicklify health # Quick health check for all servers
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Backup & Restore
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
quicklify backup my-server # Backup database + config files
|
|
107
|
+
quicklify backup --all # Backup all servers
|
|
108
|
+
quicklify restore my-server # Restore from a backup
|
|
109
|
+
quicklify export servers.json # Export server list
|
|
110
|
+
quicklify import servers.json # Import on another machine
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Security & Networking
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
quicklify firewall setup my-server # Configure UFW with Coolify ports
|
|
117
|
+
quicklify domain add my-server --domain coolify.example.com # Bind domain + SSL
|
|
118
|
+
quicklify secure setup my-server # SSH hardening + fail2ban
|
|
119
|
+
quicklify secure audit my-server # Security audit with score (0-4)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Monitoring & Diagnostics
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
quicklify monitor my-server # Live CPU/RAM/Disk usage
|
|
126
|
+
quicklify logs my-server -f # Follow Coolify logs in real-time
|
|
127
|
+
quicklify doctor # Check local environment
|
|
128
|
+
quicklify status my-server --autostart # Auto-restart Coolify if down
|
|
129
|
+
```
|
|
67
130
|
|
|
68
131
|
## 📦 Installation
|
|
69
132
|
|
|
@@ -99,6 +162,18 @@ quicklify init
|
|
|
99
162
|
2. Generate New Token with **Read & Write** scope
|
|
100
163
|
3. Copy the token
|
|
101
164
|
|
|
165
|
+
**Vultr:**
|
|
166
|
+
|
|
167
|
+
1. Visit [Vultr API](https://my.vultr.com/settings/#settingsapi)
|
|
168
|
+
2. Enable API and copy the API Key
|
|
169
|
+
3. Whitelist your IP address
|
|
170
|
+
|
|
171
|
+
**Linode (Akamai):**
|
|
172
|
+
|
|
173
|
+
1. Visit [Linode API Tokens](https://cloud.linode.com/profile/tokens)
|
|
174
|
+
2. Create a Personal Access Token with **Read/Write** scope
|
|
175
|
+
3. Copy the token
|
|
176
|
+
|
|
102
177
|
### Step 2: Deploy Coolify
|
|
103
178
|
|
|
104
179
|
```bash
|
|
@@ -114,7 +189,7 @@ You'll be prompted for:
|
|
|
114
189
|
|
|
115
190
|
### Step 3: Access Coolify
|
|
116
191
|
|
|
117
|
-
After deployment (Hetzner ~4 min, DigitalOcean ~6 min):
|
|
192
|
+
After deployment (Hetzner ~4 min, DigitalOcean ~6 min, Vultr ~5 min, Linode ~6 min):
|
|
118
193
|
|
|
119
194
|
```
|
|
120
195
|
✅ Deployment Successful!
|
|
@@ -144,8 +219,8 @@ Visit the URL, create your admin account, and start deploying!
|
|
|
144
219
|
|----------|--------|----------------|--------------|
|
|
145
220
|
| **Hetzner Cloud** | ✅ Available | €3.79/mo | ARM64 + x86 |
|
|
146
221
|
| **DigitalOcean** | ✅ Available | $12/mo | x86 |
|
|
147
|
-
| **Vultr** |
|
|
148
|
-
| **Linode** |
|
|
222
|
+
| **Vultr** | ✅ Available | $6/mo | x86 |
|
|
223
|
+
| **Linode (Akamai)** | ✅ Available | $12/mo | x86 |
|
|
149
224
|
|
|
150
225
|
## 💡 Use Cases
|
|
151
226
|
|
|
@@ -171,12 +246,23 @@ Visit the URL, create your admin account, and start deploying!
|
|
|
171
246
|
| Netlify (Pro) | $19+ | 5 min | Easy |
|
|
172
247
|
| **Quicklify + Hetzner** | **€3.79** | **~4 min** | **Easy** |
|
|
173
248
|
| **Quicklify + DigitalOcean** | **$12** | **~6 min** | **Easy** |
|
|
249
|
+
| **Quicklify + Vultr** | **$6** | **~5 min** | **Easy** |
|
|
250
|
+
| **Quicklify + Linode** | **$12** | **~6 min** | **Easy** |
|
|
174
251
|
| Manual VPS + Coolify | €3.79 | 30+ min | Hard |
|
|
175
252
|
|
|
176
253
|
**Savings: ~$180-240/year per project!** 💰
|
|
177
254
|
|
|
178
255
|
## 📋 Recent Updates
|
|
179
256
|
|
|
257
|
+
### v1.0.0 (2026-02-23)
|
|
258
|
+
- **New providers:** Vultr and Linode (Akamai) — 4 cloud providers now supported
|
|
259
|
+
- **New command:** `quicklify add` — register existing Coolify servers to Quicklify management
|
|
260
|
+
- **New command:** `quicklify maintain` — full maintenance cycle (status, update, health, reboot)
|
|
261
|
+
- **Bulk operations:** `--all` flag on `status`, `update`, `backup` — operate on all servers at once
|
|
262
|
+
- **Auto-restart:** `status --autostart` — restarts Coolify if server is running but Coolify is down
|
|
263
|
+
- **`collectProviderTokens()`** — asks for each provider's token only once across all servers
|
|
264
|
+
- 937 tests across 44 suites with 98%+ statement coverage, zero new dependencies
|
|
265
|
+
|
|
180
266
|
### v0.9.0 (2026-02-21)
|
|
181
267
|
- **YAML Config:** `quicklify init --config quicklify.yml` - deploy from a config file
|
|
182
268
|
- **Templates:** `--template starter|production|dev` - predefined server configurations per provider
|
|
@@ -312,9 +398,18 @@ Visit the URL, create your admin account, and start deploying!
|
|
|
312
398
|
- [x] Template system (`--template starter|production|dev`)
|
|
313
399
|
- [x] Config merge with priority: CLI > YAML > template > interactive
|
|
314
400
|
|
|
401
|
+
### v1.0.0 (Completed)
|
|
402
|
+
|
|
403
|
+
- [x] Vultr provider support
|
|
404
|
+
- [x] Linode (Akamai) provider support
|
|
405
|
+
- [x] `quicklify add` — register existing Coolify servers
|
|
406
|
+
- [x] `quicklify maintain` — full maintenance cycle
|
|
407
|
+
- [x] `--all` flag for status, update, backup
|
|
408
|
+
- [x] `status --autostart` — auto-restart Coolify when down
|
|
409
|
+
|
|
315
410
|
### Future
|
|
316
|
-
- [ ]
|
|
317
|
-
- [ ]
|
|
411
|
+
- [ ] `quicklify snapshot` — automated VPS snapshots before maintenance
|
|
412
|
+
- [ ] `init --mode production` — 2 server deploy (Coolify + worker)
|
|
318
413
|
- [ ] Interactive TUI dashboard
|
|
319
414
|
|
|
320
415
|
## 🛠️ Tech Stack
|
|
@@ -326,7 +421,7 @@ Visit the URL, create your admin account, and start deploying!
|
|
|
326
421
|
- **Styling:** Chalk (colors) + Ora (spinners)
|
|
327
422
|
- **HTTP Client:** Axios
|
|
328
423
|
- **YAML Parser:** js-yaml
|
|
329
|
-
- **Cloud APIs:** Hetzner Cloud API v1, DigitalOcean API v2
|
|
424
|
+
- **Cloud APIs:** Hetzner Cloud API v1, DigitalOcean API v2, Vultr API v2, Linode API v4
|
|
330
425
|
- **Linting:** ESLint 10 + typescript-eslint
|
|
331
426
|
- **Formatting:** Prettier
|
|
332
427
|
|
|
@@ -357,11 +452,17 @@ quicklify list
|
|
|
357
452
|
# Check server and Coolify status
|
|
358
453
|
quicklify status 123.45.67.89
|
|
359
454
|
quicklify status my-server
|
|
455
|
+
quicklify status --all # Check all servers at once
|
|
456
|
+
quicklify status my-server --autostart # Restart Coolify if it's down
|
|
360
457
|
|
|
361
458
|
# Destroy a server (with double confirmation)
|
|
362
459
|
quicklify destroy 123.45.67.89
|
|
363
460
|
quicklify destroy my-server
|
|
364
461
|
|
|
462
|
+
# Remove a server from local config (without destroying cloud server)
|
|
463
|
+
quicklify remove my-server
|
|
464
|
+
quicklify remove 123.45.67.89
|
|
465
|
+
|
|
365
466
|
# Manage default configuration
|
|
366
467
|
quicklify config set provider hetzner
|
|
367
468
|
quicklify config set region nbg1
|
|
@@ -375,6 +476,7 @@ quicklify ssh 123.45.67.89 -c "docker ps"
|
|
|
375
476
|
|
|
376
477
|
# Update Coolify on a server
|
|
377
478
|
quicklify update my-server
|
|
479
|
+
quicklify update --all # Update all servers sequentially
|
|
378
480
|
|
|
379
481
|
# Restart a server
|
|
380
482
|
quicklify restart my-server
|
|
@@ -427,6 +529,7 @@ quicklify secure setup my-server --dry-run # Preview without executing
|
|
|
427
529
|
|
|
428
530
|
# Backup Coolify database and config
|
|
429
531
|
quicklify backup my-server # Full backup (pg_dump + config)
|
|
532
|
+
quicklify backup --all # Backup all servers sequentially
|
|
430
533
|
quicklify backup my-server --dry-run # Preview backup steps
|
|
431
534
|
|
|
432
535
|
# Restore from a backup
|
|
@@ -439,6 +542,17 @@ quicklify export # Export to ./quicklify-export.json
|
|
|
439
542
|
quicklify export /path/to/file.json # Export to custom path
|
|
440
543
|
quicklify import /path/to/file.json # Import servers (skips duplicates)
|
|
441
544
|
|
|
545
|
+
# Add existing Coolify server to management
|
|
546
|
+
quicklify add # Interactive (provider, token, IP, verify)
|
|
547
|
+
quicklify add --provider hetzner --ip 1.2.3.4 --name my-server # Non-interactive
|
|
548
|
+
quicklify add --provider vultr --ip 1.2.3.4 --skip-verify # Skip Coolify check
|
|
549
|
+
|
|
550
|
+
# Run full maintenance cycle
|
|
551
|
+
quicklify maintain my-server # Status → Update → Health → Reboot
|
|
552
|
+
quicklify maintain my-server --skip-reboot # Skip the reboot step
|
|
553
|
+
quicklify maintain --all # Maintain all servers sequentially
|
|
554
|
+
quicklify maintain my-server --dry-run # Preview maintenance steps
|
|
555
|
+
|
|
442
556
|
# Show version
|
|
443
557
|
quicklify --version
|
|
444
558
|
|
|
@@ -455,6 +569,10 @@ Set your API token as an environment variable, then pass all options as flags:
|
|
|
455
569
|
export HETZNER_TOKEN="your-api-token"
|
|
456
570
|
# or
|
|
457
571
|
export DIGITALOCEAN_TOKEN="your-api-token"
|
|
572
|
+
# or
|
|
573
|
+
export VULTR_TOKEN="your-api-token"
|
|
574
|
+
# or
|
|
575
|
+
export LINODE_TOKEN="your-api-token"
|
|
458
576
|
|
|
459
577
|
# Deploy non-interactively
|
|
460
578
|
quicklify init \
|
|
@@ -497,11 +615,11 @@ quicklify init --config quicklify.yml
|
|
|
497
615
|
|
|
498
616
|
Templates provide sensible defaults per provider:
|
|
499
617
|
|
|
500
|
-
| Template | Hetzner | DigitalOcean | Full Setup |
|
|
501
|
-
|
|
502
|
-
| `starter` | nbg1 / cax11 (€3.79) | fra1 / s-2vcpu-2gb ($12) | No |
|
|
503
|
-
| `production` | nbg1 / cx33 (€5.49) | fra1 / s-2vcpu-4gb ($24) | Yes |
|
|
504
|
-
| `dev` | nbg1 / cax11 (€3.79) | fra1 / s-2vcpu-2gb ($12) | No |
|
|
618
|
+
| Template | Hetzner | DigitalOcean | Vultr | Linode | Full Setup |
|
|
619
|
+
|----------|---------|--------------|-------|--------|------------|
|
|
620
|
+
| `starter` | nbg1 / cax11 (€3.79) | fra1 / s-2vcpu-2gb ($12) | ewr / vc2-2c-4gb ($24) | us-east / g6-standard-2 ($12) | No |
|
|
621
|
+
| `production` | nbg1 / cx33 (€5.49) | fra1 / s-2vcpu-4gb ($24) | ewr / vc2-4c-8gb ($48) | us-east / g6-standard-4 ($36) | Yes |
|
|
622
|
+
| `dev` | nbg1 / cax11 (€3.79) | fra1 / s-2vcpu-2gb ($12) | ewr / vc2-2c-4gb ($24) | us-east / g6-standard-2 ($12) | No |
|
|
505
623
|
|
|
506
624
|
```bash
|
|
507
625
|
# Quick production deploy
|
|
@@ -515,7 +633,7 @@ quicklify init --template starter --provider digitalocean --name test-server
|
|
|
515
633
|
|
|
516
634
|
### Interactive Prompts
|
|
517
635
|
|
|
518
|
-
1. **Provider Selection** - Choose Hetzner Cloud or
|
|
636
|
+
1. **Provider Selection** - Choose Hetzner Cloud, DigitalOcean, Vultr, or Linode
|
|
519
637
|
2. **API Token** - Validated before proceeding
|
|
520
638
|
3. **Region Selection** - Choose your preferred datacenter
|
|
521
639
|
4. **Server Size** - Filtered by Coolify requirements (2GB RAM, 2 vCPU)
|
|
@@ -583,10 +701,14 @@ tests/
|
|
|
583
701
|
│ ├── ssh-utils.test.ts # SSH helper tests
|
|
584
702
|
│ ├── status.test.ts # Status command unit tests
|
|
585
703
|
│ ├── update.test.ts # Update command tests
|
|
704
|
+
│ ├── add.test.ts # Add command tests
|
|
705
|
+
│ ├── maintain.test.ts # Maintain command tests
|
|
586
706
|
│ └── validators.test.ts
|
|
587
707
|
├── integration/ # Integration tests (provider API calls)
|
|
588
708
|
│ ├── hetzner.test.ts # Including destroyServer tests
|
|
589
|
-
│
|
|
709
|
+
│ ├── digitalocean.test.ts # Including destroyServer tests
|
|
710
|
+
│ ├── vultr.test.ts # Vultr provider tests
|
|
711
|
+
│ └── linode.test.ts # Linode provider tests
|
|
590
712
|
└── e2e/ # End-to-end tests (full command flows)
|
|
591
713
|
├── init.test.ts
|
|
592
714
|
├── init-noninteractive.test.ts # Non-interactive mode E2E
|
|
@@ -604,7 +726,7 @@ Tests run automatically on every push/PR via GitHub Actions across:
|
|
|
604
726
|
|
|
605
727
|
### Coverage
|
|
606
728
|
|
|
607
|
-
Current coverage: **98%+ statements/lines**, **91%+ branches**, **98%+ functions**.
|
|
729
|
+
Current coverage: **98%+ statements/lines**, **91%+ branches**, **98%+ functions**. 937 tests across 44 test suites.
|
|
608
730
|
|
|
609
731
|
## 🔧 Troubleshooting
|
|
610
732
|
|
|
@@ -648,6 +770,9 @@ See [LICENSE](LICENSE) file for details.
|
|
|
648
770
|
|
|
649
771
|
- [Coolify](https://coolify.io/) - The amazing open-source PaaS
|
|
650
772
|
- [Hetzner](https://www.hetzner.com/) - Affordable, reliable cloud infrastructure
|
|
773
|
+
- [DigitalOcean](https://www.digitalocean.com/) - Developer-friendly cloud platform
|
|
774
|
+
- [Vultr](https://www.vultr.com/) - High-performance cloud compute
|
|
775
|
+
- [Linode](https://www.linode.com/) - Simple, affordable cloud computing
|
|
651
776
|
- All contributors and users!
|
|
652
777
|
|
|
653
778
|
## 💬 Support & Community
|