@serve.zone/appstore 0.3.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.
Files changed (29) hide show
  1. package/apps/adminer/versions/1.0.0/config.json +3 -1
  2. package/apps/cloudly/versions/1.0.0/config.json +8 -6
  3. package/apps/ghost/versions/1.0.0/config.json +3 -1
  4. package/apps/gitea/versions/1.0.0/config.json +3 -1
  5. package/apps/gitops/versions/1.0.0/config.json +3 -1
  6. package/apps/grafana/versions/1.0.0/config.json +3 -1
  7. package/apps/mariadb/versions/1.0.0/config.json +3 -1
  8. package/apps/mattermost/versions/1.0.0/config.json +3 -1
  9. package/apps/n8n/versions/1.0.0/config.json +3 -1
  10. package/apps/nextcloud/versions/1.0.0/config.json +3 -1
  11. package/apps/nginx/versions/1.0.0/config.json +3 -1
  12. package/apps/plausible/versions/1.0.0/config.json +3 -1
  13. package/apps/portainer/versions/1.0.0/config.json +3 -1
  14. package/apps/postgres/versions/1.0.0/config.json +3 -1
  15. package/apps/rustdesk-server/versions/1.0.0/config.json +3 -1
  16. package/apps/siprouter/versions/1.0.0/config.json +14 -8
  17. package/apps/uptime-kuma/versions/1.0.0/config.json +3 -1
  18. package/apps/valkey/versions/1.0.0/config.json +3 -1
  19. package/apps/vaultwarden/versions/1.0.0/config.json +3 -1
  20. package/apps/wordpress/versions/1.0.0/config.json +3 -1
  21. package/appstore.json +1 -1
  22. package/changelog.md +18 -0
  23. package/dist_ts_client/classes.appstoreresolver.d.ts +2 -1
  24. package/dist_ts_client/classes.appstoreresolver.js +24 -2
  25. package/dist_ts_client/data.generated.js +220 -50
  26. package/package.json +3 -3
  27. package/readme.md +2 -2
  28. package/ts_client/classes.appstoreresolver.ts +30 -2
  29. package/ts_client/data.generated.ts +219 -49
@@ -16,7 +16,14 @@ export const appStorePackageData = {
16
16
  },
17
17
  "apps/adminer/versions/1.0.0/config.json": {
18
18
  "image": "adminer:latest",
19
- "port": 8080
19
+ "targetPorts": [
20
+ {
21
+ "name": "web",
22
+ "port": 8080,
23
+ "protocol": "http",
24
+ "default": true
25
+ }
26
+ ]
20
27
  },
21
28
  "apps/cloudly/app.json": {
22
29
  "id": "cloudly",
@@ -36,7 +43,14 @@ export const appStorePackageData = {
36
43
  },
37
44
  "apps/cloudly/versions/1.0.0/config.json": {
38
45
  "image": "code.foss.global/serve.zone/cloudly:latest",
39
- "port": 80,
46
+ "targetPorts": [
47
+ {
48
+ "name": "web",
49
+ "port": 3000,
50
+ "protocol": "http",
51
+ "default": true
52
+ }
53
+ ],
40
54
  "envVars": [
41
55
  {
42
56
  "key": "SERVEZONE_ENVIRONMENT",
@@ -45,14 +59,14 @@ export const appStorePackageData = {
45
59
  "required": true
46
60
  },
47
61
  {
48
- "key": "SERVEZONE_URL",
49
- "value": "${SERVICE_DOMAIN}",
50
- "description": "Public Cloudly hostname without protocol.",
62
+ "key": "SERVEZONE_PUBLIC_ORIGIN",
63
+ "value": "https://${SERVICE_DOMAIN}",
64
+ "description": "Canonical public Cloudly origin including protocol and optional public port.",
51
65
  "required": true
52
66
  },
53
67
  {
54
- "key": "SERVEZONE_PORT",
55
- "value": "80",
68
+ "key": "SERVEZONE_LISTENPORT",
69
+ "value": "3000",
56
70
  "description": "Internal Cloudly HTTP port inside the container.",
57
71
  "required": true
58
72
  },
@@ -143,7 +157,14 @@ export const appStorePackageData = {
143
157
  },
144
158
  "apps/ghost/versions/1.0.0/config.json": {
145
159
  "image": "ghost:latest",
146
- "port": 2368,
160
+ "targetPorts": [
161
+ {
162
+ "name": "web",
163
+ "port": 2368,
164
+ "protocol": "http",
165
+ "default": true
166
+ }
167
+ ],
147
168
  "envVars": [
148
169
  {
149
170
  "key": "database__client",
@@ -199,7 +220,14 @@ export const appStorePackageData = {
199
220
  },
200
221
  "apps/gitea/versions/1.0.0/config.json": {
201
222
  "image": "gitea/gitea:latest",
202
- "port": 3000,
223
+ "targetPorts": [
224
+ {
225
+ "name": "web",
226
+ "port": 3000,
227
+ "protocol": "http",
228
+ "default": true
229
+ }
230
+ ],
203
231
  "envVars": [
204
232
  {
205
233
  "key": "GITEA__database__DB_TYPE",
@@ -249,7 +277,14 @@ export const appStorePackageData = {
249
277
  },
250
278
  "apps/gitops/versions/1.0.0/config.json": {
251
279
  "image": "code.foss.global/serve.zone/gitops:2.13.0",
252
- "port": 3000,
280
+ "targetPorts": [
281
+ {
282
+ "name": "web",
283
+ "port": 3000,
284
+ "protocol": "http",
285
+ "default": true
286
+ }
287
+ ],
253
288
  "envVars": [
254
289
  {
255
290
  "key": "GITOPS_PORT",
@@ -289,7 +324,14 @@ export const appStorePackageData = {
289
324
  },
290
325
  "apps/grafana/versions/1.0.0/config.json": {
291
326
  "image": "grafana/grafana:latest",
292
- "port": 3000,
327
+ "targetPorts": [
328
+ {
329
+ "name": "web",
330
+ "port": 3000,
331
+ "protocol": "http",
332
+ "default": true
333
+ }
334
+ ],
293
335
  "envVars": [
294
336
  {
295
337
  "key": "GF_SECURITY_ADMIN_PASSWORD",
@@ -313,7 +355,14 @@ export const appStorePackageData = {
313
355
  },
314
356
  "apps/mariadb/versions/1.0.0/config.json": {
315
357
  "image": "mariadb:latest",
316
- "port": 3306,
358
+ "targetPorts": [
359
+ {
360
+ "name": "db",
361
+ "port": 3306,
362
+ "protocol": "tcp",
363
+ "default": true
364
+ }
365
+ ],
317
366
  "envVars": [
318
367
  {
319
368
  "key": "MARIADB_ROOT_PASSWORD",
@@ -337,7 +386,14 @@ export const appStorePackageData = {
337
386
  },
338
387
  "apps/mattermost/versions/1.0.0/config.json": {
339
388
  "image": "mattermost/mattermost-team-edition:latest",
340
- "port": 8065
389
+ "targetPorts": [
390
+ {
391
+ "name": "web",
392
+ "port": 8065,
393
+ "protocol": "http",
394
+ "default": true
395
+ }
396
+ ]
341
397
  },
342
398
  "apps/n8n/app.json": {
343
399
  "id": "n8n",
@@ -353,7 +409,14 @@ export const appStorePackageData = {
353
409
  },
354
410
  "apps/n8n/versions/1.0.0/config.json": {
355
411
  "image": "n8nio/n8n:latest",
356
- "port": 5678
412
+ "targetPorts": [
413
+ {
414
+ "name": "web",
415
+ "port": 5678,
416
+ "protocol": "http",
417
+ "default": true
418
+ }
419
+ ]
357
420
  },
358
421
  "apps/nextcloud/app.json": {
359
422
  "id": "nextcloud",
@@ -369,7 +432,14 @@ export const appStorePackageData = {
369
432
  },
370
433
  "apps/nextcloud/versions/1.0.0/config.json": {
371
434
  "image": "nextcloud:latest",
372
- "port": 80,
435
+ "targetPorts": [
436
+ {
437
+ "name": "web",
438
+ "port": 80,
439
+ "protocol": "http",
440
+ "default": true
441
+ }
442
+ ],
373
443
  "envVars": [
374
444
  {
375
445
  "key": "MYSQL_HOST",
@@ -411,7 +481,14 @@ export const appStorePackageData = {
411
481
  },
412
482
  "apps/nginx/versions/1.0.0/config.json": {
413
483
  "image": "nginx:alpine",
414
- "port": 80
484
+ "targetPorts": [
485
+ {
486
+ "name": "web",
487
+ "port": 80,
488
+ "protocol": "http",
489
+ "default": true
490
+ }
491
+ ]
415
492
  },
416
493
  "apps/plausible/app.json": {
417
494
  "id": "plausible",
@@ -427,7 +504,14 @@ export const appStorePackageData = {
427
504
  },
428
505
  "apps/plausible/versions/1.0.0/config.json": {
429
506
  "image": "plausible/analytics:latest",
430
- "port": 8000,
507
+ "targetPorts": [
508
+ {
509
+ "name": "web",
510
+ "port": 8000,
511
+ "protocol": "http",
512
+ "default": true
513
+ }
514
+ ],
431
515
  "platformRequirements": {
432
516
  "clickhouse": true
433
517
  }
@@ -446,7 +530,14 @@ export const appStorePackageData = {
446
530
  },
447
531
  "apps/portainer/versions/1.0.0/config.json": {
448
532
  "image": "portainer/portainer-ce:latest",
449
- "port": 9000
533
+ "targetPorts": [
534
+ {
535
+ "name": "web",
536
+ "port": 9000,
537
+ "protocol": "http",
538
+ "default": true
539
+ }
540
+ ]
450
541
  },
451
542
  "apps/postgres/app.json": {
452
543
  "id": "postgres",
@@ -462,7 +553,14 @@ export const appStorePackageData = {
462
553
  },
463
554
  "apps/postgres/versions/1.0.0/config.json": {
464
555
  "image": "postgres:16-alpine",
465
- "port": 5432,
556
+ "targetPorts": [
557
+ {
558
+ "name": "db",
559
+ "port": 5432,
560
+ "protocol": "tcp",
561
+ "default": true
562
+ }
563
+ ],
466
564
  "envVars": [
467
565
  {
468
566
  "key": "POSTGRES_PASSWORD",
@@ -500,7 +598,14 @@ export const appStorePackageData = {
500
598
  },
501
599
  "apps/rustdesk-server/versions/1.0.0/config.json": {
502
600
  "image": "rustdesk/rustdesk-server-s6:latest",
503
- "port": 21116,
601
+ "targetPorts": [
602
+ {
603
+ "name": "relay",
604
+ "port": 21116,
605
+ "protocol": "tcp",
606
+ "default": true
607
+ }
608
+ ],
504
609
  "envVars": [
505
610
  {
506
611
  "key": "RELAY",
@@ -533,7 +638,40 @@ export const appStorePackageData = {
533
638
  },
534
639
  "apps/siprouter/versions/1.0.0/config.json": {
535
640
  "image": "code.foss.global/serve.zone/siprouter:1.28.0",
536
- "port": 3060,
641
+ "targetPorts": [
642
+ {
643
+ "name": "web",
644
+ "port": 3060,
645
+ "protocol": "http",
646
+ "default": true
647
+ },
648
+ {
649
+ "name": "sip-udp",
650
+ "port": 5070,
651
+ "protocol": "udp"
652
+ },
653
+ {
654
+ "name": "sip-tcp",
655
+ "port": 5070,
656
+ "protocol": "tcp"
657
+ },
658
+ {
659
+ "name": "sips-udp",
660
+ "port": 5061,
661
+ "protocol": "udp"
662
+ },
663
+ {
664
+ "name": "sips-tcp",
665
+ "port": 5061,
666
+ "protocol": "tcp"
667
+ },
668
+ {
669
+ "name": "rtp",
670
+ "port": 20000,
671
+ "portEnd": 20200,
672
+ "protocol": "udp"
673
+ }
674
+ ],
537
675
  "envVars": [
538
676
  {
539
677
  "key": "SIPROUTER_LAN_IP",
@@ -595,38 +733,42 @@ export const appStorePackageData = {
595
733
  "required": true
596
734
  }
597
735
  ],
598
- "publishedPorts": [
736
+ "publicPortMappings": [
599
737
  {
600
- "targetPort": 3060,
601
- "publishedPort": 3060,
602
- "protocol": "tcp"
738
+ "name": "sip-udp",
739
+ "publicPort": 5070,
740
+ "targetPort": "sip-udp",
741
+ "protocol": "udp",
742
+ "exclusive": true
603
743
  },
604
744
  {
605
- "targetPort": 5070,
606
- "publishedPort": 5070,
607
- "protocol": "udp"
745
+ "name": "sip-tcp",
746
+ "publicPort": 5070,
747
+ "targetPort": "sip-tcp",
748
+ "protocol": "tcp",
749
+ "exclusive": true
608
750
  },
609
751
  {
610
- "targetPort": 5070,
611
- "publishedPort": 5070,
612
- "protocol": "tcp"
752
+ "name": "sips-udp",
753
+ "publicPort": 5061,
754
+ "targetPort": "sips-udp",
755
+ "protocol": "udp",
756
+ "exclusive": true
613
757
  },
614
758
  {
615
- "targetPort": 5061,
616
- "publishedPort": 5061,
617
- "protocol": "udp"
759
+ "name": "sips-tcp",
760
+ "publicPort": 5061,
761
+ "targetPort": "sips-tcp",
762
+ "protocol": "tcp",
763
+ "exclusive": true
618
764
  },
619
765
  {
620
- "targetPort": 5061,
621
- "publishedPort": 5061,
622
- "protocol": "tcp"
623
- },
624
- {
625
- "targetPort": 20000,
626
- "targetPortEnd": 20200,
627
- "publishedPort": 20000,
628
- "publishedPortEnd": 20200,
629
- "protocol": "udp"
766
+ "name": "rtp",
767
+ "publicPort": 20000,
768
+ "publicPortEnd": 20200,
769
+ "targetPort": "rtp",
770
+ "protocol": "udp",
771
+ "exclusive": true
630
772
  }
631
773
  ],
632
774
  "platformRequirements": {
@@ -649,7 +791,14 @@ export const appStorePackageData = {
649
791
  },
650
792
  "apps/uptime-kuma/versions/1.0.0/config.json": {
651
793
  "image": "louislam/uptime-kuma:latest",
652
- "port": 3001
794
+ "targetPorts": [
795
+ {
796
+ "name": "web",
797
+ "port": 3001,
798
+ "protocol": "http",
799
+ "default": true
800
+ }
801
+ ]
653
802
  },
654
803
  "apps/valkey/app.json": {
655
804
  "id": "valkey",
@@ -665,7 +814,14 @@ export const appStorePackageData = {
665
814
  },
666
815
  "apps/valkey/versions/1.0.0/config.json": {
667
816
  "image": "valkey/valkey:9.1.0-alpine",
668
- "port": 6379
817
+ "targetPorts": [
818
+ {
819
+ "name": "cache",
820
+ "port": 6379,
821
+ "protocol": "tcp",
822
+ "default": true
823
+ }
824
+ ]
669
825
  },
670
826
  "apps/vaultwarden/app.json": {
671
827
  "id": "vaultwarden",
@@ -681,7 +837,14 @@ export const appStorePackageData = {
681
837
  },
682
838
  "apps/vaultwarden/versions/1.0.0/config.json": {
683
839
  "image": "vaultwarden/server:latest",
684
- "port": 80
840
+ "targetPorts": [
841
+ {
842
+ "name": "web",
843
+ "port": 80,
844
+ "protocol": "http",
845
+ "default": true
846
+ }
847
+ ]
685
848
  },
686
849
  "apps/wordpress/app.json": {
687
850
  "id": "wordpress",
@@ -697,7 +860,14 @@ export const appStorePackageData = {
697
860
  },
698
861
  "apps/wordpress/versions/1.0.0/config.json": {
699
862
  "image": "wordpress:latest",
700
- "port": 80,
863
+ "targetPorts": [
864
+ {
865
+ "name": "web",
866
+ "port": 80,
867
+ "protocol": "http",
868
+ "default": true
869
+ }
870
+ ],
701
871
  "envVars": [
702
872
  {
703
873
  "key": "WORDPRESS_DB_HOST",
@@ -726,7 +896,7 @@ export const appStorePackageData = {
726
896
  },
727
897
  "appstore.json": {
728
898
  "schemaVersion": 1,
729
- "updatedAt": "2026-05-18T00:00:00Z",
899
+ "updatedAt": "2026-06-07T00:00:00Z",
730
900
  "apps": [
731
901
  {
732
902
  "id": "nginx",
@@ -982,4 +1152,4 @@ export const appStorePackageData = {
982
1152
  },
983
1153
  "textFiles": {}
984
1154
  };
985
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5nZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19jbGllbnQvZGF0YS5nZW5lcmF0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEVBQTRFO0FBSTVFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUF5QjtJQUN2RCxhQUFhLEVBQUUsMEJBQTBCO0lBQ3pDLFdBQVcsRUFBRTtRQUNYLHVCQUF1QixFQUFFO1lBQ3ZCLElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFLFNBQVM7WUFDakIsYUFBYSxFQUFFLHlEQUF5RDtZQUN4RSxVQUFVLEVBQUUsV0FBVztZQUN2QixVQUFVLEVBQUUsU0FBUztZQUNyQixlQUFlLEVBQUUsT0FBTztZQUN4QixVQUFVLEVBQUU7Z0JBQ1YsT0FBTzthQUNSO1lBQ0QsWUFBWSxFQUFFLFlBQVk7U0FDM0I7UUFDRCx5Q0FBeUMsRUFBRTtZQUN6QyxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLE1BQU0sRUFBRSxJQUFJO1NBQ2I7UUFDRCx1QkFBdUIsRUFBRTtZQUN2QixJQUFJLEVBQUUsU0FBUztZQUNmLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLGFBQWEsRUFBRSxnR0FBZ0c7WUFDL0csVUFBVSxFQUFFLFdBQVc7WUFDdkIsVUFBVSxFQUFFLFFBQVE7WUFDcEIsZUFBZSxFQUFFLE9BQU87WUFDeEIsVUFBVSxFQUFFO2dCQUNWLE9BQU87YUFDUjtZQUNELFlBQVksRUFBRSxZQUFZO1lBQzFCLE9BQU8sRUFBRTtnQkFDUCxRQUFRLEVBQUUsNkNBQTZDO2dCQUN2RCxNQUFNLEVBQUUsb0JBQW9CO2FBQzdCO1NBQ0Y7UUFDRCx5Q0FBeUMsRUFBRTtZQUN6QyxPQUFPLEVBQUUsNENBQTRDO1lBQ3JELE1BQU0sRUFBRSxFQUFFO1lBQ1YsU0FBUyxFQUFFO2dCQUNUO29CQUNFLEtBQUssRUFBRSx1QkFBdUI7b0JBQzlCLE9BQU8sRUFBRSxZQUFZO29CQUNyQixhQUFhLEVBQUUsOEJBQThC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
1155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5nZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19jbGllbnQvZGF0YS5nZW5lcmF0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEVBQTRFO0FBSTVFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUF5QjtJQUN2RCxhQUFhLEVBQUUsMEJBQTBCO0lBQ3pDLFdBQVcsRUFBRTtRQUNYLHVCQUF1QixFQUFFO1lBQ3ZCLElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFLFNBQVM7WUFDakIsYUFBYSxFQUFFLHlEQUF5RDtZQUN4RSxVQUFVLEVBQUUsV0FBVztZQUN2QixVQUFVLEVBQUUsU0FBUztZQUNyQixlQUFlLEVBQUUsT0FBTztZQUN4QixVQUFVLEVBQUU7Z0JBQ1YsT0FBTzthQUNSO1lBQ0QsWUFBWSxFQUFFLFlBQVk7U0FDM0I7UUFDRCx5Q0FBeUMsRUFBRTtZQUN6QyxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLGFBQWEsRUFBRTtnQkFDYjtvQkFDRSxNQUFNLEVBQUUsS0FBSztvQkFDYixNQUFNLEVBQUUsSUFBSTtvQkFDWixVQUFVLEVBQUUsTUFBTTtvQkFDbEIsU0FBUyxFQUFFLElBQUk7aUJBQ2hCO2FBQ0Y7U0FDRjtRQUNELHVCQUF1QixFQUFFO1lBQ3ZCLElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFLFNBQVM7WUFDakIsYUFBYSxFQUFFLGdHQUFnRztZQUMvRyxVQUFVLEVBQUUsV0FBVztZQUN2QixVQUFVLEVBQUUsUUFBUTtZQUNwQixlQUFlLEVBQUUsT0FBTztZQUN4QixVQUFVLEVBQUU7Z0JBQ1YsT0FBTzthQUNSO1lBQ0QsWUFBWSxFQUFFLFlBQVk7WUFDMUIsT0FBTyxFQUFFO2dCQUNQLFFBQVEsRUFBRSw2Q0FBNkM7Z0JBQ3ZELE1BQU0sRUFBRSxvQkFBb0I7YUFDN0I7U0FDRjtRQUNELHlDQUF5QyxFQUFFO1lBQ3pDLE9BQU8sRUFBRSw0Q0FBNEM7WUFDckQsYUFBYSxF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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serve.zone/appstore",
3
- "version": "0.3.0",
3
+ "version": "1.0.0",
4
4
  "private": false,
5
5
  "description": "serve.zone App Store metadata, parser, and resolver client.",
6
6
  "type": "module",
@@ -10,11 +10,11 @@
10
10
  "author": "Task Venture Capital GmbH",
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
- "@serve.zone/interfaces": "^6.2.1"
13
+ "@serve.zone/interfaces": "^8.0.0"
14
14
  },
15
15
  "devDependencies": {
16
16
  "@git.zone/tsbuild": "^4.4.2",
17
- "@git.zone/tsdoc": "^2.0.6",
17
+ "@git.zone/tsdoc": "^2.1.1",
18
18
  "@git.zone/tstest": "^3.6.6",
19
19
  "@types/node": "^25.9.1"
20
20
  },
package/readme.md CHANGED
@@ -31,7 +31,7 @@ The App Store currently lists 20 app templates.
31
31
  | App ID | Name | App Store category | Image | Port |
32
32
  | --- | --- | --- | --- | --- |
33
33
  | `adminer` | Adminer | Dev Tools | `adminer:latest` | `8080` |
34
- | `cloudly` | Cloudly | Dev Tools | `code.foss.global/serve.zone/cloudly:latest` | `80` |
34
+ | `cloudly` | Cloudly | Dev Tools | `code.foss.global/serve.zone/cloudly:latest` | `3000` |
35
35
  | `ghost` | Ghost | CMS | `ghost:latest` | `2368` |
36
36
  | `gitea` | Gitea | Dev Tools | `gitea/gitea:latest` | `3000` |
37
37
  | `gitops` | GitOps | Dev Tools | `code.foss.global/serve.zone/gitops:2.13.0` | `3000` |
@@ -115,7 +115,7 @@ Linked app manifests use the same runtime schema and let the upstream app repo o
115
115
  },
116
116
  "runtime": {
117
117
  "image": "code.foss.global/serve.zone/cloudly:latest",
118
- "port": 80
118
+ "port": 3000
119
119
  }
120
120
  }
121
121
  ```
@@ -1,4 +1,4 @@
1
- import type * as interfaces from '@serve.zone/interfaces';
1
+ import * as interfaces from '@serve.zone/interfaces';
2
2
  import packageJson from '../package.json' with { type: 'json' };
3
3
  import { appStorePackageData } from './data.generated.js';
4
4
  import type {
@@ -213,7 +213,10 @@ export class AppStoreResolver {
213
213
  if (!configArg.image || typeof configArg.image !== 'string') {
214
214
  throw new Error(`Invalid ${labelArg}: image is required`);
215
215
  }
216
- this.assertValidPort(configArg.port, `${labelArg} port`);
216
+ if (configArg.port !== undefined) {
217
+ this.assertValidPort(configArg.port, `${labelArg} port`);
218
+ }
219
+ this.validateTargetPortModel(configArg, labelArg);
217
220
 
218
221
  for (const envVar of configArg.envVars || []) {
219
222
  if (!envVar.key || !/^[A-Za-z_][A-Za-z0-9_]*$/.test(envVar.key)) {
@@ -579,6 +582,31 @@ export class AppStoreResolver {
579
582
  }
580
583
  }
581
584
 
585
+ private validateTargetPortModel(
586
+ configArg: TAppStoreVersionConfig,
587
+ labelArg: string,
588
+ ): void {
589
+ const config = configArg as TAppStoreVersionConfig & {
590
+ targetPorts?: any[];
591
+ domains?: any[];
592
+ publicPortMappings?: any[];
593
+ };
594
+ if (config.port === undefined && (!config.targetPorts || config.targetPorts.length === 0)) {
595
+ throw new Error(`Invalid ${labelArg}: either port or targetPorts is required`);
596
+ }
597
+ try {
598
+ (interfaces.data as any).normalizeServicePortConfig({
599
+ name: labelArg,
600
+ ports: config.port !== undefined ? { web: config.port } : undefined,
601
+ targetPorts: config.targetPorts,
602
+ domains: config.domains,
603
+ publicPortMappings: config.publicPortMappings,
604
+ });
605
+ } catch (error) {
606
+ throw new Error(`Invalid ${labelArg}: ${(error as Error).message}`);
607
+ }
608
+ }
609
+
582
610
  private assertValidPort(portArg: number, labelArg: string): void {
583
611
  if (!Number.isInteger(portArg) || portArg < 1 || portArg > 65535) {
584
612
  throw new Error(`Invalid ${labelArg}: ${portArg}. Expected an integer port between 1 and 65535.`);