@serve.zone/appstore 0.2.2 → 0.3.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.
@@ -0,0 +1,985 @@
1
+ // Auto-generated by scripts/generate-data-module.mjs. Do not edit manually.
2
+ export const appStorePackageData = {
3
+ "generatedAt": "1970-01-01T00:00:00.000Z",
4
+ "jsonFiles": {
5
+ "apps/adminer/app.json": {
6
+ "id": "adminer",
7
+ "name": "Adminer",
8
+ "description": "Lightweight database management tool with web interface",
9
+ "category": "Databases",
10
+ "iconName": "adminer",
11
+ "latestVersion": "1.0.0",
12
+ "versions": [
13
+ "1.0.0"
14
+ ],
15
+ "maintainer": "serve.zone"
16
+ },
17
+ "apps/adminer/versions/1.0.0/config.json": {
18
+ "image": "adminer:latest",
19
+ "port": 8080
20
+ },
21
+ "apps/cloudly/app.json": {
22
+ "id": "cloudly",
23
+ "name": "Cloudly",
24
+ "description": "Multi-node serve.zone control plane for clusters, workload services, domains, and deployments.",
25
+ "category": "Dev Tools",
26
+ "iconName": "server",
27
+ "latestVersion": "1.0.0",
28
+ "versions": [
29
+ "1.0.0"
30
+ ],
31
+ "maintainer": "serve.zone",
32
+ "links": {
33
+ "Source": "https://code.foss.global/serve.zone/cloudly",
34
+ "Docs": "https://serve.zone"
35
+ }
36
+ },
37
+ "apps/cloudly/versions/1.0.0/config.json": {
38
+ "image": "code.foss.global/serve.zone/cloudly:latest",
39
+ "port": 80,
40
+ "envVars": [
41
+ {
42
+ "key": "SERVEZONE_ENVIRONMENT",
43
+ "value": "production",
44
+ "description": "Cloudly runtime environment.",
45
+ "required": true
46
+ },
47
+ {
48
+ "key": "SERVEZONE_URL",
49
+ "value": "${SERVICE_DOMAIN}",
50
+ "description": "Public Cloudly hostname without protocol.",
51
+ "required": true
52
+ },
53
+ {
54
+ "key": "SERVEZONE_PORT",
55
+ "value": "80",
56
+ "description": "Internal Cloudly HTTP port inside the container.",
57
+ "required": true
58
+ },
59
+ {
60
+ "key": "SERVEZONE_SSLMODE",
61
+ "value": "external",
62
+ "description": "Use external TLS termination through Onebox or dcrouter.",
63
+ "required": true
64
+ },
65
+ {
66
+ "key": "MONGODB_URL",
67
+ "value": "${MONGODB_URI}",
68
+ "description": "Authenticated MongoDB connection URL provisioned by Onebox.",
69
+ "required": true
70
+ },
71
+ {
72
+ "key": "MONGODB_NAME",
73
+ "value": "${MONGODB_DATABASE}",
74
+ "description": "MongoDB database name provisioned by Onebox.",
75
+ "required": true
76
+ },
77
+ {
78
+ "key": "MONGODB_USER",
79
+ "value": "${MONGODB_USERNAME}",
80
+ "description": "MongoDB username provisioned by Onebox.",
81
+ "required": true
82
+ },
83
+ {
84
+ "key": "MONGODB_PASS",
85
+ "value": "${MONGODB_PASSWORD}",
86
+ "description": "MongoDB password provisioned by Onebox.",
87
+ "required": true
88
+ },
89
+ {
90
+ "key": "S3_ENDPOINT",
91
+ "value": "onebox-minio",
92
+ "description": "S3 endpoint host for the MinIO service provisioned by Onebox.",
93
+ "required": true
94
+ },
95
+ {
96
+ "key": "S3_PORT",
97
+ "value": "9000",
98
+ "description": "S3 endpoint port for the MinIO service provisioned by Onebox.",
99
+ "required": true
100
+ },
101
+ {
102
+ "key": "S3_USESSL",
103
+ "value": "false",
104
+ "description": "Use plain HTTP for internal MinIO traffic on the Onebox network.",
105
+ "required": true
106
+ },
107
+ {
108
+ "key": "S3_BUCKET",
109
+ "value": "${S3_BUCKET}",
110
+ "description": "S3 bucket provisioned by Onebox for Cloudly's registry.",
111
+ "required": true
112
+ },
113
+ {
114
+ "key": "S3_ACCESSKEY",
115
+ "value": "${S3_ACCESS_KEY}",
116
+ "description": "S3 access key provisioned by Onebox.",
117
+ "required": true
118
+ },
119
+ {
120
+ "key": "S3_SECRETKEY",
121
+ "value": "${S3_SECRET_KEY}",
122
+ "description": "S3 secret key provisioned by Onebox.",
123
+ "required": true
124
+ }
125
+ ],
126
+ "platformRequirements": {
127
+ "mongodb": true,
128
+ "s3": true
129
+ },
130
+ "minOneboxVersion": "2.2.0"
131
+ },
132
+ "apps/ghost/app.json": {
133
+ "id": "ghost",
134
+ "name": "Ghost",
135
+ "description": "Professional publishing platform for blogs and newsletters",
136
+ "category": "CMS",
137
+ "iconName": "ghost",
138
+ "latestVersion": "1.0.0",
139
+ "versions": [
140
+ "1.0.0"
141
+ ],
142
+ "maintainer": "serve.zone"
143
+ },
144
+ "apps/ghost/versions/1.0.0/config.json": {
145
+ "image": "ghost:latest",
146
+ "port": 2368,
147
+ "envVars": [
148
+ {
149
+ "key": "database__client",
150
+ "value": "mysql",
151
+ "description": "Database client"
152
+ },
153
+ {
154
+ "key": "database__connection__host",
155
+ "value": "${MARIADB_HOST}",
156
+ "description": "Database host (auto-injected by platform)"
157
+ },
158
+ {
159
+ "key": "database__connection__port",
160
+ "value": "${MARIADB_PORT}",
161
+ "description": "Database port (auto-injected by platform)"
162
+ },
163
+ {
164
+ "key": "database__connection__user",
165
+ "value": "${MARIADB_USER}",
166
+ "description": "Database user (auto-injected by platform)"
167
+ },
168
+ {
169
+ "key": "database__connection__password",
170
+ "value": "${MARIADB_PASSWORD}",
171
+ "description": "Database password (auto-injected by platform)"
172
+ },
173
+ {
174
+ "key": "database__connection__database",
175
+ "value": "${MARIADB_DATABASE}",
176
+ "description": "Database name (auto-injected by platform)"
177
+ },
178
+ {
179
+ "key": "url",
180
+ "value": "https://${SERVICE_DOMAIN}",
181
+ "description": "Public URL of the blog"
182
+ }
183
+ ],
184
+ "platformRequirements": {
185
+ "mariadb": true
186
+ }
187
+ },
188
+ "apps/gitea/app.json": {
189
+ "id": "gitea",
190
+ "name": "Gitea",
191
+ "description": "Lightweight self-hosted Git service",
192
+ "category": "Development",
193
+ "iconName": "gitea",
194
+ "latestVersion": "1.0.0",
195
+ "versions": [
196
+ "1.0.0"
197
+ ],
198
+ "maintainer": "serve.zone"
199
+ },
200
+ "apps/gitea/versions/1.0.0/config.json": {
201
+ "image": "gitea/gitea:latest",
202
+ "port": 3000,
203
+ "envVars": [
204
+ {
205
+ "key": "GITEA__database__DB_TYPE",
206
+ "value": "mysql",
207
+ "description": "Database type"
208
+ },
209
+ {
210
+ "key": "GITEA__database__HOST",
211
+ "value": "${MARIADB_HOST}:${MARIADB_PORT}",
212
+ "description": "Database host (auto-injected by platform)"
213
+ },
214
+ {
215
+ "key": "GITEA__database__NAME",
216
+ "value": "${MARIADB_DATABASE}",
217
+ "description": "Database name (auto-injected by platform)"
218
+ },
219
+ {
220
+ "key": "GITEA__database__USER",
221
+ "value": "${MARIADB_USER}",
222
+ "description": "Database user (auto-injected by platform)"
223
+ },
224
+ {
225
+ "key": "GITEA__database__PASSWD",
226
+ "value": "${MARIADB_PASSWORD}",
227
+ "description": "Database password (auto-injected by platform)"
228
+ }
229
+ ],
230
+ "platformRequirements": {
231
+ "mariadb": true
232
+ }
233
+ },
234
+ "apps/gitops/app.json": {
235
+ "id": "gitops",
236
+ "name": "GitOps",
237
+ "description": "Operations dashboard for Git hosting, CI/CD secrets, pipeline logs, and documentation sync.",
238
+ "category": "Dev Tools",
239
+ "iconName": "git-branch",
240
+ "latestVersion": "1.0.0",
241
+ "versions": [
242
+ "1.0.0"
243
+ ],
244
+ "maintainer": "serve.zone",
245
+ "links": {
246
+ "Source": "https://code.foss.global/serve.zone/gitops",
247
+ "Docs": "https://serve.zone"
248
+ }
249
+ },
250
+ "apps/gitops/versions/1.0.0/config.json": {
251
+ "image": "code.foss.global/serve.zone/gitops:2.13.0",
252
+ "port": 3000,
253
+ "envVars": [
254
+ {
255
+ "key": "GITOPS_PORT",
256
+ "value": "3000",
257
+ "description": "Internal GitOps HTTP port inside the container.",
258
+ "required": true
259
+ },
260
+ {
261
+ "key": "GITOPS_ADMIN_USERNAME",
262
+ "value": "",
263
+ "description": "Initial admin username for the GitOps web UI.",
264
+ "required": true
265
+ },
266
+ {
267
+ "key": "GITOPS_ADMIN_PASSWORD",
268
+ "value": "",
269
+ "description": "Initial admin password for the GitOps web UI.",
270
+ "required": true
271
+ }
272
+ ],
273
+ "volumes": [
274
+ "/data/.serve.zone/gitops"
275
+ ],
276
+ "minOneboxVersion": "1.28.0"
277
+ },
278
+ "apps/grafana/app.json": {
279
+ "id": "grafana",
280
+ "name": "Grafana",
281
+ "description": "Open-source analytics and monitoring platform",
282
+ "category": "Monitoring",
283
+ "iconName": "grafana",
284
+ "latestVersion": "1.0.0",
285
+ "versions": [
286
+ "1.0.0"
287
+ ],
288
+ "maintainer": "serve.zone"
289
+ },
290
+ "apps/grafana/versions/1.0.0/config.json": {
291
+ "image": "grafana/grafana:latest",
292
+ "port": 3000,
293
+ "envVars": [
294
+ {
295
+ "key": "GF_SECURITY_ADMIN_PASSWORD",
296
+ "value": "",
297
+ "description": "Admin password",
298
+ "required": true
299
+ }
300
+ ]
301
+ },
302
+ "apps/mariadb/app.json": {
303
+ "id": "mariadb",
304
+ "name": "MariaDB",
305
+ "description": "Community-developed relational database forked from MySQL",
306
+ "category": "Databases",
307
+ "iconName": "mariadb",
308
+ "latestVersion": "1.0.0",
309
+ "versions": [
310
+ "1.0.0"
311
+ ],
312
+ "maintainer": "serve.zone"
313
+ },
314
+ "apps/mariadb/versions/1.0.0/config.json": {
315
+ "image": "mariadb:latest",
316
+ "port": 3306,
317
+ "envVars": [
318
+ {
319
+ "key": "MARIADB_ROOT_PASSWORD",
320
+ "value": "",
321
+ "description": "Root password",
322
+ "required": true
323
+ }
324
+ ]
325
+ },
326
+ "apps/mattermost/app.json": {
327
+ "id": "mattermost",
328
+ "name": "Mattermost",
329
+ "description": "Open-source team messaging and collaboration platform",
330
+ "category": "Communication",
331
+ "iconName": "mattermost",
332
+ "latestVersion": "1.0.0",
333
+ "versions": [
334
+ "1.0.0"
335
+ ],
336
+ "maintainer": "serve.zone"
337
+ },
338
+ "apps/mattermost/versions/1.0.0/config.json": {
339
+ "image": "mattermost/mattermost-team-edition:latest",
340
+ "port": 8065
341
+ },
342
+ "apps/n8n/app.json": {
343
+ "id": "n8n",
344
+ "name": "n8n",
345
+ "description": "Workflow automation platform with visual editor",
346
+ "category": "Automation",
347
+ "iconName": "n8n",
348
+ "latestVersion": "1.0.0",
349
+ "versions": [
350
+ "1.0.0"
351
+ ],
352
+ "maintainer": "serve.zone"
353
+ },
354
+ "apps/n8n/versions/1.0.0/config.json": {
355
+ "image": "n8nio/n8n:latest",
356
+ "port": 5678
357
+ },
358
+ "apps/nextcloud/app.json": {
359
+ "id": "nextcloud",
360
+ "name": "Nextcloud",
361
+ "description": "Self-hosted productivity and file sharing platform",
362
+ "category": "Cloud Storage",
363
+ "iconName": "nextcloud",
364
+ "latestVersion": "1.0.0",
365
+ "versions": [
366
+ "1.0.0"
367
+ ],
368
+ "maintainer": "serve.zone"
369
+ },
370
+ "apps/nextcloud/versions/1.0.0/config.json": {
371
+ "image": "nextcloud:latest",
372
+ "port": 80,
373
+ "envVars": [
374
+ {
375
+ "key": "MYSQL_HOST",
376
+ "value": "${MARIADB_HOST}",
377
+ "description": "Database host (auto-injected by platform)"
378
+ },
379
+ {
380
+ "key": "MYSQL_USER",
381
+ "value": "${MARIADB_USER}",
382
+ "description": "Database user (auto-injected by platform)"
383
+ },
384
+ {
385
+ "key": "MYSQL_PASSWORD",
386
+ "value": "${MARIADB_PASSWORD}",
387
+ "description": "Database password (auto-injected by platform)"
388
+ },
389
+ {
390
+ "key": "MYSQL_DATABASE",
391
+ "value": "${MARIADB_DATABASE}",
392
+ "description": "Database name (auto-injected by platform)"
393
+ }
394
+ ],
395
+ "platformRequirements": {
396
+ "mariadb": true,
397
+ "valkey": true
398
+ }
399
+ },
400
+ "apps/nginx/app.json": {
401
+ "id": "nginx",
402
+ "name": "Nginx",
403
+ "description": "High-performance web server and reverse proxy",
404
+ "category": "Web Servers",
405
+ "iconName": "nginx",
406
+ "latestVersion": "1.0.0",
407
+ "versions": [
408
+ "1.0.0"
409
+ ],
410
+ "maintainer": "serve.zone"
411
+ },
412
+ "apps/nginx/versions/1.0.0/config.json": {
413
+ "image": "nginx:alpine",
414
+ "port": 80
415
+ },
416
+ "apps/plausible/app.json": {
417
+ "id": "plausible",
418
+ "name": "Plausible",
419
+ "description": "Privacy-friendly web analytics platform",
420
+ "category": "Analytics",
421
+ "iconName": "plausible",
422
+ "latestVersion": "1.0.0",
423
+ "versions": [
424
+ "1.0.0"
425
+ ],
426
+ "maintainer": "serve.zone"
427
+ },
428
+ "apps/plausible/versions/1.0.0/config.json": {
429
+ "image": "plausible/analytics:latest",
430
+ "port": 8000,
431
+ "platformRequirements": {
432
+ "clickhouse": true
433
+ }
434
+ },
435
+ "apps/portainer/app.json": {
436
+ "id": "portainer",
437
+ "name": "Portainer",
438
+ "description": "Container management UI for Docker environments",
439
+ "category": "Infrastructure",
440
+ "iconName": "portainer",
441
+ "latestVersion": "1.0.0",
442
+ "versions": [
443
+ "1.0.0"
444
+ ],
445
+ "maintainer": "serve.zone"
446
+ },
447
+ "apps/portainer/versions/1.0.0/config.json": {
448
+ "image": "portainer/portainer-ce:latest",
449
+ "port": 9000
450
+ },
451
+ "apps/postgres/app.json": {
452
+ "id": "postgres",
453
+ "name": "PostgreSQL",
454
+ "description": "Advanced open-source relational database",
455
+ "category": "Databases",
456
+ "iconName": "postgres",
457
+ "latestVersion": "1.0.0",
458
+ "versions": [
459
+ "1.0.0"
460
+ ],
461
+ "maintainer": "serve.zone"
462
+ },
463
+ "apps/postgres/versions/1.0.0/config.json": {
464
+ "image": "postgres:16-alpine",
465
+ "port": 5432,
466
+ "envVars": [
467
+ {
468
+ "key": "POSTGRES_PASSWORD",
469
+ "value": "",
470
+ "description": "Superuser password",
471
+ "required": true
472
+ },
473
+ {
474
+ "key": "POSTGRES_USER",
475
+ "value": "postgres",
476
+ "description": "Superuser name"
477
+ },
478
+ {
479
+ "key": "POSTGRES_DB",
480
+ "value": "postgres",
481
+ "description": "Default database name"
482
+ }
483
+ ]
484
+ },
485
+ "apps/rustdesk-server/app.json": {
486
+ "id": "rustdesk-server",
487
+ "name": "RustDesk Server",
488
+ "description": "Self-hosted RustDesk ID and relay server for remote desktop clients",
489
+ "category": "Remote Access",
490
+ "iconName": "monitor",
491
+ "latestVersion": "1.0.0",
492
+ "versions": [
493
+ "1.0.0"
494
+ ],
495
+ "maintainer": "serve.zone",
496
+ "links": {
497
+ "Website": "https://rustdesk.com/",
498
+ "Docs": "https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/docker/"
499
+ }
500
+ },
501
+ "apps/rustdesk-server/versions/1.0.0/config.json": {
502
+ "image": "rustdesk/rustdesk-server-s6:latest",
503
+ "port": 21116,
504
+ "envVars": [
505
+ {
506
+ "key": "RELAY",
507
+ "value": "${SERVICE_DOMAIN}:21116",
508
+ "description": "Public RustDesk relay address advertised to clients",
509
+ "required": true
510
+ },
511
+ {
512
+ "key": "ENCRYPTED_ONLY",
513
+ "value": "0",
514
+ "description": "Set to 1 to require encrypted client connections only"
515
+ }
516
+ ]
517
+ },
518
+ "apps/siprouter/app.json": {
519
+ "id": "siprouter",
520
+ "name": "SIP Router",
521
+ "description": "SIP B2BUA, WebRTC softphone bridge, voicemail, fax, and live telephony operations dashboard.",
522
+ "category": "Communication",
523
+ "iconName": "phone",
524
+ "latestVersion": "1.0.0",
525
+ "versions": [
526
+ "1.0.0"
527
+ ],
528
+ "maintainer": "serve.zone",
529
+ "links": {
530
+ "Source": "https://code.foss.global/serve.zone/siprouter",
531
+ "Docs": "https://serve.zone"
532
+ }
533
+ },
534
+ "apps/siprouter/versions/1.0.0/config.json": {
535
+ "image": "code.foss.global/serve.zone/siprouter:1.28.0",
536
+ "port": 3060,
537
+ "envVars": [
538
+ {
539
+ "key": "SIPROUTER_LAN_IP",
540
+ "value": "",
541
+ "description": "LAN or public IP address that SIP devices/providers should use for SIP and SDP.",
542
+ "required": true
543
+ },
544
+ {
545
+ "key": "SIPROUTER_PUBLIC_IP",
546
+ "value": "",
547
+ "description": "Optional public IP seed for provider registration Contact/Via headers. Leave empty for provider-detected IP."
548
+ },
549
+ {
550
+ "key": "SIPROUTER_LAN_PORT",
551
+ "value": "5070",
552
+ "description": "SIP signaling port used by the Rust proxy engine.",
553
+ "required": true
554
+ },
555
+ {
556
+ "key": "SIPROUTER_WEB_UI_PORT",
557
+ "value": "3060",
558
+ "description": "Internal dashboard HTTP/WebSocket port.",
559
+ "required": true
560
+ },
561
+ {
562
+ "key": "SIPROUTER_RTP_PORT_MIN",
563
+ "value": "20000",
564
+ "description": "First UDP RTP media port.",
565
+ "required": true
566
+ },
567
+ {
568
+ "key": "SIPROUTER_RTP_PORT_MAX",
569
+ "value": "20200",
570
+ "description": "Last UDP RTP media port.",
571
+ "required": true
572
+ },
573
+ {
574
+ "key": "SIPROUTER_INITIAL_DEVICE_ID",
575
+ "value": "desk-phone",
576
+ "description": "Initial SIP device ID used when the first SmartData config is created.",
577
+ "required": true
578
+ },
579
+ {
580
+ "key": "SIPROUTER_INITIAL_DEVICE_DISPLAY_NAME",
581
+ "value": "Desk Phone",
582
+ "description": "Initial SIP device display name.",
583
+ "required": true
584
+ },
585
+ {
586
+ "key": "SIPROUTER_INITIAL_DEVICE_ADDRESS",
587
+ "value": "",
588
+ "description": "Expected LAN IP address of the initial SIP device.",
589
+ "required": true
590
+ },
591
+ {
592
+ "key": "SIPROUTER_INITIAL_DEVICE_EXTENSION",
593
+ "value": "100",
594
+ "description": "Initial SIP device extension.",
595
+ "required": true
596
+ }
597
+ ],
598
+ "publishedPorts": [
599
+ {
600
+ "targetPort": 3060,
601
+ "publishedPort": 3060,
602
+ "protocol": "tcp"
603
+ },
604
+ {
605
+ "targetPort": 5070,
606
+ "publishedPort": 5070,
607
+ "protocol": "udp"
608
+ },
609
+ {
610
+ "targetPort": 5070,
611
+ "publishedPort": 5070,
612
+ "protocol": "tcp"
613
+ },
614
+ {
615
+ "targetPort": 5061,
616
+ "publishedPort": 5061,
617
+ "protocol": "udp"
618
+ },
619
+ {
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"
630
+ }
631
+ ],
632
+ "platformRequirements": {
633
+ "mongodb": true,
634
+ "s3": true
635
+ },
636
+ "minOneboxVersion": "1.28.0"
637
+ },
638
+ "apps/uptime-kuma/app.json": {
639
+ "id": "uptime-kuma",
640
+ "name": "Uptime Kuma",
641
+ "description": "Self-hosted uptime monitoring tool",
642
+ "category": "Monitoring",
643
+ "iconName": "uptime-kuma",
644
+ "latestVersion": "1.0.0",
645
+ "versions": [
646
+ "1.0.0"
647
+ ],
648
+ "maintainer": "serve.zone"
649
+ },
650
+ "apps/uptime-kuma/versions/1.0.0/config.json": {
651
+ "image": "louislam/uptime-kuma:latest",
652
+ "port": 3001
653
+ },
654
+ "apps/valkey/app.json": {
655
+ "id": "valkey",
656
+ "name": "Valkey",
657
+ "description": "Open-source in-memory data store for caching and message brokering",
658
+ "category": "Databases",
659
+ "iconName": "database",
660
+ "latestVersion": "1.0.0",
661
+ "versions": [
662
+ "1.0.0"
663
+ ],
664
+ "maintainer": "serve.zone"
665
+ },
666
+ "apps/valkey/versions/1.0.0/config.json": {
667
+ "image": "valkey/valkey:9.1.0-alpine",
668
+ "port": 6379
669
+ },
670
+ "apps/vaultwarden/app.json": {
671
+ "id": "vaultwarden",
672
+ "name": "Vaultwarden",
673
+ "description": "Lightweight Bitwarden-compatible password manager server",
674
+ "category": "Security",
675
+ "iconName": "vaultwarden",
676
+ "latestVersion": "1.0.0",
677
+ "versions": [
678
+ "1.0.0"
679
+ ],
680
+ "maintainer": "serve.zone"
681
+ },
682
+ "apps/vaultwarden/versions/1.0.0/config.json": {
683
+ "image": "vaultwarden/server:latest",
684
+ "port": 80
685
+ },
686
+ "apps/wordpress/app.json": {
687
+ "id": "wordpress",
688
+ "name": "WordPress",
689
+ "description": "Popular open-source content management system",
690
+ "category": "CMS",
691
+ "iconName": "wordpress",
692
+ "latestVersion": "1.0.0",
693
+ "versions": [
694
+ "1.0.0"
695
+ ],
696
+ "maintainer": "serve.zone"
697
+ },
698
+ "apps/wordpress/versions/1.0.0/config.json": {
699
+ "image": "wordpress:latest",
700
+ "port": 80,
701
+ "envVars": [
702
+ {
703
+ "key": "WORDPRESS_DB_HOST",
704
+ "value": "${MARIADB_HOST}:${MARIADB_PORT}",
705
+ "description": "Database host (auto-injected by platform)"
706
+ },
707
+ {
708
+ "key": "WORDPRESS_DB_USER",
709
+ "value": "${MARIADB_USER}",
710
+ "description": "Database user (auto-injected by platform)"
711
+ },
712
+ {
713
+ "key": "WORDPRESS_DB_PASSWORD",
714
+ "value": "${MARIADB_PASSWORD}",
715
+ "description": "Database password (auto-injected by platform)"
716
+ },
717
+ {
718
+ "key": "WORDPRESS_DB_NAME",
719
+ "value": "${MARIADB_DATABASE}",
720
+ "description": "Database name (auto-injected by platform)"
721
+ }
722
+ ],
723
+ "platformRequirements": {
724
+ "mariadb": true
725
+ }
726
+ },
727
+ "appstore.json": {
728
+ "schemaVersion": 1,
729
+ "updatedAt": "2026-05-18T00:00:00Z",
730
+ "apps": [
731
+ {
732
+ "id": "nginx",
733
+ "name": "Nginx",
734
+ "description": "High-performance web server and reverse proxy. Lightweight, fast, and battle-tested.",
735
+ "category": "Web Server",
736
+ "iconName": "globe",
737
+ "latestVersion": "1.0.0",
738
+ "tags": [
739
+ "web",
740
+ "proxy"
741
+ ]
742
+ },
743
+ {
744
+ "id": "wordpress",
745
+ "name": "WordPress",
746
+ "description": "The world's most popular content management system. Powers over 40% of the web.",
747
+ "category": "CMS",
748
+ "iconName": "file-text",
749
+ "latestVersion": "1.0.0",
750
+ "tags": [
751
+ "cms",
752
+ "blog"
753
+ ]
754
+ },
755
+ {
756
+ "id": "ghost",
757
+ "name": "Ghost",
758
+ "description": "Modern publishing platform for creating professional blogs and newsletters.",
759
+ "category": "CMS",
760
+ "iconName": "book-open",
761
+ "latestVersion": "1.0.0",
762
+ "tags": [
763
+ "cms",
764
+ "blog",
765
+ "newsletter"
766
+ ]
767
+ },
768
+ {
769
+ "id": "gitea",
770
+ "name": "Gitea",
771
+ "description": "Lightweight self-hosted Git service. Easy to install and maintain.",
772
+ "category": "Dev Tools",
773
+ "iconName": "git-branch",
774
+ "latestVersion": "1.0.0",
775
+ "tags": [
776
+ "git",
777
+ "devtools"
778
+ ]
779
+ },
780
+ {
781
+ "id": "gitops",
782
+ "name": "GitOps",
783
+ "description": "Operations dashboard for Git hosting, CI/CD secrets, pipeline logs, and documentation sync.",
784
+ "category": "Dev Tools",
785
+ "iconName": "git-branch",
786
+ "latestVersion": "1.0.0",
787
+ "tags": [
788
+ "git",
789
+ "devtools",
790
+ "ci",
791
+ "secrets"
792
+ ]
793
+ },
794
+ {
795
+ "id": "nextcloud",
796
+ "name": "Nextcloud",
797
+ "description": "Self-hosted file sync and share platform. Your own private cloud.",
798
+ "category": "Storage",
799
+ "iconName": "package",
800
+ "latestVersion": "1.0.0",
801
+ "tags": [
802
+ "storage",
803
+ "cloud"
804
+ ]
805
+ },
806
+ {
807
+ "id": "grafana",
808
+ "name": "Grafana",
809
+ "description": "Open-source observability platform for metrics, logs, and traces visualization.",
810
+ "category": "Monitoring",
811
+ "iconName": "monitor",
812
+ "latestVersion": "1.0.0",
813
+ "tags": [
814
+ "monitoring",
815
+ "observability"
816
+ ]
817
+ },
818
+ {
819
+ "id": "uptime-kuma",
820
+ "name": "Uptime Kuma",
821
+ "description": "Self-hosted monitoring tool. Beautiful UI for tracking uptime of services.",
822
+ "category": "Monitoring",
823
+ "iconName": "monitor",
824
+ "latestVersion": "1.0.0",
825
+ "tags": [
826
+ "monitoring",
827
+ "uptime"
828
+ ]
829
+ },
830
+ {
831
+ "id": "plausible",
832
+ "name": "Plausible Analytics",
833
+ "description": "Privacy-friendly web analytics. No cookies, GDPR compliant by design.",
834
+ "category": "Analytics",
835
+ "iconName": "monitor",
836
+ "latestVersion": "1.0.0",
837
+ "tags": [
838
+ "analytics"
839
+ ]
840
+ },
841
+ {
842
+ "id": "vaultwarden",
843
+ "name": "Vaultwarden",
844
+ "description": "Lightweight Bitwarden-compatible password manager server.",
845
+ "category": "Security",
846
+ "iconName": "shield",
847
+ "latestVersion": "1.0.0",
848
+ "tags": [
849
+ "security",
850
+ "passwords"
851
+ ]
852
+ },
853
+ {
854
+ "id": "n8n",
855
+ "name": "N8N",
856
+ "description": "Workflow automation tool. Connect anything to everything with a visual editor.",
857
+ "category": "Automation",
858
+ "iconName": "server",
859
+ "latestVersion": "1.0.0",
860
+ "tags": [
861
+ "automation",
862
+ "workflow"
863
+ ]
864
+ },
865
+ {
866
+ "id": "mattermost",
867
+ "name": "Mattermost",
868
+ "description": "Open-source Slack alternative for team communication and collaboration.",
869
+ "category": "Communication",
870
+ "iconName": "mail",
871
+ "latestVersion": "1.0.0",
872
+ "tags": [
873
+ "communication",
874
+ "chat"
875
+ ]
876
+ },
877
+ {
878
+ "id": "siprouter",
879
+ "name": "SIP Router",
880
+ "description": "SIP B2BUA, WebRTC softphone bridge, voicemail, fax, and live telephony operations dashboard.",
881
+ "category": "Communication",
882
+ "iconName": "phone",
883
+ "latestVersion": "1.0.0",
884
+ "tags": [
885
+ "sip",
886
+ "telephony",
887
+ "webrtc",
888
+ "voice",
889
+ "pbx"
890
+ ]
891
+ },
892
+ {
893
+ "id": "portainer",
894
+ "name": "Portainer",
895
+ "description": "Docker management UI. Monitor and manage containers from a web interface.",
896
+ "category": "Dev Tools",
897
+ "iconName": "package",
898
+ "latestVersion": "1.0.0",
899
+ "tags": [
900
+ "docker",
901
+ "devtools"
902
+ ]
903
+ },
904
+ {
905
+ "id": "rustdesk-server",
906
+ "name": "RustDesk Server",
907
+ "description": "Self-hosted RustDesk ID and relay server for secure remote desktop access.",
908
+ "category": "Remote Access",
909
+ "iconName": "monitor",
910
+ "latestVersion": "1.0.0",
911
+ "tags": [
912
+ "remote-desktop",
913
+ "relay",
914
+ "self-hosted"
915
+ ]
916
+ },
917
+ {
918
+ "id": "cloudly",
919
+ "name": "Cloudly",
920
+ "description": "Multi-node serve.zone control plane for clusters, workload services, domains, and deployments.",
921
+ "category": "Dev Tools",
922
+ "iconName": "server",
923
+ "latestVersion": "1.0.0",
924
+ "tags": [
925
+ "serve.zone",
926
+ "control-plane",
927
+ "clusters",
928
+ "deployments"
929
+ ]
930
+ },
931
+ {
932
+ "id": "valkey",
933
+ "name": "Valkey",
934
+ "description": "Open-source in-memory data store used as database, cache, and message broker.",
935
+ "category": "Database",
936
+ "iconName": "database",
937
+ "latestVersion": "1.0.0",
938
+ "tags": [
939
+ "database",
940
+ "cache"
941
+ ]
942
+ },
943
+ {
944
+ "id": "postgres",
945
+ "name": "PostgreSQL",
946
+ "description": "Advanced open-source relational database. Reliable and feature-rich.",
947
+ "category": "Database",
948
+ "iconName": "database",
949
+ "latestVersion": "1.0.0",
950
+ "tags": [
951
+ "database",
952
+ "sql"
953
+ ]
954
+ },
955
+ {
956
+ "id": "mariadb",
957
+ "name": "MariaDB",
958
+ "description": "Community-developed fork of MySQL. Drop-in replacement with enhanced features.",
959
+ "category": "Database",
960
+ "iconName": "database",
961
+ "latestVersion": "1.0.0",
962
+ "tags": [
963
+ "database",
964
+ "sql",
965
+ "mysql"
966
+ ]
967
+ },
968
+ {
969
+ "id": "adminer",
970
+ "name": "Adminer",
971
+ "description": "Database management tool in a single PHP file. Supports MySQL, PostgreSQL, SQLite.",
972
+ "category": "Dev Tools",
973
+ "iconName": "database",
974
+ "latestVersion": "1.0.0",
975
+ "tags": [
976
+ "database",
977
+ "devtools"
978
+ ]
979
+ }
980
+ ]
981
+ }
982
+ },
983
+ "textFiles": {}
984
+ };
985
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5nZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19jbGllbnQvZGF0YS5nZW5lcmF0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEVBQTRFO0FBSTVFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUF5QjtJQUN2RCxhQUFhLEVBQUUsMEJBQTBCO0lBQ3pDLFdBQVcsRUFBRTtRQUNYLHVCQUF1QixFQUFFO1lBQ3ZCLElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFLFNBQVM7WUFDakIsYUFBYSxFQUFFLHlEQUF5RDtZQUN4RSxVQUFVLEVBQUUsV0FBVztZQUN2QixVQUFVLEVBQUUsU0FBUztZQUNyQixlQUFlLEVBQUUsT0FBTztZQUN4QixVQUFVLEVBQUU7Z0JBQ1YsT0FBTzthQUNSO1lBQ0QsWUFBWSxFQUFFLFlBQVk7U0FDM0I7UUFDRCx5Q0FBeUMsRUFBRTtZQUN6QyxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLE1BQU0sRUFBRSxJQUFJO1NBQ2I7UUFDRCx1QkFBdUIsRUFBRTtZQUN2QixJQUFJLEVBQUUsU0FBUztZQUNmLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLGFBQWEsRUFBRSxnR0FBZ0c7WUFDL0csVUFBVSxFQUFFLFdBQVc7WUFDdkIsVUFBVSxFQUFFLFFBQVE7WUFDcEIsZUFBZSxFQUFFLE9BQU87WUFDeEIsVUFBVSxFQUFFO2dCQUNWLE9BQU87YUFDUjtZQUNELFlBQVksRUFBRSxZQUFZO1lBQzFCLE9BQU8sRUFBRTtnQkFDUCxRQUFRLEVBQUUsNkNBQTZDO2dCQUN2RCxNQUFNLEVBQUUsb0JBQW9CO2FBQzdCO1NBQ0Y7UUFDRCx5Q0FBeUMsRUFBRTtZQUN6QyxPQUFPLEVBQUUsNENBQTRDO1lBQ3JELE1BQU0sRUFBRSxFQUFFO1lBQ1YsU0FBUyxFQUFFO2dCQUNUO29CQUNFLEtBQUssRUFBRSx1QkFBdUI7b0JBQzlCLE9BQU8sRUFBRSxZQUFZO29CQUNyQixhQUFhLEVBQUUsOEJBQThC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