@simplens/onboard 1.0.5 → 1.0.6
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 +27 -1
- package/dist/__tests__/infra-prompts.test.js +3 -1
- package/dist/__tests__/infra-prompts.test.js.map +1 -1
- package/dist/__tests__/infra.test.js +13 -0
- package/dist/__tests__/infra.test.js.map +1 -1
- package/dist/__tests__/validators.test.js +21 -1
- package/dist/__tests__/validators.test.js.map +1 -1
- package/dist/index.js +126 -18
- package/dist/index.js.map +1 -1
- package/dist/infra.d.ts +12 -3
- package/dist/infra.d.ts.map +1 -1
- package/dist/infra.js +94 -22
- package/dist/infra.js.map +1 -1
- package/dist/services.d.ts +12 -0
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +50 -0
- package/dist/services.js.map +1 -1
- package/dist/templates.d.ts +5 -1
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +66 -0
- package/dist/templates.js.map +1 -1
- package/dist/types/domain.d.ts +6 -0
- package/dist/types/domain.d.ts.map +1 -1
- package/dist/validators.d.ts +9 -0
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +38 -0
- package/dist/validators.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/infra-prompts.test.ts +3 -1
- package/src/__tests__/infra.test.ts +15 -0
- package/src/__tests__/validators.test.ts +27 -1
- package/src/index.ts +135 -17
- package/src/infra.ts +119 -23
- package/src/services.ts +72 -0
- package/src/templates.ts +70 -0
- package/src/types/domain.ts +6 -0
- package/src/validators.ts +51 -0
package/dist/infra.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { APP_COMPOSE_TEMPLATE, APP_NGINX_SERVICE_TEMPLATE } from './templates.js';
|
|
1
|
+
import { APP_COMPOSE_TEMPLATE, APP_NGINX_SERVICE_TEMPLATE, APP_NGINX_SSL_SERVICE_TEMPLATE, APP_CERTBOT_SERVICES_TEMPLATE, INFRA_CERTBOT_SERVICES_TEMPLATE, INFRA_CERTBOT_VOLUMES, } from './templates.js';
|
|
2
2
|
import { writeFile } from './utils.js';
|
|
3
3
|
import { multiselect } from '@clack/prompts';
|
|
4
4
|
import { handleCancel, spinner } from './ui.js';
|
|
@@ -6,7 +6,7 @@ import path from 'path';
|
|
|
6
6
|
const INFRA_SERVICES = [
|
|
7
7
|
{ name: 'MongoDB (Database)', value: 'mongo', checked: true },
|
|
8
8
|
{ name: 'Kafka (Message Queue)', value: 'kafka', checked: true },
|
|
9
|
-
{ name: 'Kafka UI (Dashboard)', value: 'kafka-ui', checked:
|
|
9
|
+
{ name: 'Kafka UI (Dashboard)', value: 'kafka-ui', checked: false },
|
|
10
10
|
{ name: 'Redis (Cache)', value: 'redis', checked: true },
|
|
11
11
|
{ name: 'Nginx (Reverse Proxy)', value: 'nginx', checked: false },
|
|
12
12
|
{ name: 'Loki (Log Aggregation)', value: 'loki', checked: false },
|
|
@@ -27,7 +27,12 @@ export async function promptInfraServices() {
|
|
|
27
27
|
*/
|
|
28
28
|
export async function promptInfraServicesWithBasePath(options) {
|
|
29
29
|
const choices = options.allowNginx
|
|
30
|
-
? INFRA_SERVICES
|
|
30
|
+
? INFRA_SERVICES.map(service => {
|
|
31
|
+
if (service.value === 'nginx') {
|
|
32
|
+
return { ...service, checked: options.defaultNginx === true };
|
|
33
|
+
}
|
|
34
|
+
return service;
|
|
35
|
+
})
|
|
31
36
|
: INFRA_SERVICES.filter(service => service.value !== 'nginx');
|
|
32
37
|
const message = options.allowNginx
|
|
33
38
|
? 'Select infrastructure services to run (Space to select, Enter to confirm):'
|
|
@@ -158,6 +163,17 @@ const SERVICE_CHUNKS = {
|
|
|
158
163
|
- "./nginx.conf:/etc/nginx/conf.d/default.conf:ro"
|
|
159
164
|
restart: unless-stopped`,
|
|
160
165
|
};
|
|
166
|
+
const NGINX_INFRA_SSL_SERVICE_CHUNK = ` nginx:
|
|
167
|
+
image: nginx:alpine
|
|
168
|
+
container_name: nginx
|
|
169
|
+
ports:
|
|
170
|
+
- "80:80"
|
|
171
|
+
- "443:443"
|
|
172
|
+
volumes:
|
|
173
|
+
- "./nginx.conf:/etc/nginx/conf.d/default.conf:ro"
|
|
174
|
+
- certbot-etc:/etc/letsencrypt
|
|
175
|
+
- certbot-www:/var/www/certbot
|
|
176
|
+
restart: unless-stopped`;
|
|
161
177
|
/**
|
|
162
178
|
* Service-to-volumes mapping
|
|
163
179
|
*/
|
|
@@ -173,7 +189,7 @@ const SERVICE_VOLUMES = {
|
|
|
173
189
|
/**
|
|
174
190
|
* Build docker-compose content from selected services
|
|
175
191
|
*/
|
|
176
|
-
function buildInfraCompose(selectedServices) {
|
|
192
|
+
function buildInfraCompose(selectedServices, options = {}) {
|
|
177
193
|
// Header
|
|
178
194
|
const header = `# ============================================
|
|
179
195
|
# SimpleNS Infrastructure Services
|
|
@@ -189,15 +205,28 @@ services:
|
|
|
189
205
|
const serviceBlocks = [];
|
|
190
206
|
for (const service of selectedServices) {
|
|
191
207
|
if (SERVICE_CHUNKS[service]) {
|
|
192
|
-
|
|
208
|
+
if (service === 'nginx' && options.includeSsl === true) {
|
|
209
|
+
serviceBlocks.push(NGINX_INFRA_SSL_SERVICE_CHUNK);
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
serviceBlocks.push(SERVICE_CHUNKS[service]);
|
|
213
|
+
}
|
|
193
214
|
}
|
|
194
215
|
}
|
|
216
|
+
if (options.includeSsl === true) {
|
|
217
|
+
serviceBlocks.push(INFRA_CERTBOT_SERVICES_TEMPLATE);
|
|
218
|
+
}
|
|
195
219
|
// Collect volumes for selected services
|
|
196
220
|
const volumeSet = new Set();
|
|
197
221
|
for (const service of selectedServices) {
|
|
198
222
|
const volumes = SERVICE_VOLUMES[service] || [];
|
|
199
223
|
volumes.forEach(v => volumeSet.add(v));
|
|
200
224
|
}
|
|
225
|
+
if (options.includeSsl === true) {
|
|
226
|
+
for (const volumeName of INFRA_CERTBOT_VOLUMES) {
|
|
227
|
+
volumeSet.add(volumeName);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
201
230
|
// Build volumes section
|
|
202
231
|
const volumeLines = ['', 'volumes:'];
|
|
203
232
|
for (const volume of Array.from(volumeSet).sort()) {
|
|
@@ -216,11 +245,11 @@ services:
|
|
|
216
245
|
/**
|
|
217
246
|
* Generate and write docker-compose.infra.yaml
|
|
218
247
|
*/
|
|
219
|
-
export async function generateInfraCompose(targetDir, selectedServices) {
|
|
248
|
+
export async function generateInfraCompose(targetDir, selectedServices, options = {}) {
|
|
220
249
|
const s = spinner();
|
|
221
250
|
s.start('Generating docker-compose.infra.yaml...');
|
|
222
251
|
// Build compose content from service chunks
|
|
223
|
-
const infraContent = buildInfraCompose(selectedServices);
|
|
252
|
+
const infraContent = buildInfraCompose(selectedServices, options);
|
|
224
253
|
// Write infrastructure compose file
|
|
225
254
|
const infraPath = path.join(targetDir, 'docker-compose.infra.yaml');
|
|
226
255
|
await writeFile(infraPath, infraContent);
|
|
@@ -230,15 +259,25 @@ export async function generateInfraCompose(targetDir, selectedServices) {
|
|
|
230
259
|
* Build app docker-compose content.
|
|
231
260
|
* Optionally inject nginx reverse-proxy service before the volumes section.
|
|
232
261
|
*/
|
|
233
|
-
export function buildAppComposeContent(includeNginx) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
262
|
+
export function buildAppComposeContent(includeNginx, options = {}) {
|
|
263
|
+
let content = APP_COMPOSE_TEMPLATE;
|
|
264
|
+
const includeSsl = options.includeSsl === true;
|
|
265
|
+
const shouldIncludeNginx = includeNginx || includeSsl;
|
|
237
266
|
const marker = '\nvolumes:';
|
|
238
|
-
if (!
|
|
239
|
-
return
|
|
267
|
+
if (!content.includes(marker)) {
|
|
268
|
+
return content;
|
|
269
|
+
}
|
|
270
|
+
if (shouldIncludeNginx) {
|
|
271
|
+
const nginxBlock = includeSsl
|
|
272
|
+
? APP_NGINX_SSL_SERVICE_TEMPLATE
|
|
273
|
+
: APP_NGINX_SERVICE_TEMPLATE;
|
|
274
|
+
content = content.replace(marker, `\n${nginxBlock}\n${marker}`);
|
|
240
275
|
}
|
|
241
|
-
|
|
276
|
+
if (includeSsl) {
|
|
277
|
+
content = content.replace(marker, `\n${APP_CERTBOT_SERVICES_TEMPLATE}\n${marker}`);
|
|
278
|
+
content = content.replace('\nvolumes:\n plugin-data:', '\nvolumes:\n certbot-etc:\n certbot-www:\n plugin-data:');
|
|
279
|
+
}
|
|
280
|
+
return content;
|
|
242
281
|
}
|
|
243
282
|
/**
|
|
244
283
|
* Write app docker-compose.yaml
|
|
@@ -247,24 +286,24 @@ export async function writeAppCompose(targetDir, options = {}) {
|
|
|
247
286
|
const s = spinner();
|
|
248
287
|
s.start('Generating docker-compose.yaml...');
|
|
249
288
|
const appPath = path.join(targetDir, 'docker-compose.yaml');
|
|
250
|
-
const appContent = buildAppComposeContent(options.includeNginx === true
|
|
289
|
+
const appContent = buildAppComposeContent(options.includeNginx === true, {
|
|
290
|
+
includeSsl: options.includeSsl === true,
|
|
291
|
+
});
|
|
251
292
|
await writeFile(appPath, appContent);
|
|
252
293
|
s.stop('Generated docker-compose.yaml');
|
|
253
294
|
}
|
|
254
295
|
/**
|
|
255
296
|
* Generate nginx.conf based on basePath configuration
|
|
256
297
|
*/
|
|
257
|
-
export async function generateNginxConfig(targetDir, basePath) {
|
|
298
|
+
export async function generateNginxConfig(targetDir, basePath, options = {}) {
|
|
258
299
|
const s = spinner();
|
|
259
300
|
s.start('Generating nginx.conf...');
|
|
260
301
|
// Normalize basePath (remove leading/trailing slashes for template)
|
|
261
302
|
const normalizedPath = basePath.trim().replace(/^\/|\/$/g, '');
|
|
262
303
|
const hasBasePath = normalizedPath.length > 0;
|
|
263
|
-
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
server_name localhost;
|
|
267
|
-
|
|
304
|
+
const enableSsl = options.enableSsl === true;
|
|
305
|
+
const domain = options.domain?.trim() || 'localhost';
|
|
306
|
+
const proxyRoutes = `
|
|
268
307
|
location /api {
|
|
269
308
|
proxy_pass http://api:3000;
|
|
270
309
|
proxy_http_version 1.1;
|
|
@@ -347,10 +386,43 @@ ${hasBasePath ? `
|
|
|
347
386
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
348
387
|
}
|
|
349
388
|
`}
|
|
389
|
+
`;
|
|
390
|
+
const nginxTemplate = enableSsl
|
|
391
|
+
? `server {
|
|
392
|
+
listen 80;
|
|
393
|
+
server_name ${domain};
|
|
394
|
+
|
|
395
|
+
location /.well-known/acme-challenge/ {
|
|
396
|
+
root /var/www/certbot;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
location / {
|
|
400
|
+
return 301 https://$host$request_uri;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
server {
|
|
405
|
+
listen 443 ssl;
|
|
406
|
+
server_name ${domain};
|
|
407
|
+
|
|
408
|
+
ssl_certificate /etc/letsencrypt/live/${domain}/fullchain.pem;
|
|
409
|
+
ssl_certificate_key /etc/letsencrypt/live/${domain}/privkey.pem;
|
|
410
|
+
ssl_protocols TLSv1.2 TLSv1.3;
|
|
411
|
+
ssl_prefer_server_ciphers on;
|
|
412
|
+
location = / {
|
|
413
|
+
return 302 /dashboard;
|
|
414
|
+
}
|
|
415
|
+
${proxyRoutes}
|
|
416
|
+
}
|
|
417
|
+
`
|
|
418
|
+
: `server {
|
|
419
|
+
listen 80;
|
|
420
|
+
server_name localhost;${proxyRoutes}
|
|
350
421
|
}
|
|
351
422
|
`;
|
|
352
423
|
const nginxPath = path.join(targetDir, 'nginx.conf');
|
|
353
424
|
await writeFile(nginxPath, nginxTemplate);
|
|
354
|
-
|
|
425
|
+
const sslLabel = enableSsl ? `, SSL domain: ${domain}` : '';
|
|
426
|
+
s.stop(`Generated nginx.conf${hasBasePath ? ` with base path: /${normalizedPath}` : ' (root path)'}${sslLabel}`);
|
|
355
427
|
}
|
|
356
428
|
//# sourceMappingURL=infra.js.map
|
package/dist/infra.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infra.js","sourceRoot":"","sources":["../src/infra.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"infra.js","sourceRoot":"","sources":["../src/infra.ts"],"names":[],"mappings":"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"}
|
package/dist/services.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
type ComposeFile = 'docker-compose.yaml' | 'docker-compose.infra.yaml';
|
|
1
2
|
/**
|
|
2
3
|
* Prompts user whether to start the services immediately after setup.
|
|
3
4
|
*
|
|
@@ -23,8 +24,19 @@ export declare function waitForInfraHealth(targetDir: string): Promise<void>;
|
|
|
23
24
|
* Start application services
|
|
24
25
|
*/
|
|
25
26
|
export declare function startAppServices(targetDir: string): Promise<void>;
|
|
27
|
+
export declare function getSslManualCommands(options: {
|
|
28
|
+
composeFile: ComposeFile;
|
|
29
|
+
domain: string;
|
|
30
|
+
email: string;
|
|
31
|
+
}): string[];
|
|
32
|
+
export declare function setupSslCertificates(targetDir: string, options: {
|
|
33
|
+
composeFile: ComposeFile;
|
|
34
|
+
domain: string;
|
|
35
|
+
email: string;
|
|
36
|
+
}): Promise<void>;
|
|
26
37
|
/**
|
|
27
38
|
* Display service status and URLs
|
|
28
39
|
*/
|
|
29
40
|
export declare function displayServiceStatus(): Promise<void>;
|
|
41
|
+
export {};
|
|
30
42
|
//# sourceMappingURL=services.d.ts.map
|
package/dist/services.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAqBA;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAS5D;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBzE;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCzE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBvE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiD1D"}
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAqBA,KAAK,WAAW,GAAG,qBAAqB,GAAG,2BAA2B,CAAC;AASvE;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAS5D;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBzE;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCzE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBvE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC1C,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,EAAE,CAWX;AAED,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;IACnE,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwChB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiD1D"}
|
package/dist/services.js
CHANGED
|
@@ -18,6 +18,12 @@ async function execDockerCompose(args, cwd) {
|
|
|
18
18
|
await execa('docker-compose', args, { cwd });
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
+
function withComposeFile(args, composeFile) {
|
|
22
|
+
if (!composeFile) {
|
|
23
|
+
return args;
|
|
24
|
+
}
|
|
25
|
+
return ['-f', composeFile, ...args];
|
|
26
|
+
}
|
|
21
27
|
/**
|
|
22
28
|
* Prompts user whether to start the services immediately after setup.
|
|
23
29
|
*
|
|
@@ -103,6 +109,50 @@ export async function startAppServices(targetDir) {
|
|
|
103
109
|
throw error;
|
|
104
110
|
}
|
|
105
111
|
}
|
|
112
|
+
export function getSslManualCommands(options) {
|
|
113
|
+
const composeFlag = options.composeFile === 'docker-compose.infra.yaml'
|
|
114
|
+
? '-f docker-compose.infra.yaml '
|
|
115
|
+
: '';
|
|
116
|
+
return [
|
|
117
|
+
`docker compose ${composeFlag}up -d nginx certbot certbot-renew`,
|
|
118
|
+
`docker compose ${composeFlag}exec -T certbot certbot certonly --webroot -w /var/www/certbot --email ${options.email} --agree-tos --no-eff-email -d ${options.domain} --non-interactive`,
|
|
119
|
+
`docker compose ${composeFlag}exec -T nginx nginx -s reload`,
|
|
120
|
+
`docker compose ${composeFlag}up -d certbot-renew`,
|
|
121
|
+
];
|
|
122
|
+
}
|
|
123
|
+
export async function setupSslCertificates(targetDir, options) {
|
|
124
|
+
logInfo(`Setting up SSL certificate for ${options.domain}...`);
|
|
125
|
+
const s = spinner();
|
|
126
|
+
const composeArgs = (args) => withComposeFile(args, options.composeFile);
|
|
127
|
+
s.start('Ensuring nginx/certbot services are running...');
|
|
128
|
+
await execDockerCompose(composeArgs(['up', '-d', 'nginx', 'certbot']), targetDir);
|
|
129
|
+
s.stop('Nginx and certbot services are running');
|
|
130
|
+
s.start('Requesting initial certificate from Let\'s Encrypt...');
|
|
131
|
+
await execDockerCompose(composeArgs([
|
|
132
|
+
'exec',
|
|
133
|
+
'-T',
|
|
134
|
+
'certbot',
|
|
135
|
+
'certbot',
|
|
136
|
+
'certonly',
|
|
137
|
+
'--webroot',
|
|
138
|
+
'-w',
|
|
139
|
+
'/var/www/certbot',
|
|
140
|
+
'--email',
|
|
141
|
+
options.email,
|
|
142
|
+
'--agree-tos',
|
|
143
|
+
'--no-eff-email',
|
|
144
|
+
'-d',
|
|
145
|
+
options.domain,
|
|
146
|
+
'--non-interactive',
|
|
147
|
+
]), targetDir);
|
|
148
|
+
s.stop('Initial certificate issued');
|
|
149
|
+
s.start('Reloading nginx to apply certificates...');
|
|
150
|
+
await execDockerCompose(composeArgs(['exec', '-T', 'nginx', 'nginx', '-s', 'reload']), targetDir);
|
|
151
|
+
s.stop('Nginx reloaded');
|
|
152
|
+
s.start('Starting automatic certificate renewal service...');
|
|
153
|
+
await execDockerCompose(composeArgs(['up', '-d', 'certbot-renew']), targetDir);
|
|
154
|
+
s.stop('Certificate auto-renewal service started');
|
|
155
|
+
}
|
|
106
156
|
/**
|
|
107
157
|
* Display service status and URLs
|
|
108
158
|
*/
|
package/dist/services.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
|
package/dist/templates.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export declare const INFRA_COMPOSE_TEMPLATE = "\nservices:\n # ============================================\n # Infrastructure Services\n # ============================================\n mongo:\n image: mongo:7.0\n container_name: mongo\n command: [ \"--replSet\", \"rs0\", \"--bind_ip_all\", \"--port\", \"27017\" ]\n ports:\n - 27017:27017\n healthcheck:\n test: echo \"try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongo:27017'}]}) }\" | mongosh --port 27017 --quiet\n interval: 5s\n timeout: 30s\n start_period: 0s\n start_interval: 1s\n retries: 30\n volumes:\n - \"mongo_data:/data/db\"\n - \"mongo_config:/data/configdb\"\n\n kafka:\n image: apache/kafka-native\n container_name: kafka\n ports:\n - \"9092:9092\"\n environment:\n # Configure listeners for both docker and host communication\n KAFKA_LISTENERS: CONTROLLER://localhost:9091,HOST://0.0.0.0:9092,DOCKER://0.0.0.0:9093\n KAFKA_ADVERTISED_LISTENERS: HOST://kafka:9092,DOCKER://kafka:9093\n KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,DOCKER:PLAINTEXT,HOST:PLAINTEXT\n\n # Settings required for KRaft mode\n KAFKA_NODE_ID: 1\n KAFKA_PROCESS_ROLES: broker,controller\n KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER\n KAFKA_CONTROLLER_QUORUM_VOTERS: 1@localhost:9091\n\n # Listener to use for broker-to-broker communication\n KAFKA_INTER_BROKER_LISTENER_NAME: DOCKER\n\n # Required for a single node cluster\n KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1\n\n # Disable auto-topic creation - API server will create topics with correct partitions\n KAFKA_AUTO_CREATE_TOPICS_ENABLE: \"false\"\n volumes:\n - \"kafka_data:/var/lib/kafka/data\"\n\n kafka-ui:\n image: kafbat/kafka-ui:main\n container_name: kafka-ui\n ports:\n - 8080:8080\n environment:\n DYNAMIC_CONFIG_ENABLED: \"true\"\n KAFKA_CLUSTERS_0_NAME: local\n KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9093\n depends_on:\n - kafka\n\n redis:\n image: redis:7-alpine\n container_name: redis\n ports:\n - \"6379:6379\"\n command: redis-server --appendonly yes\n volumes:\n - \"redis_data:/data\"\n healthcheck:\n test: [ \"CMD\", \"redis-cli\", \"ping\" ]\n interval: 5s\n timeout: 3s\n retries: 5\n\n # ============================================\n # Observability Services\n # ============================================\n\n loki:\n image: grafana/loki:2.9.0\n container_name: loki\n ports:\n - \"3100:3100\"\n command: -config.file=/etc/loki/local-config.yaml\n volumes:\n - \"loki_data:/loki\"\n healthcheck:\n test: [ \"CMD-SHELL\", \"wget --no-verbose --tries=1 --spider http://localhost:3100/ready || exit 1\" ]\n interval: 10s\n timeout: 5s\n retries: 5\n\n grafana:\n image: grafana/grafana:10.2.0\n container_name: grafana\n ports:\n - \"3001:3000\"\n environment:\n - GF_PATHS_PROVISIONING=/etc/grafana/provisioning\n - GF_AUTH_ANONYMOUS_ENABLED=true\n - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin\n - GF_SECURITY_ADMIN_PASSWORD=admin\n volumes:\n - \"grafana_data:/var/lib/grafana\"\n depends_on:\n loki:\n condition: service_healthy\n\nvolumes:\n mongo_data:\n mongo_config:\n kafka_data:\n redis_data:\n loki_data:\n grafana_data:\n";
|
|
2
|
-
export declare const APP_COMPOSE_TEMPLATE = "services:\n api:\n image: ghcr.io/simplenotificationsystem/simplens-core:${CORE_VERSION:-latest}\n container_name: api\n ports:\n - 3000:3000\n env_file:\n - .env\n volumes:\n - plugin-data:/app/.plugins\n - ./simplens.config.yaml:/app/simplens.config.yaml:ro\n command: [ \"node\", \"dist/api/server.js\" ]\n restart: unless-stopped\n healthcheck:\n test: [ \"CMD\", \"node\", \"-e\", \"require('http').get('http://localhost:3000/health', (r) => process.exit(r.statusCode === 200 ? 0 : 1)).on('error', () => process.exit(1))\" ]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\n worker:\n image: ghcr.io/simplenotificationsystem/simplens-core:${CORE_VERSION:-latest}\n env_file:\n - .env\n command: [ \"node\", \"dist/workers/worker.js\" ]\n restart: unless-stopped\n\n notification_processor:\n image: ghcr.io/simplenotificationsystem/simplens-core:${CORE_VERSION:-latest}\n env_file:\n - .env\n volumes:\n - plugin-data:/app/.plugins\n - ./simplens.config.yaml:/app/simplens.config.yaml:ro\n command: [ \"node\", \"dist/processors/unified/unified.processor.js\" ]\n depends_on:\n api:\n condition: service_healthy\n restart: unless-stopped\n\n delayed_processor:\n image: ghcr.io/simplenotificationsystem/simplens-core:${CORE_VERSION:-latest}\n env_file:\n - .env\n command: [ \"node\", \"dist/processors/delayed/delayed.processor.js\" ]\n restart: unless-stopped\n\n recovery:\n image: ghcr.io/simplenotificationsystem/simplens-core:${CORE_VERSION:-latest}\n env_file:\n - .env\n command: [ \"node\", \"dist/workers/recovery/recovery.service.js\" ]\n restart: unless-stopped\n\n dashboard:\n image: ghcr.io/simplenotificationsystem/simplens-dashboard:${DASHBOARD_VERSION:-latest}\n ports:\n - 3002:3002\n container_name: dashboard\n env_file:\n - .env\n environment:\n PORT: ${DASHBOARD_PORT:-3002}\n API_BASE_URL: http://api:${PORT:-3000}\n WEBHOOK_HOST: dashboard\n WEBHOOK_PORT: ${DASHBOARD_PORT:-3002}\n restart: unless-stopped\n\nvolumes:\n plugin-data:\n\nnetworks:\n default:\n name: simplens\n";
|
|
2
|
+
export declare const APP_COMPOSE_TEMPLATE = "services:\n api:\n image: ghcr.io/simplenotificationsystem/simplens-core:${CORE_VERSION:-latest}\n container_name: api\n ports:\n - 3000:3000\n env_file:\n - .env\n environment:\n SIMPLENS_CONFIG_PATH: ${SIMPLENS_CONFIG_PATH:-/app/simplens.config.yaml}\n volumes:\n - plugin-data:/app/.plugins\n - logs-data:/app/logs\n - ./simplens.config.yaml:/app/simplens.config.yaml:ro\n command: [ \"node\", \"dist/api/server.js\" ]\n restart: unless-stopped\n healthcheck:\n test: [ \"CMD\", \"node\", \"-e\", \"require('http').get('http://localhost:3000/health', (r) => process.exit(r.statusCode === 200 ? 0 : 1)).on('error', () => process.exit(1))\" ]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\n worker:\n image: ghcr.io/simplenotificationsystem/simplens-core:${CORE_VERSION:-latest}\n env_file:\n - .env\n volumes:\n - logs-data:/app/logs\n command: [ \"node\", \"dist/workers/worker.js\" ]\n restart: unless-stopped\n\n notification_processor:\n image: ghcr.io/simplenotificationsystem/simplens-core:${CORE_VERSION:-latest}\n env_file:\n - .env\n environment:\n SIMPLENS_CONFIG_PATH: ${SIMPLENS_CONFIG_PATH:-/app/simplens.config.yaml}\n volumes:\n - plugin-data:/app/.plugins\n - logs-data:/app/logs\n - ./simplens.config.yaml:/app/simplens.config.yaml:ro\n command: [ \"node\", \"dist/processors/unified/unified.processor.js\" ]\n depends_on:\n api:\n condition: service_healthy\n restart: unless-stopped\n\n delayed_processor:\n image: ghcr.io/simplenotificationsystem/simplens-core:${CORE_VERSION:-latest}\n env_file:\n - .env\n volumes:\n - logs-data:/app/logs\n command: [ \"node\", \"dist/processors/delayed/delayed.processor.js\" ]\n restart: unless-stopped\n\n recovery:\n image: ghcr.io/simplenotificationsystem/simplens-core:${CORE_VERSION:-latest}\n env_file:\n - .env\n volumes:\n - logs-data:/app/logs\n command: [ \"node\", \"dist/workers/recovery/recovery.service.js\" ]\n restart: unless-stopped\n\n dashboard:\n image: ghcr.io/simplenotificationsystem/simplens-dashboard:${DASHBOARD_VERSION:-latest}\n ports:\n - 3002:3002\n container_name: dashboard\n env_file:\n - .env\n environment:\n PORT: ${DASHBOARD_PORT:-3002}\n API_BASE_URL: http://api:${PORT:-3000}\n WEBHOOK_HOST: dashboard\n WEBHOOK_PORT: ${DASHBOARD_PORT:-3002}\n restart: unless-stopped\n\nvolumes:\n plugin-data:\n logs-data:\n\nnetworks:\n default:\n name: simplens\n";
|
|
3
3
|
export declare const APP_NGINX_SERVICE_TEMPLATE = " nginx:\n image: nginx:alpine\n container_name: nginx\n ports:\n - \"80:80\"\n volumes:\n - \"./nginx.conf:/etc/nginx/conf.d/default.conf:ro\"\n depends_on:\n - api\n - dashboard\n restart: unless-stopped";
|
|
4
|
+
export declare const APP_NGINX_SSL_SERVICE_TEMPLATE = " nginx:\n image: nginx:alpine\n container_name: nginx\n ports:\n - \"80:80\"\n - \"443:443\"\n volumes:\n - \"./nginx.conf:/etc/nginx/conf.d/default.conf:ro\"\n - certbot-etc:/etc/letsencrypt\n - certbot-www:/var/www/certbot\n depends_on:\n - api\n - dashboard\n restart: unless-stopped";
|
|
5
|
+
export declare const APP_CERTBOT_SERVICES_TEMPLATE = " certbot:\n image: certbot/certbot:latest\n container_name: certbot\n volumes:\n - certbot-etc:/etc/letsencrypt\n - certbot-www:/var/www/certbot\n command: sh -c \"trap exit TERM; while :; do sleep 86400; done\"\n restart: unless-stopped\n\n certbot-renew:\n image: docker:cli\n container_name: certbot-renew\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n depends_on:\n - certbot\n - nginx\n command: sh -c \"while :; do sleep 12h; docker exec certbot certbot renew --webroot -w /var/www/certbot --quiet && docker exec nginx nginx -s reload || true; done\"\n restart: unless-stopped";
|
|
6
|
+
export declare const INFRA_CERTBOT_SERVICES_TEMPLATE = " certbot:\n image: certbot/certbot:latest\n container_name: certbot\n volumes:\n - certbot-etc:/etc/letsencrypt\n - certbot-www:/var/www/certbot\n command: sh -c \"trap exit TERM; while :; do sleep 86400; done\"\n restart: unless-stopped\n\n certbot-renew:\n image: docker:cli\n container_name: certbot-renew\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n depends_on:\n - certbot\n - nginx\n command: sh -c \"while :; do sleep 12h; docker exec certbot certbot renew --webroot -w /var/www/certbot --quiet && docker exec nginx nginx -s reload || true; done\"\n restart: unless-stopped";
|
|
7
|
+
export declare const INFRA_CERTBOT_VOLUMES: readonly ["certbot-etc", "certbot-www"];
|
|
4
8
|
//# sourceMappingURL=templates.d.ts.map
|
package/dist/templates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,02GAqHlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,02GAqHlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,ylFAuFhC,CAAC;AAEF,eAAO,MAAM,0BAA0B,wPAUX,CAAC;AAE7B,eAAO,MAAM,8BAA8B,yVAaf,CAAC;AAE7B,eAAO,MAAM,6BAA6B,mpBAkBd,CAAC;AAE7B,eAAO,MAAM,+BAA+B,mpBAkBhB,CAAC;AAE7B,eAAO,MAAM,qBAAqB,yCAA0C,CAAC"}
|
package/dist/templates.js
CHANGED
|
@@ -125,8 +125,11 @@ export const APP_COMPOSE_TEMPLATE = `services:
|
|
|
125
125
|
- 3000:3000
|
|
126
126
|
env_file:
|
|
127
127
|
- .env
|
|
128
|
+
environment:
|
|
129
|
+
SIMPLENS_CONFIG_PATH: \${SIMPLENS_CONFIG_PATH:-/app/simplens.config.yaml}
|
|
128
130
|
volumes:
|
|
129
131
|
- plugin-data:/app/.plugins
|
|
132
|
+
- logs-data:/app/logs
|
|
130
133
|
- ./simplens.config.yaml:/app/simplens.config.yaml:ro
|
|
131
134
|
command: [ "node", "dist/api/server.js" ]
|
|
132
135
|
restart: unless-stopped
|
|
@@ -141,6 +144,8 @@ export const APP_COMPOSE_TEMPLATE = `services:
|
|
|
141
144
|
image: ghcr.io/simplenotificationsystem/simplens-core:\${CORE_VERSION:-latest}
|
|
142
145
|
env_file:
|
|
143
146
|
- .env
|
|
147
|
+
volumes:
|
|
148
|
+
- logs-data:/app/logs
|
|
144
149
|
command: [ "node", "dist/workers/worker.js" ]
|
|
145
150
|
restart: unless-stopped
|
|
146
151
|
|
|
@@ -148,8 +153,11 @@ export const APP_COMPOSE_TEMPLATE = `services:
|
|
|
148
153
|
image: ghcr.io/simplenotificationsystem/simplens-core:\${CORE_VERSION:-latest}
|
|
149
154
|
env_file:
|
|
150
155
|
- .env
|
|
156
|
+
environment:
|
|
157
|
+
SIMPLENS_CONFIG_PATH: \${SIMPLENS_CONFIG_PATH:-/app/simplens.config.yaml}
|
|
151
158
|
volumes:
|
|
152
159
|
- plugin-data:/app/.plugins
|
|
160
|
+
- logs-data:/app/logs
|
|
153
161
|
- ./simplens.config.yaml:/app/simplens.config.yaml:ro
|
|
154
162
|
command: [ "node", "dist/processors/unified/unified.processor.js" ]
|
|
155
163
|
depends_on:
|
|
@@ -161,6 +169,8 @@ export const APP_COMPOSE_TEMPLATE = `services:
|
|
|
161
169
|
image: ghcr.io/simplenotificationsystem/simplens-core:\${CORE_VERSION:-latest}
|
|
162
170
|
env_file:
|
|
163
171
|
- .env
|
|
172
|
+
volumes:
|
|
173
|
+
- logs-data:/app/logs
|
|
164
174
|
command: [ "node", "dist/processors/delayed/delayed.processor.js" ]
|
|
165
175
|
restart: unless-stopped
|
|
166
176
|
|
|
@@ -168,6 +178,8 @@ export const APP_COMPOSE_TEMPLATE = `services:
|
|
|
168
178
|
image: ghcr.io/simplenotificationsystem/simplens-core:\${CORE_VERSION:-latest}
|
|
169
179
|
env_file:
|
|
170
180
|
- .env
|
|
181
|
+
volumes:
|
|
182
|
+
- logs-data:/app/logs
|
|
171
183
|
command: [ "node", "dist/workers/recovery/recovery.service.js" ]
|
|
172
184
|
restart: unless-stopped
|
|
173
185
|
|
|
@@ -187,6 +199,7 @@ export const APP_COMPOSE_TEMPLATE = `services:
|
|
|
187
199
|
|
|
188
200
|
volumes:
|
|
189
201
|
plugin-data:
|
|
202
|
+
logs-data:
|
|
190
203
|
|
|
191
204
|
networks:
|
|
192
205
|
default:
|
|
@@ -203,4 +216,57 @@ export const APP_NGINX_SERVICE_TEMPLATE = ` nginx:
|
|
|
203
216
|
- api
|
|
204
217
|
- dashboard
|
|
205
218
|
restart: unless-stopped`;
|
|
219
|
+
export const APP_NGINX_SSL_SERVICE_TEMPLATE = ` nginx:
|
|
220
|
+
image: nginx:alpine
|
|
221
|
+
container_name: nginx
|
|
222
|
+
ports:
|
|
223
|
+
- "80:80"
|
|
224
|
+
- "443:443"
|
|
225
|
+
volumes:
|
|
226
|
+
- "./nginx.conf:/etc/nginx/conf.d/default.conf:ro"
|
|
227
|
+
- certbot-etc:/etc/letsencrypt
|
|
228
|
+
- certbot-www:/var/www/certbot
|
|
229
|
+
depends_on:
|
|
230
|
+
- api
|
|
231
|
+
- dashboard
|
|
232
|
+
restart: unless-stopped`;
|
|
233
|
+
export const APP_CERTBOT_SERVICES_TEMPLATE = ` certbot:
|
|
234
|
+
image: certbot/certbot:latest
|
|
235
|
+
container_name: certbot
|
|
236
|
+
volumes:
|
|
237
|
+
- certbot-etc:/etc/letsencrypt
|
|
238
|
+
- certbot-www:/var/www/certbot
|
|
239
|
+
command: sh -c "trap exit TERM; while :; do sleep 86400; done"
|
|
240
|
+
restart: unless-stopped
|
|
241
|
+
|
|
242
|
+
certbot-renew:
|
|
243
|
+
image: docker:cli
|
|
244
|
+
container_name: certbot-renew
|
|
245
|
+
volumes:
|
|
246
|
+
- /var/run/docker.sock:/var/run/docker.sock
|
|
247
|
+
depends_on:
|
|
248
|
+
- certbot
|
|
249
|
+
- nginx
|
|
250
|
+
command: sh -c "while :; do sleep 12h; docker exec certbot certbot renew --webroot -w /var/www/certbot --quiet && docker exec nginx nginx -s reload || true; done"
|
|
251
|
+
restart: unless-stopped`;
|
|
252
|
+
export const INFRA_CERTBOT_SERVICES_TEMPLATE = ` certbot:
|
|
253
|
+
image: certbot/certbot:latest
|
|
254
|
+
container_name: certbot
|
|
255
|
+
volumes:
|
|
256
|
+
- certbot-etc:/etc/letsencrypt
|
|
257
|
+
- certbot-www:/var/www/certbot
|
|
258
|
+
command: sh -c "trap exit TERM; while :; do sleep 86400; done"
|
|
259
|
+
restart: unless-stopped
|
|
260
|
+
|
|
261
|
+
certbot-renew:
|
|
262
|
+
image: docker:cli
|
|
263
|
+
container_name: certbot-renew
|
|
264
|
+
volumes:
|
|
265
|
+
- /var/run/docker.sock:/var/run/docker.sock
|
|
266
|
+
depends_on:
|
|
267
|
+
- certbot
|
|
268
|
+
- nginx
|
|
269
|
+
command: sh -c "while :; do sleep 12h; docker exec certbot certbot renew --webroot -w /var/www/certbot --quiet && docker exec nginx nginx -s reload || true; done"
|
|
270
|
+
restart: unless-stopped`;
|
|
271
|
+
export const INFRA_CERTBOT_VOLUMES = ['certbot-etc', 'certbot-www'];
|
|
206
272
|
//# sourceMappingURL=templates.js.map
|
package/dist/templates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqHrC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqHrC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuFnC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;4BAUd,CAAC;AAE7B,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;;;;;;;;4BAalB,CAAC;AAE7B,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;4BAkBjB,CAAC;AAE7B,MAAM,CAAC,MAAM,+BAA+B,GAAG;;;;;;;;;;;;;;;;;;4BAkBnB,CAAC;AAE7B,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,aAAa,EAAE,aAAa,CAAU,CAAC"}
|
package/dist/types/domain.d.ts
CHANGED
|
@@ -48,6 +48,12 @@ export interface SetupOptions {
|
|
|
48
48
|
targetDir: string;
|
|
49
49
|
/** Dashboard base path (empty string means root) */
|
|
50
50
|
basePath: string;
|
|
51
|
+
/** Whether SSL automation with Certbot is enabled */
|
|
52
|
+
enableSsl?: boolean;
|
|
53
|
+
/** Public domain for SSL certificate */
|
|
54
|
+
sslDomain?: string;
|
|
55
|
+
/** Registration email for Let's Encrypt */
|
|
56
|
+
sslEmail?: string;
|
|
51
57
|
}
|
|
52
58
|
/**
|
|
53
59
|
* Service definition for docker-compose generation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/types/domain.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,OAAO,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,+CAA+C;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,qCAAqC;IACrC,OAAO,EAAE,SAAS,GAAG,aAAa,CAAC;IACnC,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/types/domain.ts"],"names":[],"mappings":"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"}
|
package/dist/validators.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
export type OSType = 'windows' | 'linux' | 'darwin';
|
|
2
|
+
/**
|
|
3
|
+
* Validate a public domain used for ACME/Certbot.
|
|
4
|
+
* Accepts FQDN only (no protocol, path, query, port, or wildcard).
|
|
5
|
+
*/
|
|
6
|
+
export declare function validatePublicDomain(input: string): true | string;
|
|
7
|
+
/**
|
|
8
|
+
* Validate email format for Let's Encrypt registration.
|
|
9
|
+
*/
|
|
10
|
+
export declare function validateEmailAddress(input: string): true | string;
|
|
2
11
|
/**
|
|
3
12
|
* Checks if Docker is installed on the system by running `docker --version`.
|
|
4
13
|
*
|
package/dist/validators.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpD;;;;GAIG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAM1D;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBxD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAMjC;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CA+B3D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CA6BpE"}
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CA2BjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAajE;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAM1D;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBxD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAMjC;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CA+B3D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CA6BpE"}
|
package/dist/validators.js
CHANGED
|
@@ -3,6 +3,44 @@ import { logSuccess, logWarning } from './utils.js';
|
|
|
3
3
|
import { spinner } from './ui.js';
|
|
4
4
|
import { DockerNotInstalledError, DockerNotRunningError, DockerPermissionError, } from './types/errors.js';
|
|
5
5
|
import { VALIDATION } from './config/constants.js';
|
|
6
|
+
/**
|
|
7
|
+
* Validate a public domain used for ACME/Certbot.
|
|
8
|
+
* Accepts FQDN only (no protocol, path, query, port, or wildcard).
|
|
9
|
+
*/
|
|
10
|
+
export function validatePublicDomain(input) {
|
|
11
|
+
const value = input.trim().toLowerCase();
|
|
12
|
+
if (!value) {
|
|
13
|
+
return 'Domain is required';
|
|
14
|
+
}
|
|
15
|
+
if (value.includes('://') ||
|
|
16
|
+
value.includes('/') ||
|
|
17
|
+
value.includes('?') ||
|
|
18
|
+
value.includes('#') ||
|
|
19
|
+
value.includes(':') ||
|
|
20
|
+
value.includes('*')) {
|
|
21
|
+
return 'Enter only a domain name (example: app.example.com)';
|
|
22
|
+
}
|
|
23
|
+
// RFC-ish practical FQDN validation
|
|
24
|
+
const domainRegex = /^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/;
|
|
25
|
+
if (!domainRegex.test(value)) {
|
|
26
|
+
return 'Invalid domain format (example: app.example.com)';
|
|
27
|
+
}
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Validate email format for Let's Encrypt registration.
|
|
32
|
+
*/
|
|
33
|
+
export function validateEmailAddress(input) {
|
|
34
|
+
const value = input.trim();
|
|
35
|
+
if (!value) {
|
|
36
|
+
return 'Email is required';
|
|
37
|
+
}
|
|
38
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
39
|
+
if (!emailRegex.test(value)) {
|
|
40
|
+
return 'Invalid email format (example: admin@example.com)';
|
|
41
|
+
}
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
6
44
|
/**
|
|
7
45
|
* Checks if Docker is installed on the system by running `docker --version`.
|
|
8
46
|
*
|
package/dist/validators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EACH,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAInD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,oBAAoB,CAAC;IAChC,CAAC;IAED,IACI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QACrB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EACrB,CAAC;QACC,OAAO,qDAAqD,CAAC;IACjE,CAAC;IAED,oCAAoC;IACpC,MAAM,WAAW,GACb,uEAAuE,CAAC;IAE5E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,kDAAkD,CAAC;IAC9D,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAE3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,MAAM,UAAU,GAAG,4BAA4B,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,mDAAmD,CAAC;IAC/D,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACtC,IAAI,CAAC;QACD,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,MAAM,IAAI,uBAAuB,EAAE,CAAC;IACxC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACpC,IAAI,CAAC;QACD,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACtB,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAEnE,IAAI,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChF,MAAM,IAAI,qBAAqB,EAAE,CAAC;QACtC,CAAC;QAED,IAAI,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC;YACnG,MAAM,IAAI,qBAAqB,EAAE,CAAC;QACtC,CAAC;QAED,uBAAuB;QACvB,MAAM,IAAI,qBAAqB,EAAE,CAAC;IACtC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ;IACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC3C,OAAO,OAAO,CAAC,CAAC,mBAAmB;AACvC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACvC,UAAU,CAAC,gCAAgC,CAAC,CAAC;IAE7C,4BAA4B;IAC5B,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,CAAC,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC3C,IAAI,CAAC;QACD,MAAM,oBAAoB,EAAE,CAAC;QAC7B,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,CAAC,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC5C,MAAM,KAAK,CAAC;IAChB,CAAC;IAED,sBAAsB;IACtB,CAAC,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC5C,IAAI,CAAC;QACD,MAAM,kBAAkB,EAAE,CAAC;QAC3B,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACtC,MAAM,KAAK,CAAC;IAChB,CAAC;IAED,YAAY;IACZ,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,UAAU,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IAEjC,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QACjB,UAAU,CAAC,6EAA6E,CAAC,CAAC;IAC9F,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,KAAa;IACvD,iBAAiB;IACjB,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,yBAAyB;QACzB,IAAI,GAAG,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,GAAG,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,UAAU,CAAC,QAAQ,IAAI,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC1E,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,wDAAwD;IACxD,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAChF,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,mBAAmB,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
|