quicklify 1.1.0 → 1.2.1

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.
Files changed (208) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +48 -24
  3. package/README.tr.md +46 -22
  4. package/SECURITY.md +63 -34
  5. package/dist/commands/add.d.ts +1 -0
  6. package/dist/commands/add.d.ts.map +1 -1
  7. package/dist/commands/add.js +48 -74
  8. package/dist/commands/add.js.map +1 -1
  9. package/dist/commands/backup.d.ts +2 -11
  10. package/dist/commands/backup.d.ts.map +1 -1
  11. package/dist/commands/backup.js +111 -53
  12. package/dist/commands/backup.js.map +1 -1
  13. package/dist/commands/destroy.d.ts.map +1 -1
  14. package/dist/commands/destroy.js +58 -37
  15. package/dist/commands/destroy.js.map +1 -1
  16. package/dist/commands/doctor.d.ts.map +1 -1
  17. package/dist/commands/doctor.js +16 -30
  18. package/dist/commands/doctor.js.map +1 -1
  19. package/dist/commands/domain.d.ts +2 -9
  20. package/dist/commands/domain.d.ts.map +1 -1
  21. package/dist/commands/domain.js +47 -56
  22. package/dist/commands/domain.js.map +1 -1
  23. package/dist/commands/firewall.d.ts +3 -10
  24. package/dist/commands/firewall.d.ts.map +1 -1
  25. package/dist/commands/firewall.js +28 -51
  26. package/dist/commands/firewall.js.map +1 -1
  27. package/dist/commands/health.d.ts +2 -2
  28. package/dist/commands/health.d.ts.map +1 -1
  29. package/dist/commands/health.js +77 -19
  30. package/dist/commands/health.js.map +1 -1
  31. package/dist/commands/init.d.ts.map +1 -1
  32. package/dist/commands/init.js +28 -306
  33. package/dist/commands/init.js.map +1 -1
  34. package/dist/commands/interactive.d.ts +2 -0
  35. package/dist/commands/interactive.d.ts.map +1 -0
  36. package/dist/commands/interactive.js +357 -0
  37. package/dist/commands/interactive.js.map +1 -0
  38. package/dist/commands/list.d.ts.map +1 -1
  39. package/dist/commands/list.js +4 -2
  40. package/dist/commands/list.js.map +1 -1
  41. package/dist/commands/logs.d.ts.map +1 -1
  42. package/dist/commands/logs.js +9 -1
  43. package/dist/commands/logs.js.map +1 -1
  44. package/dist/commands/maintain.d.ts.map +1 -1
  45. package/dist/commands/maintain.js +28 -47
  46. package/dist/commands/maintain.js.map +1 -1
  47. package/dist/commands/monitor.js +1 -1
  48. package/dist/commands/monitor.js.map +1 -1
  49. package/dist/commands/remove.d.ts.map +1 -1
  50. package/dist/commands/remove.js +25 -0
  51. package/dist/commands/remove.js.map +1 -1
  52. package/dist/commands/restart.d.ts.map +1 -1
  53. package/dist/commands/restart.js +39 -39
  54. package/dist/commands/restart.js.map +1 -1
  55. package/dist/commands/restore.d.ts +2 -13
  56. package/dist/commands/restore.d.ts.map +1 -1
  57. package/dist/commands/restore.js +42 -54
  58. package/dist/commands/restore.js.map +1 -1
  59. package/dist/commands/secure.d.ts +2 -9
  60. package/dist/commands/secure.d.ts.map +1 -1
  61. package/dist/commands/secure.js +2 -97
  62. package/dist/commands/secure.js.map +1 -1
  63. package/dist/commands/snapshot.d.ts.map +1 -1
  64. package/dist/commands/snapshot.js +55 -67
  65. package/dist/commands/snapshot.js.map +1 -1
  66. package/dist/commands/status.d.ts.map +1 -1
  67. package/dist/commands/status.js +33 -16
  68. package/dist/commands/status.js.map +1 -1
  69. package/dist/commands/update.d.ts.map +1 -1
  70. package/dist/commands/update.js +23 -16
  71. package/dist/commands/update.js.map +1 -1
  72. package/dist/constants.d.ts +42 -0
  73. package/dist/constants.d.ts.map +1 -0
  74. package/dist/constants.js +54 -0
  75. package/dist/constants.js.map +1 -0
  76. package/dist/core/backup.d.ts +18 -2
  77. package/dist/core/backup.d.ts.map +1 -1
  78. package/dist/core/backup.js +184 -7
  79. package/dist/core/backup.js.map +1 -1
  80. package/dist/core/deploy.d.ts +4 -0
  81. package/dist/core/deploy.d.ts.map +1 -0
  82. package/dist/core/deploy.js +360 -0
  83. package/dist/core/deploy.js.map +1 -0
  84. package/dist/core/domain.d.ts.map +1 -1
  85. package/dist/core/domain.js +1 -5
  86. package/dist/core/domain.js.map +1 -1
  87. package/dist/core/firewall.d.ts +2 -0
  88. package/dist/core/firewall.d.ts.map +1 -1
  89. package/dist/core/firewall.js +12 -0
  90. package/dist/core/firewall.js.map +1 -1
  91. package/dist/core/logs.js +1 -1
  92. package/dist/core/logs.js.map +1 -1
  93. package/dist/core/maintain.d.ts.map +1 -1
  94. package/dist/core/maintain.js +1 -2
  95. package/dist/core/maintain.js.map +1 -1
  96. package/dist/core/manage.d.ts +10 -1
  97. package/dist/core/manage.d.ts.map +1 -1
  98. package/dist/core/manage.js +45 -7
  99. package/dist/core/manage.js.map +1 -1
  100. package/dist/core/provision.d.ts +2 -1
  101. package/dist/core/provision.d.ts.map +1 -1
  102. package/dist/core/provision.js +8 -13
  103. package/dist/core/provision.js.map +1 -1
  104. package/dist/core/secure.d.ts.map +1 -1
  105. package/dist/core/secure.js +8 -2
  106. package/dist/core/secure.js.map +1 -1
  107. package/dist/core/status.d.ts.map +1 -1
  108. package/dist/core/status.js +2 -1
  109. package/dist/core/status.js.map +1 -1
  110. package/dist/core/tokens.d.ts.map +1 -1
  111. package/dist/core/tokens.js +5 -8
  112. package/dist/core/tokens.js.map +1 -1
  113. package/dist/index.js +17 -4
  114. package/dist/index.js.map +1 -1
  115. package/dist/mcp/server.d.ts.map +1 -1
  116. package/dist/mcp/server.js +13 -7
  117. package/dist/mcp/server.js.map +1 -1
  118. package/dist/mcp/tools/serverBackup.d.ts +2 -7
  119. package/dist/mcp/tools/serverBackup.d.ts.map +1 -1
  120. package/dist/mcp/tools/serverBackup.js +120 -234
  121. package/dist/mcp/tools/serverBackup.js.map +1 -1
  122. package/dist/mcp/tools/serverInfo.d.ts +19 -2
  123. package/dist/mcp/tools/serverInfo.d.ts.map +1 -1
  124. package/dist/mcp/tools/serverInfo.js +122 -57
  125. package/dist/mcp/tools/serverInfo.js.map +1 -1
  126. package/dist/mcp/tools/serverLogs.d.ts +2 -7
  127. package/dist/mcp/tools/serverLogs.d.ts.map +1 -1
  128. package/dist/mcp/tools/serverLogs.js +36 -57
  129. package/dist/mcp/tools/serverLogs.js.map +1 -1
  130. package/dist/mcp/tools/serverMaintain.d.ts +3 -8
  131. package/dist/mcp/tools/serverMaintain.d.ts.map +1 -1
  132. package/dist/mcp/tools/serverMaintain.js +48 -109
  133. package/dist/mcp/tools/serverMaintain.js.map +1 -1
  134. package/dist/mcp/tools/serverManage.d.ts +5 -0
  135. package/dist/mcp/tools/serverManage.d.ts.map +1 -1
  136. package/dist/mcp/tools/serverManage.js +94 -110
  137. package/dist/mcp/tools/serverManage.js.map +1 -1
  138. package/dist/mcp/tools/serverProvision.d.ts +7 -1
  139. package/dist/mcp/tools/serverProvision.d.ts.map +1 -1
  140. package/dist/mcp/tools/serverProvision.js +69 -77
  141. package/dist/mcp/tools/serverProvision.js.map +1 -1
  142. package/dist/mcp/tools/serverSecure.d.ts +2 -7
  143. package/dist/mcp/tools/serverSecure.d.ts.map +1 -1
  144. package/dist/mcp/tools/serverSecure.js +109 -170
  145. package/dist/mcp/tools/serverSecure.js.map +1 -1
  146. package/dist/mcp/utils.d.ts +42 -0
  147. package/dist/mcp/utils.d.ts.map +1 -0
  148. package/dist/mcp/utils.js +61 -0
  149. package/dist/mcp/utils.js.map +1 -0
  150. package/dist/providers/base.d.ts +9 -2
  151. package/dist/providers/base.d.ts.map +1 -1
  152. package/dist/providers/base.js +56 -1
  153. package/dist/providers/base.js.map +1 -1
  154. package/dist/providers/digitalocean.d.ts +3 -3
  155. package/dist/providers/digitalocean.d.ts.map +1 -1
  156. package/dist/providers/digitalocean.js +4 -12
  157. package/dist/providers/digitalocean.js.map +1 -1
  158. package/dist/providers/hetzner.d.ts +3 -3
  159. package/dist/providers/hetzner.d.ts.map +1 -1
  160. package/dist/providers/hetzner.js +8 -13
  161. package/dist/providers/hetzner.js.map +1 -1
  162. package/dist/providers/linode.d.ts +3 -3
  163. package/dist/providers/linode.d.ts.map +1 -1
  164. package/dist/providers/linode.js +3 -11
  165. package/dist/providers/linode.js.map +1 -1
  166. package/dist/providers/vultr.d.ts +3 -3
  167. package/dist/providers/vultr.d.ts.map +1 -1
  168. package/dist/providers/vultr.js +3 -11
  169. package/dist/providers/vultr.js.map +1 -1
  170. package/dist/types/index.d.ts +11 -0
  171. package/dist/types/index.d.ts.map +1 -1
  172. package/dist/utils/cloudInit.d.ts +1 -0
  173. package/dist/utils/cloudInit.d.ts.map +1 -1
  174. package/dist/utils/cloudInit.js +62 -0
  175. package/dist/utils/cloudInit.js.map +1 -1
  176. package/dist/utils/config.js +1 -1
  177. package/dist/utils/config.js.map +1 -1
  178. package/dist/utils/defaults.d.ts.map +1 -1
  179. package/dist/utils/defaults.js +3 -2
  180. package/dist/utils/defaults.js.map +1 -1
  181. package/dist/utils/errorMapper.d.ts.map +1 -1
  182. package/dist/utils/errorMapper.js +5 -1
  183. package/dist/utils/errorMapper.js.map +1 -1
  184. package/dist/utils/modeGuard.d.ts +5 -0
  185. package/dist/utils/modeGuard.d.ts.map +1 -0
  186. package/dist/utils/modeGuard.js +13 -0
  187. package/dist/utils/modeGuard.js.map +1 -0
  188. package/dist/utils/openBrowser.d.ts.map +1 -1
  189. package/dist/utils/openBrowser.js +3 -1
  190. package/dist/utils/openBrowser.js.map +1 -1
  191. package/dist/utils/prompts.d.ts +2 -2
  192. package/dist/utils/prompts.d.ts.map +1 -1
  193. package/dist/utils/prompts.js +8 -9
  194. package/dist/utils/prompts.js.map +1 -1
  195. package/dist/utils/serverSelect.d.ts.map +1 -1
  196. package/dist/utils/serverSelect.js +2 -7
  197. package/dist/utils/serverSelect.js.map +1 -1
  198. package/dist/utils/ssh.d.ts +9 -0
  199. package/dist/utils/ssh.d.ts.map +1 -1
  200. package/dist/utils/ssh.js +175 -15
  201. package/dist/utils/ssh.js.map +1 -1
  202. package/dist/utils/sshKey.d.ts.map +1 -1
  203. package/dist/utils/sshKey.js +3 -0
  204. package/dist/utils/sshKey.js.map +1 -1
  205. package/dist/utils/yamlConfig.d.ts.map +1 -1
  206. package/dist/utils/yamlConfig.js +4 -3
  207. package/dist/utils/yamlConfig.js.map +1 -1
  208. package/package.json +5 -5
@@ -1,33 +1,11 @@
1
- import { spawnSync } from "child_process";
2
1
  import { createProvider, createProviderWithToken } from "../utils/providerFactory.js";
3
- import { saveServer } from "../utils/config.js";
4
- import { waitForCoolify } from "../utils/healthCheck.js";
5
2
  import { BACK_SIGNAL, getProviderConfig, getDeploymentConfig, getLocationConfig, getServerTypeConfig, getServerNameConfig, confirmDeployment, } from "../utils/prompts.js";
6
- import { getCoolifyCloudInit } from "../utils/cloudInit.js";
7
3
  import { logger, createSpinner } from "../utils/logger.js";
8
- import { getErrorMessage, mapProviderError } from "../utils/errorMapper.js";
9
- import { openBrowser } from "../utils/openBrowser.js";
10
- import { assertValidIp } from "../utils/ssh.js";
11
- import { findLocalSshKey, generateSshKey, getSshKeyName } from "../utils/sshKey.js";
12
- import { firewallSetup } from "./firewall.js";
13
- import { secureSetup } from "./secure.js";
14
4
  import { loadYamlConfig } from "../utils/yamlConfig.js";
15
5
  import { mergeConfig } from "../utils/configMerge.js";
16
6
  import { getTemplate, getTemplateDefaults, VALID_TEMPLATE_NAMES } from "../utils/templates.js";
17
- // Provider-specific IP wait configuration (IP assignment latency varies significantly)
18
- const IP_WAIT = {
19
- hetzner: { attempts: 10, interval: 3000 }, // 30s (instant IP)
20
- digitalocean: { attempts: 20, interval: 3000 }, // 60s
21
- vultr: { attempts: 40, interval: 5000 }, // 200s (slowest IP assignment)
22
- linode: { attempts: 30, interval: 5000 }, // 150s
23
- };
24
- // Provider-specific minimum wait before first Coolify health check
25
- const COOLIFY_MIN_WAIT = {
26
- hetzner: 60000,
27
- digitalocean: 120000,
28
- vultr: 180000,
29
- linode: 120000,
30
- };
7
+ import { SUPPORTED_PROVIDERS, PROVIDER_ENV_KEYS, invalidProviderError } from "../constants.js";
8
+ import { deployServer } from "../core/deploy.js";
31
9
  export async function initCommand(options = {}) {
32
10
  // Load YAML config if --config flag provided
33
11
  if (options.config) {
@@ -73,16 +51,17 @@ export async function initCommand(options = {}) {
73
51
  logger.info(`Using template: ${tmpl.name} - ${tmpl.description}`);
74
52
  }
75
53
  const isNonInteractive = options.provider !== undefined;
76
- logger.title("Quicklify - Deploy Coolify in minutes");
54
+ logger.title("Quicklify - Self-hosting, fully managed");
77
55
  let providerChoice;
78
56
  let apiToken;
57
+ let tokenSource;
79
58
  let region;
80
59
  let serverSize;
81
60
  let serverName;
82
61
  // Step 1: Select cloud provider
83
62
  if (options.provider) {
84
- if (!["hetzner", "digitalocean", "vultr", "linode"].includes(options.provider)) {
85
- logger.error(`Invalid provider: ${options.provider}. Use "hetzner", "digitalocean", "vultr", or "linode".`);
63
+ if (!SUPPORTED_PROVIDERS.includes(options.provider)) {
64
+ logger.error(invalidProviderError(options.provider));
86
65
  process.exit(1);
87
66
  return;
88
67
  }
@@ -107,24 +86,21 @@ export async function initCommand(options = {}) {
107
86
  // Step 2: Get API token (env var > interactive prompt)
108
87
  if (options.token) {
109
88
  apiToken = options.token;
89
+ tokenSource = "--token flag";
110
90
  logger.warning("Token passed via --token flag is visible in shell history. Use environment variables instead: export HETZNER_TOKEN=...");
111
91
  process.title = "quicklify";
112
92
  }
113
- else if (providerChoice === "hetzner" && process.env.HETZNER_TOKEN) {
114
- apiToken = process.env.HETZNER_TOKEN;
115
- }
116
- else if (providerChoice === "digitalocean" && process.env.DIGITALOCEAN_TOKEN) {
117
- apiToken = process.env.DIGITALOCEAN_TOKEN;
118
- }
119
- else if (providerChoice === "vultr" && process.env.VULTR_TOKEN) {
120
- apiToken = process.env.VULTR_TOKEN;
121
- }
122
- else if (providerChoice === "linode" && process.env.LINODE_TOKEN) {
123
- apiToken = process.env.LINODE_TOKEN;
124
- }
125
93
  else {
126
- const config = await getDeploymentConfig(provider);
127
- apiToken = config.apiToken;
94
+ const envKey = PROVIDER_ENV_KEYS[providerChoice];
95
+ if (envKey && process.env[envKey]) {
96
+ apiToken = process.env[envKey];
97
+ tokenSource = `${envKey} env var`;
98
+ }
99
+ else {
100
+ const config = await getDeploymentConfig(provider);
101
+ apiToken = config.apiToken;
102
+ tokenSource = "interactive prompt";
103
+ }
128
104
  }
129
105
  // Step 3: Validate API token
130
106
  const providerWithToken = createProviderWithToken(providerChoice, apiToken);
@@ -140,7 +116,7 @@ export async function initCommand(options = {}) {
140
116
  }
141
117
  return;
142
118
  }
143
- tokenSpinner.succeed("API token validated");
119
+ tokenSpinner.succeed(`API token validated (from ${tokenSource})`);
144
120
  // Step 4: Region
145
121
  if (options.region) {
146
122
  region = options.region;
@@ -162,7 +138,7 @@ export async function initCommand(options = {}) {
162
138
  break;
163
139
  }
164
140
  case 5: {
165
- const s = await getServerTypeConfig(providerWithToken, region);
141
+ const s = await getServerTypeConfig(providerWithToken, region, [], options.mode);
166
142
  if (s === BACK_SIGNAL) {
167
143
  step = 4;
168
144
  break;
@@ -172,6 +148,11 @@ export async function initCommand(options = {}) {
172
148
  break;
173
149
  }
174
150
  case 6: {
151
+ if (options.name) {
152
+ serverName = options.name;
153
+ step = 7;
154
+ break;
155
+ }
175
156
  const n = await getServerNameConfig();
176
157
  if (n === BACK_SIGNAL) {
177
158
  step = 5;
@@ -188,6 +169,7 @@ export async function initCommand(options = {}) {
188
169
  region,
189
170
  serverSize,
190
171
  serverName,
172
+ mode: options.mode,
191
173
  };
192
174
  const confirmed = await confirmDeployment(config, providerWithToken);
193
175
  if (confirmed === BACK_SIGNAL) {
@@ -204,7 +186,7 @@ export async function initCommand(options = {}) {
204
186
  }
205
187
  }
206
188
  // Deploy
207
- return deployServer(providerChoice, providerWithToken, region, serverSize, serverName, options.fullSetup, options.noOpen);
189
+ return deployServer(providerChoice, providerWithToken, region, serverSize, serverName, options.fullSetup, options.noOpen, options.mode);
208
190
  }
209
191
  // Non-interactive or partially interactive: size, name
210
192
  if (options.size) {
@@ -213,7 +195,7 @@ export async function initCommand(options = {}) {
213
195
  else {
214
196
  let s = BACK_SIGNAL;
215
197
  while (s === BACK_SIGNAL) {
216
- s = await getServerTypeConfig(providerWithToken, region);
198
+ s = await getServerTypeConfig(providerWithToken, region, [], options.mode);
217
199
  }
218
200
  serverSize = s;
219
201
  }
@@ -227,266 +209,6 @@ export async function initCommand(options = {}) {
227
209
  }
228
210
  serverName = n;
229
211
  }
230
- return deployServer(providerChoice, providerWithToken, region, serverSize, serverName, options.fullSetup, options.noOpen);
231
- }
232
- async function uploadSshKeyToProvider(provider) {
233
- let publicKey = findLocalSshKey();
234
- if (!publicKey) {
235
- logger.info("No SSH key found. Generating one...");
236
- publicKey = generateSshKey();
237
- if (publicKey) {
238
- logger.success("SSH key generated (~/.ssh/id_ed25519)");
239
- }
240
- else {
241
- logger.warning("Could not generate SSH key — falling back to password auth");
242
- logger.info("Server will require password change on first SSH login");
243
- logger.warning("Run 'quicklify secure setup' after deployment to harden SSH access");
244
- return [];
245
- }
246
- }
247
- const spinner = createSpinner("Uploading SSH key to provider...");
248
- spinner.start();
249
- try {
250
- const keyId = await provider.uploadSshKey(getSshKeyName(), publicKey);
251
- spinner.succeed("SSH key uploaded — password-free access enabled");
252
- return [keyId];
253
- }
254
- catch (error) {
255
- spinner.fail("SSH key upload failed — falling back to password auth");
256
- logger.warning(getErrorMessage(error));
257
- logger.warning("Run 'quicklify secure setup' after deployment to harden SSH access");
258
- return [];
259
- }
260
- }
261
- async function deployServer(providerChoice, providerWithToken, region, serverSize, serverName, fullSetup, noOpen) {
262
- try {
263
- // Upload SSH key before creating server
264
- const sshKeyIds = await uploadSshKeyToProvider(providerWithToken);
265
- const cloudInit = getCoolifyCloudInit(serverName);
266
- let server;
267
- let retries = 0;
268
- const maxRetries = 2;
269
- const failedTypes = [];
270
- const failedLocations = [];
271
- while (!server && retries <= maxRetries) {
272
- const serverSpinner = createSpinner("Creating VPS server...");
273
- serverSpinner.start();
274
- try {
275
- server = await providerWithToken.createServer({
276
- name: serverName,
277
- region,
278
- size: serverSize,
279
- cloudInit,
280
- sshKeyIds,
281
- });
282
- serverSpinner.succeed(`Server created (ID: ${server.id})`);
283
- }
284
- catch (createError) {
285
- serverSpinner.fail("Server creation failed");
286
- const errorMsg = getErrorMessage(createError);
287
- if (errorMsg.includes("already") && errorMsg.includes("used")) {
288
- logger.warning(`Server name "${serverName}" is already in use`);
289
- logger.info("Please choose a different name:");
290
- let newName = BACK_SIGNAL;
291
- while (newName === BACK_SIGNAL) {
292
- newName = await getServerNameConfig();
293
- }
294
- serverName = newName;
295
- retries++;
296
- }
297
- else if (errorMsg.includes("location disabled")) {
298
- failedLocations.push(region);
299
- logger.warning(`Location "${region}" is currently disabled for new servers`);
300
- logger.info("Please select a different region and server type:");
301
- let pickedSize = false;
302
- while (!pickedSize) {
303
- let newRegion = BACK_SIGNAL;
304
- while (newRegion === BACK_SIGNAL) {
305
- newRegion = await getLocationConfig(providerWithToken, failedLocations);
306
- }
307
- region = newRegion;
308
- const newSize = await getServerTypeConfig(providerWithToken, region);
309
- if (newSize === BACK_SIGNAL)
310
- continue;
311
- serverSize = newSize;
312
- pickedSize = true;
313
- }
314
- retries++;
315
- }
316
- else if (errorMsg.includes("unavailable") ||
317
- errorMsg.includes("not available") ||
318
- errorMsg.includes("sold out") ||
319
- errorMsg.includes("unsupported")) {
320
- if (retries < maxRetries) {
321
- failedTypes.push(serverSize);
322
- logger.warning(`Server type "${serverSize}" is not available in this location`);
323
- logger.info("Please select a different server type:");
324
- let newSize = BACK_SIGNAL;
325
- while (newSize === BACK_SIGNAL) {
326
- newSize = await getServerTypeConfig(providerWithToken, region, failedTypes);
327
- }
328
- serverSize = newSize;
329
- retries++;
330
- }
331
- else {
332
- throw createError;
333
- }
334
- }
335
- else {
336
- throw createError;
337
- }
338
- }
339
- }
340
- /* istanbul ignore next */
341
- if (!server) {
342
- logger.error("Could not create server after multiple attempts");
343
- process.exit(1);
344
- }
345
- // Wait for server to be running
346
- const statusSpinner = createSpinner("Waiting for server to boot...");
347
- statusSpinner.start();
348
- let status = await providerWithToken.getServerStatus(server.id);
349
- let attempts = 0;
350
- const maxAttempts = 30;
351
- while (status !== "running" && attempts < maxAttempts) {
352
- await new Promise((resolve) => setTimeout(resolve, 1000));
353
- status = await providerWithToken.getServerStatus(server.id);
354
- attempts++;
355
- }
356
- if (status !== "running") {
357
- statusSpinner.fail("Server failed to start");
358
- logger.error("Please check your cloud provider dashboard");
359
- return;
360
- }
361
- statusSpinner.succeed("Server is running");
362
- // Refresh server details to get final IP (DO/Vultr/Linode assign IP after boot)
363
- if (server.ip === "pending" || server.ip === "0.0.0.0" || server.ip === "") {
364
- const ipConfig = IP_WAIT[providerChoice] || { attempts: 10, interval: 3000 };
365
- const ipSpinner = createSpinner("Waiting for IP address assignment...");
366
- ipSpinner.start();
367
- let refreshAttempts = 0;
368
- while (refreshAttempts < ipConfig.attempts) {
369
- const details = await providerWithToken.getServerDetails(server.id);
370
- if (details.ip && details.ip !== "0.0.0.0" && details.ip !== "pending" && details.ip !== "") {
371
- try {
372
- assertValidIp(details.ip);
373
- server.ip = details.ip;
374
- break;
375
- }
376
- catch {
377
- // Invalid IP format from API — skip and retry
378
- }
379
- }
380
- refreshAttempts++;
381
- await new Promise((resolve) => setTimeout(resolve, ipConfig.interval));
382
- }
383
- if (server.ip === "pending" || server.ip === "0.0.0.0" || server.ip === "") {
384
- ipSpinner.fail("Could not obtain server IP address");
385
- logger.warning("The server was created but IP assignment timed out.");
386
- logger.info(`Check IP later with: quicklify status ${server.id}`);
387
- }
388
- else {
389
- ipSpinner.succeed(`IP address assigned: ${server.ip}`);
390
- }
391
- }
392
- // Health check polling instead of blind wait (skip if no valid IP)
393
- const hasValidIp = server.ip !== "0.0.0.0" && server.ip !== "pending" && server.ip !== "";
394
- const minWait = COOLIFY_MIN_WAIT[providerChoice] || 60000;
395
- const ready = hasValidIp ? await waitForCoolify(server.ip, minWait) : false;
396
- // Save server record to config
397
- saveServer({
398
- id: server.id,
399
- name: serverName,
400
- provider: providerChoice,
401
- ip: server.ip,
402
- region,
403
- size: serverSize,
404
- createdAt: new Date().toISOString(),
405
- });
406
- // Full setup: auto-configure firewall + SSH hardening
407
- if (fullSetup && ready) {
408
- // Clear stale known_hosts entry (cloud providers reuse IPs)
409
- try {
410
- spawnSync("ssh-keygen", ["-R", server.ip], { stdio: "ignore" });
411
- }
412
- catch {
413
- // ssh-keygen not available or no entry — harmless
414
- }
415
- logger.title("Running full setup (firewall + security)...");
416
- try {
417
- await firewallSetup(server.ip, serverName, false);
418
- }
419
- catch (error) {
420
- logger.warning(`Firewall setup failed: ${getErrorMessage(error)}`);
421
- }
422
- try {
423
- await secureSetup(server.ip, serverName, undefined, false, true);
424
- }
425
- catch (error) {
426
- logger.warning(`Security setup failed: ${getErrorMessage(error)}`);
427
- }
428
- }
429
- else if (fullSetup && !ready) {
430
- logger.warning("Skipping full setup: Coolify is not ready yet.");
431
- logger.info("Run manually later: quicklify firewall setup && quicklify secure setup");
432
- }
433
- // Success message
434
- logger.title("Deployment Successful!");
435
- console.log();
436
- logger.success(`Server IP: ${server.ip}`);
437
- logger.success(`Access Coolify: http://${server.ip}:8000`);
438
- console.log();
439
- if (ready) {
440
- logger.info("Coolify is ready! Open the URL above to get started.");
441
- if (!noOpen && hasValidIp) {
442
- openBrowser(`http://${server.ip}:8000`);
443
- }
444
- }
445
- else {
446
- logger.warning("Coolify did not respond yet. Please check in a few minutes.");
447
- logger.info(`You can check status later with: quicklify status ${server.ip}`);
448
- }
449
- // Onboarding: next steps
450
- console.log();
451
- logger.title("What's Next?");
452
- if (!fullSetup) {
453
- logger.info(" 1. Secure your server:");
454
- logger.step(` quicklify firewall setup ${serverName}`);
455
- logger.step(` quicklify secure setup ${serverName}`);
456
- console.log();
457
- logger.info(" 2. Add a domain with SSL:");
458
- logger.step(` quicklify domain add ${serverName} --domain example.com`);
459
- console.log();
460
- logger.info(" 3. Create your first backup:");
461
- logger.step(` quicklify backup ${serverName}`);
462
- console.log();
463
- logger.info(" Tip: Do steps 1-3 automatically next time:");
464
- logger.step(" quicklify init --full-setup");
465
- }
466
- else {
467
- logger.info(" 1. Add a domain with SSL:");
468
- logger.step(` quicklify domain add ${serverName} --domain example.com`);
469
- console.log();
470
- logger.info(" 2. Create your first backup:");
471
- logger.step(` quicklify backup ${serverName}`);
472
- }
473
- console.log();
474
- logger.info(" Check your environment anytime:");
475
- logger.step(" quicklify doctor");
476
- console.log();
477
- logger.info(" Server saved to local config. Use 'quicklify list' to see all servers.");
478
- console.log();
479
- logger.info(" Docs: https://github.com/omrfc/quicklify");
480
- console.log(" \u2b50 Love Quicklify? Give us a star: https://github.com/omrfc/quicklify \u2b50");
481
- console.log();
482
- }
483
- catch (error) {
484
- logger.error(`Deployment failed: ${getErrorMessage(error)}`);
485
- const hint = mapProviderError(error, providerChoice);
486
- if (hint) {
487
- logger.info(hint);
488
- }
489
- process.exit(1);
490
- }
212
+ return deployServer(providerChoice, providerWithToken, region, serverSize, serverName, options.fullSetup, options.noOpen, options.mode);
491
213
  }
492
214
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAuB,EAAE;IACzD,6CAA6C;IAC7C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAChD,sCAAsC;QACtC,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC7E,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACrE,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7D,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7D,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;YACnE,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACzC,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5B,oCAAoC;QACpC,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC7E,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACrE,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7D,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7D,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;YACnE,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACzC,CAAC;IAED,2BAA2B;IAC3B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,CAAC,KAAK,CACV,sBAAsB,OAAO,CAAC,QAAQ,uBAAuB,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/F,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC;IAExD,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAExD,IAAI,cAAsB,CAAC;IAC3B,IAAI,QAAgB,CAAC;IACrB,IAAI,WAAmB,CAAC;IACxB,IAAI,MAAc,CAAC;IACnB,IAAI,UAAkB,CAAC;IACvB,IAAI,UAAkB,CAAC;IAEvB,gCAAgC;IAChC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,IAAI,CAAE,mBAAyC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3E,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QACD,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACzC,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC;IACnC,CAAC;IACD,MAAM,QAAQ,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAE7C,8FAA8F;IAC9F,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC3E,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,MAAM;gBAAE,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;YAC1D,IAAI,CAAC,OAAO,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QACtD,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;QACzB,WAAW,GAAG,cAAc,CAAC;QAC7B,MAAM,CAAC,OAAO,CACZ,wHAAwH,CACzH,CAAC;QACF,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,iBAAiB,CAAC,cAAgD,CAAC,CAAC;QACnF,IAAI,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;YAChC,WAAW,GAAG,GAAG,MAAM,UAAU,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACnD,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC3B,WAAW,GAAG,oBAAoB,CAAC;QACrC,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,aAAa,CAAC,yBAAyB,CAAC,CAAC;IAC9D,YAAY,CAAC,KAAK,EAAE,CAAC;IAErB,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC1D,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QACD,OAAO;IACT,CAAC;IACD,YAAY,CAAC,OAAO,CAAC,6BAA6B,WAAW,GAAG,CAAC,CAAC;IAElE,iBAAiB;IACjB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,oDAAoD;QACpD,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,MAAM,GAAG,EAAE,CAAC;QACZ,UAAU,GAAG,EAAE,CAAC;QAChB,UAAU,GAAG,EAAE,CAAC;QAEhB,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YAC9B,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,MAAM,CAAC,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;oBACrD,IAAI,CAAC,KAAK,WAAW;wBAAE,MAAM;oBAC7B,MAAM,GAAG,CAAC,CAAC;oBACX,IAAI,GAAG,CAAC,CAAC;oBACT,MAAM;gBACR,CAAC;gBACD,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,MAAM,CAAC,GAAG,MAAM,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;oBACjF,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;wBACtB,IAAI,GAAG,CAAC,CAAC;wBACT,MAAM;oBACR,CAAC;oBACD,UAAU,GAAG,CAAC,CAAC;oBACf,IAAI,GAAG,CAAC,CAAC;oBACT,MAAM;gBACR,CAAC;gBACD,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;wBACjB,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;wBAC1B,IAAI,GAAG,CAAC,CAAC;wBACT,MAAM;oBACR,CAAC;oBACD,MAAM,CAAC,GAAG,MAAM,mBAAmB,EAAE,CAAC;oBACtC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;wBACtB,IAAI,GAAG,CAAC,CAAC;wBACT,MAAM;oBACR,CAAC;oBACD,UAAU,GAAG,CAAC,CAAC;oBACf,IAAI,GAAG,CAAC,CAAC;oBACT,MAAM;gBACR,CAAC;gBACD,KAAK,CAAC,CAAC,CAAC,CAAC;oBACP,MAAM,MAAM,GAAG;wBACb,QAAQ,EAAE,cAAc;wBACxB,QAAQ;wBACR,MAAM;wBACN,UAAU;wBACV,UAAU;wBACV,IAAI,EAAE,OAAO,CAAC,IAAI;qBACnB,CAAC;oBACF,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;oBACrE,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;wBAC9B,IAAI,GAAG,CAAC,CAAC;wBACT,MAAM;oBACR,CAAC;oBACD,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;wBACvC,OAAO;oBACT,CAAC;oBACD,IAAI,GAAG,CAAC,CAAC;oBACT,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,SAAS;QACT,OAAO,YAAY,CACjB,cAAc,EACd,iBAAiB,EACjB,MAAM,EACN,UAAU,EACV,UAAU,EACV,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,IAAI,CACb,CAAC;IACJ,CAAC;IAED,uDAAuD;IACvD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,GAAG,WAAW,CAAC;QACpB,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;YACzB,CAAC,GAAG,MAAM,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7E,CAAC;QACD,UAAU,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,GAAG,WAAW,CAAC;QACpB,OAAO,CAAC,KAAK,WAAW,EAAE,CAAC;YACzB,CAAC,GAAG,MAAM,mBAAmB,EAAE,CAAC;QAClC,CAAC;QACD,UAAU,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,YAAY,CACjB,cAAc,EACd,iBAAiB,EACjB,MAAM,EACN,UAAU,EACV,UAAU,EACV,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,IAAI,CACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function interactiveMenu(): Promise<string[] | null>;
2
+ //# sourceMappingURL=interactive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/commands/interactive.ts"],"names":[],"mappings":"AA6WA,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CA6BhE"}