@serve.zone/appstore 32.1.1 → 32.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serve.zone/appstore",
3
- "version": "32.1.1",
3
+ "version": "32.3.0",
4
4
  "private": false,
5
5
  "description": "serve.zone App Store metadata, parser, and resolver client.",
6
6
  "type": "module",
@@ -14,10 +14,10 @@
14
14
  "@serve.zone/interfaces": "32.3.0"
15
15
  },
16
16
  "devDependencies": {
17
- "@git.zone/tsbuild": "^4.6.0",
17
+ "@git.zone/tsbuild": "^5.0.0",
18
18
  "@git.zone/tsdoc": "2.2.2",
19
- "@git.zone/tstest": "6.2.0",
20
- "@types/node": "26.6.1"
19
+ "@git.zone/tstest": "6.3.0",
20
+ "@types/node": "26.6.2"
21
21
  },
22
22
  "files": [
23
23
  "apps/**/*",
package/readme.md CHANGED
@@ -33,7 +33,7 @@ The App Store currently lists 21 app templates.
33
33
  | App ID | Name | App Store category | Image | Port |
34
34
  | --- | --- | --- | --- | --- |
35
35
  | `adminer` | Adminer | Dev Tools | `adminer:latest` | `8080` |
36
- | `cloudly` | Cloudly | Dev Tools | `code.foss.global/serve.zone/cloudly@sha256:9731dcf7d56567235017008994a00b2a4eeb7fd64a7d801bee0933fd6eede007` | `3000` |
36
+ | `cloudly` | Cloudly | Dev Tools | `code.foss.global/serve.zone/cloudly@sha256:26a7469181059aca2a5505d2f86e8f6286ebc0b1e0dee0df2262bfe3df2d1f06` | `3000` |
37
37
  | `ghost` | Ghost | CMS | `ghost:latest` | `2368` |
38
38
  | `gitea` | Gitea | Dev Tools | `gitea/gitea:latest` | `3000` |
39
39
  | `gitops` | GitOps | Dev Tools | `code.foss.global/serve.zone/gitops:2.13.0` | `3000` |
@@ -64,7 +64,7 @@ Some templates ask Onebox to provision local platform services and inject connec
64
64
 
65
65
  | App ID | Requirements | Notes |
66
66
  | --- | --- | --- |
67
- | `cloudly` | MongoDB, S3 | Version `1.2.0` pins Cloudly `32.9.0` and requires Onebox `32.4.0`. Startup migrates the data to `0.20.0`, from `0.17.0` on Cloudly 32.2 or from `0.10.0` on the `1.1.10` image, while preserving the `1.1.10` runtime contract, existing user and storage identities, and OIDC bindings. Cluster relay registrations that name no authority are removed, so a live relay registers again. Both the existing Secrets v2 keyring and operator-approved WorkloadInit authority are required encrypted inputs delivered as separate root-owned `0400` files; the public environment contains only their fixed paths. Complete cutover retirement and verify a fresh restorable checkpoint before upgrading. Rollback remains full-restore-only. |
67
+ | `cloudly` | MongoDB, S3 | Version `1.3.0` pins Cloudly `33.0.0` and requires Onebox `32.4.0`. It keeps the `1.2.1` runtime contract and is breaking: startup migrates the data from `0.20.0` to `0.21.0`, dropping the relay certificate and DNS collections of Cloudly's retired Cloudflare and Let's Encrypt integration and logging every relay name whose A record Cloudly had written at Cloudflare, which the operator removes at the provider. dcrouter holds every cluster relay name's A record and certificate from then on, `SERVEZONE_SSLMODE=letsencrypt` is refused, and the typed API changes as the Cloudly 33.0.0 changelog lists. Stop Cloudly and take a verified backup before upgrading; rollback is full-restore-only. From `1.1.10` or earlier, startup first runs the `1.2.0` steps from `0.10.0` and needs completed Secrets v2 cutover retirement. Both the existing Secrets v2 keyring and operator-approved WorkloadInit authority are required encrypted inputs delivered as separate root-owned `0400` files; the public environment contains only their fixed paths. |
68
68
  | `ghost` | MariaDB | Uses MySQL-style `database__connection__*` environment variables. |
69
69
  | `gitea` | MariaDB | Uses Gitea database environment variables with `${MARIADB_*}` placeholders. |
70
70
  | `nextcloud` | MariaDB, Valkey | Uses MySQL-compatible database variables. Valkey is declared as a platform requirement. |
@@ -34,7 +34,7 @@ export const appStorePackageData: IAppStorePackageData = {
34
34
  "description": "Multi-node serve.zone control plane for clusters, workload services, domains, and deployments.",
35
35
  "category": "Dev Tools",
36
36
  "iconName": "server",
37
- "latestVersion": "1.2.0",
37
+ "latestVersion": "1.3.0",
38
38
  "versions": [
39
39
  "1.0.0",
40
40
  "1.1.0",
@@ -48,7 +48,9 @@ export const appStorePackageData: IAppStorePackageData = {
48
48
  "1.1.8",
49
49
  "1.1.9",
50
50
  "1.1.10",
51
- "1.2.0"
51
+ "1.2.0",
52
+ "1.2.1",
53
+ "1.3.0"
52
54
  ],
53
55
  "maintainer": "serve.zone",
54
56
  "links": {
@@ -1990,6 +1992,352 @@ export const appStorePackageData: IAppStorePackageData = {
1990
1992
  "expectedStatus": 200
1991
1993
  }
1992
1994
  },
1995
+ "apps/cloudly/versions/1.2.1/config.json": {
1996
+ "image": "code.foss.global/serve.zone/cloudly@sha256:f0da8c0ef826d2e044aa49ec1b59533f7be16c372357dbf818fe488ccdc5b0c9",
1997
+ "targetPorts": [
1998
+ {
1999
+ "name": "web",
2000
+ "port": 3000,
2001
+ "protocol": "http",
2002
+ "default": true
2003
+ }
2004
+ ],
2005
+ "envVars": [
2006
+ {
2007
+ "key": "SERVEZONE_ENVIRONMENT",
2008
+ "value": "production",
2009
+ "description": "Cloudly runtime environment.",
2010
+ "required": true
2011
+ },
2012
+ {
2013
+ "key": "SERVEZONE_PUBLIC_ORIGIN",
2014
+ "value": "https://${SERVICE_DOMAIN}",
2015
+ "description": "Canonical public Cloudly origin including protocol and optional public port.",
2016
+ "required": true
2017
+ },
2018
+ {
2019
+ "key": "SERVEZONE_LISTENPORT",
2020
+ "value": "3000",
2021
+ "description": "Internal Cloudly HTTP port inside the container.",
2022
+ "required": true
2023
+ },
2024
+ {
2025
+ "key": "SERVEZONE_SSLMODE",
2026
+ "value": "external",
2027
+ "description": "Use external TLS termination through Onebox or dcrouter.",
2028
+ "required": true
2029
+ },
2030
+ {
2031
+ "key": "SERVEZONE_SECRET_KEYRING_PATH",
2032
+ "value": "/run/secrets/cloudly-secrets-v2-keyring.json",
2033
+ "description": "Path to the Cloudly Secrets v2 keyring mounted by Onebox; the keyring value is never placed in the public environment.",
2034
+ "required": true
2035
+ },
2036
+ {
2037
+ "key": "SERVEZONE_SECRET_KEYRING_FILE",
2038
+ "description": "Existing Cloudly Secrets v2 keyring. Onebox stores it encrypted and mounts it only as a root-readable file; retain the existing keyring when upgrading.",
2039
+ "required": true,
2040
+ "secret": true,
2041
+ "delivery": {
2042
+ "type": "file",
2043
+ "targetPath": "/run/secrets/cloudly-secrets-v2-keyring.json",
2044
+ "uid": 0,
2045
+ "gid": 0,
2046
+ "mode": 256
2047
+ }
2048
+ },
2049
+ {
2050
+ "key": "SERVEZONE_WORKLOADINIT_APPROVAL_PATH",
2051
+ "value": "/run/secrets/cloudly-workloadinit-approval.json",
2052
+ "description": "Private WorkloadInit release-approval artifact mounted by Onebox for Coreflow secret-runtime registration.",
2053
+ "required": true
2054
+ },
2055
+ {
2056
+ "key": "SERVEZONE_WORKLOADINIT_APPROVAL_FILE",
2057
+ "description": "Operator-approved WorkloadInit release authority. Onebox stores it encrypted and mounts it only as a root-readable file.",
2058
+ "required": true,
2059
+ "secret": true,
2060
+ "delivery": {
2061
+ "type": "file",
2062
+ "targetPath": "/run/secrets/cloudly-workloadinit-approval.json",
2063
+ "uid": 0,
2064
+ "gid": 0,
2065
+ "mode": 256
2066
+ }
2067
+ },
2068
+ {
2069
+ "key": "MONGODB_URL",
2070
+ "value": "${MONGODB_URI}",
2071
+ "description": "Authenticated MongoDB wire-protocol URL provisioned by Onebox Corestore.",
2072
+ "required": true
2073
+ },
2074
+ {
2075
+ "key": "MONGODB_NAME",
2076
+ "value": "${MONGODB_DATABASE}",
2077
+ "description": "MongoDB wire-protocol database name provisioned by Onebox Corestore.",
2078
+ "required": true
2079
+ },
2080
+ {
2081
+ "key": "MONGODB_USER",
2082
+ "value": "${MONGODB_USERNAME}",
2083
+ "description": "MongoDB wire-protocol username provisioned by Onebox Corestore.",
2084
+ "required": true
2085
+ },
2086
+ {
2087
+ "key": "MONGODB_PASS",
2088
+ "value": "${MONGODB_PASSWORD}",
2089
+ "description": "MongoDB wire-protocol password provisioned by Onebox Corestore.",
2090
+ "required": true
2091
+ },
2092
+ {
2093
+ "key": "S3_ENDPOINT",
2094
+ "value": "onebox-corestore",
2095
+ "description": "S3 endpoint host provisioned by Onebox Corestore.",
2096
+ "required": true
2097
+ },
2098
+ {
2099
+ "key": "S3_PORT",
2100
+ "value": "9000",
2101
+ "description": "S3 endpoint port provisioned by Onebox Corestore.",
2102
+ "required": true
2103
+ },
2104
+ {
2105
+ "key": "S3_USESSL",
2106
+ "value": "false",
2107
+ "description": "Use plain HTTP for internal Corestore S3 traffic on the Onebox network.",
2108
+ "required": true
2109
+ },
2110
+ {
2111
+ "key": "S3_BUCKET",
2112
+ "value": "${S3_BUCKET}",
2113
+ "description": "S3 bucket provisioned by Onebox Corestore for Cloudly's registry.",
2114
+ "required": true
2115
+ },
2116
+ {
2117
+ "key": "S3_ACCESSKEY",
2118
+ "value": "${S3_ACCESS_KEY}",
2119
+ "description": "S3 access key provisioned by Onebox Corestore.",
2120
+ "required": true
2121
+ },
2122
+ {
2123
+ "key": "S3_SECRETKEY",
2124
+ "value": "${S3_SECRET_KEY}",
2125
+ "description": "S3 secret key provisioned by Onebox Corestore.",
2126
+ "required": true
2127
+ }
2128
+ ],
2129
+ "platformRequirements": {
2130
+ "mongodb": true,
2131
+ "s3": true
2132
+ },
2133
+ "platformOidc": {
2134
+ "redirectPath": "/auth/oidc/callback",
2135
+ "roles": [
2136
+ {
2137
+ "id": "admin",
2138
+ "label": "Administrator",
2139
+ "description": "Full Cloudly administration for this hosted instance."
2140
+ },
2141
+ {
2142
+ "id": "user",
2143
+ "label": "User",
2144
+ "description": "Standard authenticated Cloudly access for this hosted instance."
2145
+ }
2146
+ ],
2147
+ "environmentVariables": {
2148
+ "issuerUrl": "SERVEZONE_PLATFORM_OIDC_ISSUER",
2149
+ "clientId": "SERVEZONE_PLATFORM_OIDC_CLIENT_ID",
2150
+ "clientSecret": "SERVEZONE_PLATFORM_OIDC_CLIENT_SECRET",
2151
+ "redirectUri": "SERVEZONE_PLATFORM_OIDC_REDIRECT_URI",
2152
+ "audience": "SERVEZONE_PLATFORM_OIDC_AUDIENCE"
2153
+ },
2154
+ "clientAuthenticationMethod": "client_secret_basic"
2155
+ },
2156
+ "minOneboxVersion": "32.4.0",
2157
+ "changelog": "Move Cloudly to 32.9.1, a fixes-only patch over 32.9.0: a certificate request for a relay-namespace name whose relay is not enabled is refused, a route whose certificate Cloudly cannot obtain or whose hostname or service conflicts is left out of its cluster's ingress route table instead of freezing or withdrawing the whole table, and service admission refuses relay-namespace hostnames and hostnames another service's deployment route claim owns. 32.9.1 adds no data migration step and keeps the 1.2.0 runtime contract, so upgrading from 1.2.0 needs no manual review, data migration or backup. An installation on 1.1.10 or earlier still runs the 1.2.0 startup migration to 0.20.0 on this image: it requires completed Secrets v2 cutover retirement and a fresh verified restorable checkpoint, and rolling it back requires a full restore. Requires Onebox 32.4.0. Preserve existing user and storage identities, OIDC bindings, the encrypted keyring and WorkloadInit approval as dedicated root-readable files.",
2158
+ "breaking": false,
2159
+ "requiresManualReview": false,
2160
+ "migrationRequired": false,
2161
+ "backupBeforeUpgrade": false,
2162
+ "healthCheck": {
2163
+ "path": "/status",
2164
+ "port": 3000,
2165
+ "expectedStatus": 200
2166
+ }
2167
+ },
2168
+ "apps/cloudly/versions/1.3.0/config.json": {
2169
+ "image": "code.foss.global/serve.zone/cloudly@sha256:26a7469181059aca2a5505d2f86e8f6286ebc0b1e0dee0df2262bfe3df2d1f06",
2170
+ "targetPorts": [
2171
+ {
2172
+ "name": "web",
2173
+ "port": 3000,
2174
+ "protocol": "http",
2175
+ "default": true
2176
+ }
2177
+ ],
2178
+ "envVars": [
2179
+ {
2180
+ "key": "SERVEZONE_ENVIRONMENT",
2181
+ "value": "production",
2182
+ "description": "Cloudly runtime environment.",
2183
+ "required": true
2184
+ },
2185
+ {
2186
+ "key": "SERVEZONE_PUBLIC_ORIGIN",
2187
+ "value": "https://${SERVICE_DOMAIN}",
2188
+ "description": "Canonical public Cloudly origin including protocol and optional public port.",
2189
+ "required": true
2190
+ },
2191
+ {
2192
+ "key": "SERVEZONE_LISTENPORT",
2193
+ "value": "3000",
2194
+ "description": "Internal Cloudly HTTP port inside the container.",
2195
+ "required": true
2196
+ },
2197
+ {
2198
+ "key": "SERVEZONE_SSLMODE",
2199
+ "value": "external",
2200
+ "description": "Use external TLS termination through Onebox or dcrouter.",
2201
+ "required": true
2202
+ },
2203
+ {
2204
+ "key": "SERVEZONE_SECRET_KEYRING_PATH",
2205
+ "value": "/run/secrets/cloudly-secrets-v2-keyring.json",
2206
+ "description": "Path to the Cloudly Secrets v2 keyring mounted by Onebox; the keyring value is never placed in the public environment.",
2207
+ "required": true
2208
+ },
2209
+ {
2210
+ "key": "SERVEZONE_SECRET_KEYRING_FILE",
2211
+ "description": "Existing Cloudly Secrets v2 keyring. Onebox stores it encrypted and mounts it only as a root-readable file; retain the existing keyring when upgrading.",
2212
+ "required": true,
2213
+ "secret": true,
2214
+ "delivery": {
2215
+ "type": "file",
2216
+ "targetPath": "/run/secrets/cloudly-secrets-v2-keyring.json",
2217
+ "uid": 0,
2218
+ "gid": 0,
2219
+ "mode": 256
2220
+ }
2221
+ },
2222
+ {
2223
+ "key": "SERVEZONE_WORKLOADINIT_APPROVAL_PATH",
2224
+ "value": "/run/secrets/cloudly-workloadinit-approval.json",
2225
+ "description": "Private WorkloadInit release-approval artifact mounted by Onebox for Coreflow secret-runtime registration.",
2226
+ "required": true
2227
+ },
2228
+ {
2229
+ "key": "SERVEZONE_WORKLOADINIT_APPROVAL_FILE",
2230
+ "description": "Operator-approved WorkloadInit release authority. Onebox stores it encrypted and mounts it only as a root-readable file.",
2231
+ "required": true,
2232
+ "secret": true,
2233
+ "delivery": {
2234
+ "type": "file",
2235
+ "targetPath": "/run/secrets/cloudly-workloadinit-approval.json",
2236
+ "uid": 0,
2237
+ "gid": 0,
2238
+ "mode": 256
2239
+ }
2240
+ },
2241
+ {
2242
+ "key": "MONGODB_URL",
2243
+ "value": "${MONGODB_URI}",
2244
+ "description": "Authenticated MongoDB wire-protocol URL provisioned by Onebox Corestore.",
2245
+ "required": true
2246
+ },
2247
+ {
2248
+ "key": "MONGODB_NAME",
2249
+ "value": "${MONGODB_DATABASE}",
2250
+ "description": "MongoDB wire-protocol database name provisioned by Onebox Corestore.",
2251
+ "required": true
2252
+ },
2253
+ {
2254
+ "key": "MONGODB_USER",
2255
+ "value": "${MONGODB_USERNAME}",
2256
+ "description": "MongoDB wire-protocol username provisioned by Onebox Corestore.",
2257
+ "required": true
2258
+ },
2259
+ {
2260
+ "key": "MONGODB_PASS",
2261
+ "value": "${MONGODB_PASSWORD}",
2262
+ "description": "MongoDB wire-protocol password provisioned by Onebox Corestore.",
2263
+ "required": true
2264
+ },
2265
+ {
2266
+ "key": "S3_ENDPOINT",
2267
+ "value": "onebox-corestore",
2268
+ "description": "S3 endpoint host provisioned by Onebox Corestore.",
2269
+ "required": true
2270
+ },
2271
+ {
2272
+ "key": "S3_PORT",
2273
+ "value": "9000",
2274
+ "description": "S3 endpoint port provisioned by Onebox Corestore.",
2275
+ "required": true
2276
+ },
2277
+ {
2278
+ "key": "S3_USESSL",
2279
+ "value": "false",
2280
+ "description": "Use plain HTTP for internal Corestore S3 traffic on the Onebox network.",
2281
+ "required": true
2282
+ },
2283
+ {
2284
+ "key": "S3_BUCKET",
2285
+ "value": "${S3_BUCKET}",
2286
+ "description": "S3 bucket provisioned by Onebox Corestore for Cloudly's registry.",
2287
+ "required": true
2288
+ },
2289
+ {
2290
+ "key": "S3_ACCESSKEY",
2291
+ "value": "${S3_ACCESS_KEY}",
2292
+ "description": "S3 access key provisioned by Onebox Corestore.",
2293
+ "required": true
2294
+ },
2295
+ {
2296
+ "key": "S3_SECRETKEY",
2297
+ "value": "${S3_SECRET_KEY}",
2298
+ "description": "S3 secret key provisioned by Onebox Corestore.",
2299
+ "required": true
2300
+ }
2301
+ ],
2302
+ "platformRequirements": {
2303
+ "mongodb": true,
2304
+ "s3": true
2305
+ },
2306
+ "platformOidc": {
2307
+ "redirectPath": "/auth/oidc/callback",
2308
+ "roles": [
2309
+ {
2310
+ "id": "admin",
2311
+ "label": "Administrator",
2312
+ "description": "Full Cloudly administration for this hosted instance."
2313
+ },
2314
+ {
2315
+ "id": "user",
2316
+ "label": "User",
2317
+ "description": "Standard authenticated Cloudly access for this hosted instance."
2318
+ }
2319
+ ],
2320
+ "environmentVariables": {
2321
+ "issuerUrl": "SERVEZONE_PLATFORM_OIDC_ISSUER",
2322
+ "clientId": "SERVEZONE_PLATFORM_OIDC_CLIENT_ID",
2323
+ "clientSecret": "SERVEZONE_PLATFORM_OIDC_CLIENT_SECRET",
2324
+ "redirectUri": "SERVEZONE_PLATFORM_OIDC_REDIRECT_URI",
2325
+ "audience": "SERVEZONE_PLATFORM_OIDC_AUDIENCE"
2326
+ },
2327
+ "clientAuthenticationMethod": "client_secret_basic"
2328
+ },
2329
+ "minOneboxVersion": "32.4.0",
2330
+ "changelog": "Move Cloudly to 33.0.0, a breaking release. Startup migrates the data from 0.20.0 to 0.21.0 through the step retire-cluster-relay-acme, which drops the relay certificate and DNS collections Cloudly kept while it issued relay certificates and wrote relay A records through its own Cloudflare credential, and logs a warning for every relay name whose A record Cloudly had written at Cloudflare: remove each such record at the provider, because dcrouter refuses a relay name another writer holds. dcrouter now holds every cluster relay name's A record and certificate, so enabling a cluster relay requires a dcrouter that advertises dns.clientRecords and certificates.exactIssuance; Cloudly reads no Cloudflare token, the Cloudflare domain sync is gone, and SERVEZONE_SSLMODE=letsencrypt is refused at start (this template keeps external). The typed API also changes for Corestore binding placement and credential material, Pallet-owned runtime specs, server-managed volume initialization and object-storage environment conflicts; review the Breaking Changes of the Cloudly 33.0.0 changelog before upgrading. The runtime contract is unchanged from 1.2.1 and requires Onebox 32.4.0. Stop Cloudly and take a verified backup before upgrading; the migration is forward-only, the 32.9 image refuses the migrated data, and rollback requires a full restore. An installation on 1.1.10 or earlier runs the 1.2.0 steps first, from 0.10.0, and also requires completed Secrets v2 cutover retirement. Preserve existing user and storage identities, OIDC bindings, the encrypted keyring and WorkloadInit approval as dedicated root-readable files.",
2331
+ "breaking": true,
2332
+ "requiresManualReview": true,
2333
+ "migrationRequired": true,
2334
+ "backupBeforeUpgrade": true,
2335
+ "healthCheck": {
2336
+ "path": "/status",
2337
+ "port": 3000,
2338
+ "expectedStatus": 200
2339
+ }
2340
+ },
1993
2341
  "apps/ghost/app.json": {
1994
2342
  "id": "ghost",
1995
2343
  "name": "Ghost",
@@ -2810,7 +3158,7 @@ export const appStorePackageData: IAppStorePackageData = {
2810
3158
  }
2811
3159
  },
2812
3160
  "appstore.json": {
2813
- "updatedAt": "2026-09-23T15:44:52Z",
3161
+ "updatedAt": "2026-09-23T23:40:57Z",
2814
3162
  "apps": [
2815
3163
  {
2816
3164
  "id": "nginx",
@@ -3018,7 +3366,7 @@ export const appStorePackageData: IAppStorePackageData = {
3018
3366
  "description": "Multi-node serve.zone control plane for clusters, workload services, domains, and deployments.",
3019
3367
  "category": "Dev Tools",
3020
3368
  "iconName": "server",
3021
- "latestVersion": "1.2.0",
3369
+ "latestVersion": "1.3.0",
3022
3370
  "tags": [
3023
3371
  "serve.zone",
3024
3372
  "control-plane",