@serve.zone/appstore 32.26.0 → 33.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 (124) hide show
  1. package/.smartconfig.json +4 -1
  2. package/changelog.md +72 -0
  3. package/dist_catalog/catalog.digest +1 -0
  4. package/dist_catalog/catalog.envelope.json +7440 -0
  5. package/{dist_ts_client/data.generated.js → dist_catalog/catalog.json} +6742 -6741
  6. package/dist_ts_client/catalog.d.ts +16 -0
  7. package/dist_ts_client/catalog.js +12 -0
  8. package/dist_ts_client/index.d.ts +3 -1
  9. package/dist_ts_client/index.js +4 -2
  10. package/dist_ts_client/loader.d.ts +69 -0
  11. package/dist_ts_client/loader.js +361 -0
  12. package/dist_ts_client/plugins.d.ts +5 -0
  13. package/dist_ts_client/plugins.js +8 -0
  14. package/dist_ts_client/projection.d.ts +59 -0
  15. package/dist_ts_client/projection.js +83 -0
  16. package/dist_ts_client/storage.d.ts +15 -9
  17. package/dist_ts_client/storage.js +81 -657
  18. package/dist_ts_client/types.d.ts +86 -41
  19. package/dist_ts_client/types.js +1 -1
  20. package/dist_ts_testing/fixtures.d.ts +83 -0
  21. package/dist_ts_testing/fixtures.js +146 -0
  22. package/dist_ts_testing/index.d.ts +1 -0
  23. package/dist_ts_testing/index.js +2 -0
  24. package/dist_ts_testing/plugins.d.ts +7 -0
  25. package/dist_ts_testing/plugins.js +11 -0
  26. package/package.json +16 -11
  27. package/readme.md +162 -93
  28. package/ts_client/catalog.ts +26 -0
  29. package/ts_client/index.ts +3 -1
  30. package/ts_client/loader.ts +414 -0
  31. package/ts_client/plugins.ts +10 -0
  32. package/ts_client/projection.ts +148 -0
  33. package/ts_client/readme.md +17 -27
  34. package/ts_client/storage.ts +93 -882
  35. package/ts_client/types.ts +102 -42
  36. package/ts_testing/fixtures.ts +230 -0
  37. package/ts_testing/index.ts +1 -0
  38. package/ts_testing/plugins.ts +15 -0
  39. package/ts_testing/tspublish.json +3 -0
  40. package/apps/adminer/app.json +0 -10
  41. package/apps/adminer/versions/1.0.0/config.json +0 -6
  42. package/apps/cloudly/app.json +0 -14
  43. package/apps/cloudly/versions/1.0.0/config.json +0 -120
  44. package/apps/cloudly/versions/1.1.0/config.json +0 -120
  45. package/apps/cloudly/versions/1.1.1/config.json +0 -120
  46. package/apps/cloudly/versions/1.1.10/config.json +0 -173
  47. package/apps/cloudly/versions/1.1.2/config.json +0 -130
  48. package/apps/cloudly/versions/1.1.3/config.json +0 -130
  49. package/apps/cloudly/versions/1.1.4/config.json +0 -130
  50. package/apps/cloudly/versions/1.1.5/config.json +0 -149
  51. package/apps/cloudly/versions/1.1.6/config.json +0 -149
  52. package/apps/cloudly/versions/1.1.7/config.json +0 -149
  53. package/apps/cloudly/versions/1.1.8/config.json +0 -173
  54. package/apps/cloudly/versions/1.1.9/config.json +0 -173
  55. package/apps/cloudly/versions/1.10.0/config.json +0 -173
  56. package/apps/cloudly/versions/1.11.0/config.json +0 -173
  57. package/apps/cloudly/versions/1.12.0/config.json +0 -173
  58. package/apps/cloudly/versions/1.13.0/config.json +0 -173
  59. package/apps/cloudly/versions/1.14.0/config.json +0 -173
  60. package/apps/cloudly/versions/1.15.0/config.json +0 -173
  61. package/apps/cloudly/versions/1.16.0/config.json +0 -173
  62. package/apps/cloudly/versions/1.17.0/config.json +0 -173
  63. package/apps/cloudly/versions/1.18.0/config.json +0 -173
  64. package/apps/cloudly/versions/1.19.0/config.json +0 -173
  65. package/apps/cloudly/versions/1.2.0/config.json +0 -173
  66. package/apps/cloudly/versions/1.2.1/config.json +0 -173
  67. package/apps/cloudly/versions/1.20.0/config.json +0 -173
  68. package/apps/cloudly/versions/1.21.0/config.json +0 -173
  69. package/apps/cloudly/versions/1.22.0/config.json +0 -173
  70. package/apps/cloudly/versions/1.23.0/config.json +0 -173
  71. package/apps/cloudly/versions/1.24.0/config.json +0 -173
  72. package/apps/cloudly/versions/1.25.0/config.json +0 -173
  73. package/apps/cloudly/versions/1.26.0/config.json +0 -173
  74. package/apps/cloudly/versions/1.3.0/config.json +0 -173
  75. package/apps/cloudly/versions/1.4.0/config.json +0 -173
  76. package/apps/cloudly/versions/1.5.0/config.json +0 -173
  77. package/apps/cloudly/versions/1.6.0/config.json +0 -173
  78. package/apps/cloudly/versions/1.7.0/config.json +0 -173
  79. package/apps/cloudly/versions/1.8.0/config.json +0 -173
  80. package/apps/cloudly/versions/1.9.0/config.json +0 -173
  81. package/apps/ghost/app.json +0 -10
  82. package/apps/ghost/versions/1.0.0/config.json +0 -18
  83. package/apps/gitea/app.json +0 -10
  84. package/apps/gitea/versions/1.0.0/config.json +0 -16
  85. package/apps/gitops/app.json +0 -14
  86. package/apps/gitops/versions/1.0.0/config.json +0 -28
  87. package/apps/grafana/app.json +0 -10
  88. package/apps/grafana/versions/1.0.0/config.json +0 -9
  89. package/apps/mariadb/app.json +0 -10
  90. package/apps/mariadb/versions/1.0.0/config.json +0 -9
  91. package/apps/mattermost/app.json +0 -10
  92. package/apps/mattermost/versions/1.0.0/config.json +0 -6
  93. package/apps/n8n/app.json +0 -10
  94. package/apps/n8n/versions/1.0.0/config.json +0 -6
  95. package/apps/nextcloud/app.json +0 -10
  96. package/apps/nextcloud/versions/1.0.0/config.json +0 -16
  97. package/apps/nginx/app.json +0 -10
  98. package/apps/nginx/versions/1.0.0/config.json +0 -6
  99. package/apps/openbao/app.json +0 -16
  100. package/apps/openbao/versions/1.0.0/config.json +0 -52
  101. package/apps/plausible/app.json +0 -10
  102. package/apps/plausible/versions/1.0.0/config.json +0 -9
  103. package/apps/portainer/app.json +0 -10
  104. package/apps/portainer/versions/1.0.0/config.json +0 -6
  105. package/apps/postgres/app.json +0 -10
  106. package/apps/postgres/versions/1.0.0/config.json +0 -11
  107. package/apps/rustdesk-server/app.json +0 -14
  108. package/apps/rustdesk-server/versions/1.0.0/config.json +0 -19
  109. package/apps/siprouter/app.json +0 -14
  110. package/apps/siprouter/versions/1.0.0/config.json +0 -84
  111. package/apps/uptime-kuma/app.json +0 -10
  112. package/apps/uptime-kuma/versions/1.0.0/config.json +0 -6
  113. package/apps/valkey/app.json +0 -10
  114. package/apps/valkey/versions/1.0.0/config.json +0 -6
  115. package/apps/vaultwarden/app.json +0 -10
  116. package/apps/vaultwarden/versions/1.0.0/config.json +0 -6
  117. package/apps/wordpress/app.json +0 -10
  118. package/apps/wordpress/versions/1.0.0/config.json +0 -15
  119. package/appstore.json +0 -194
  120. package/dist_ts_client/classes.appstoreresolver.d.ts +0 -59
  121. package/dist_ts_client/classes.appstoreresolver.js +0 -736
  122. package/dist_ts_client/data.generated.d.ts +0 -2
  123. package/ts_client/classes.appstoreresolver.ts +0 -896
  124. package/ts_client/data.generated.ts +0 -7432
@@ -1,173 +0,0 @@
1
- {
2
- "image": "code.foss.global/serve.zone/cloudly@sha256:26a7469181059aca2a5505d2f86e8f6286ebc0b1e0dee0df2262bfe3df2d1f06",
3
- "targetPorts": [
4
- {
5
- "name": "web",
6
- "port": 3000,
7
- "protocol": "http",
8
- "default": true
9
- }
10
- ],
11
- "envVars": [
12
- {
13
- "key": "SERVEZONE_ENVIRONMENT",
14
- "value": "production",
15
- "description": "Cloudly runtime environment.",
16
- "required": true
17
- },
18
- {
19
- "key": "SERVEZONE_PUBLIC_ORIGIN",
20
- "value": "https://${SERVICE_DOMAIN}",
21
- "description": "Canonical public Cloudly origin including protocol and optional public port.",
22
- "required": true
23
- },
24
- {
25
- "key": "SERVEZONE_LISTENPORT",
26
- "value": "3000",
27
- "description": "Internal Cloudly HTTP port inside the container.",
28
- "required": true
29
- },
30
- {
31
- "key": "SERVEZONE_SSLMODE",
32
- "value": "external",
33
- "description": "Use external TLS termination through Onebox or dcrouter.",
34
- "required": true
35
- },
36
- {
37
- "key": "SERVEZONE_SECRET_KEYRING_PATH",
38
- "value": "/run/secrets/cloudly-secrets-v2-keyring.json",
39
- "description": "Path to the Cloudly Secrets v2 keyring mounted by Onebox; the keyring value is never placed in the public environment.",
40
- "required": true
41
- },
42
- {
43
- "key": "SERVEZONE_SECRET_KEYRING_FILE",
44
- "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.",
45
- "required": true,
46
- "secret": true,
47
- "delivery": {
48
- "type": "file",
49
- "targetPath": "/run/secrets/cloudly-secrets-v2-keyring.json",
50
- "uid": 0,
51
- "gid": 0,
52
- "mode": 256
53
- }
54
- },
55
- {
56
- "key": "SERVEZONE_WORKLOADINIT_APPROVAL_PATH",
57
- "value": "/run/secrets/cloudly-workloadinit-approval.json",
58
- "description": "Private WorkloadInit release-approval artifact mounted by Onebox for Coreflow secret-runtime registration.",
59
- "required": true
60
- },
61
- {
62
- "key": "SERVEZONE_WORKLOADINIT_APPROVAL_FILE",
63
- "description": "Operator-approved WorkloadInit release authority. Onebox stores it encrypted and mounts it only as a root-readable file.",
64
- "required": true,
65
- "secret": true,
66
- "delivery": {
67
- "type": "file",
68
- "targetPath": "/run/secrets/cloudly-workloadinit-approval.json",
69
- "uid": 0,
70
- "gid": 0,
71
- "mode": 256
72
- }
73
- },
74
- {
75
- "key": "MONGODB_URL",
76
- "value": "${MONGODB_URI}",
77
- "description": "Authenticated MongoDB wire-protocol URL provisioned by Onebox Corestore.",
78
- "required": true
79
- },
80
- {
81
- "key": "MONGODB_NAME",
82
- "value": "${MONGODB_DATABASE}",
83
- "description": "MongoDB wire-protocol database name provisioned by Onebox Corestore.",
84
- "required": true
85
- },
86
- {
87
- "key": "MONGODB_USER",
88
- "value": "${MONGODB_USERNAME}",
89
- "description": "MongoDB wire-protocol username provisioned by Onebox Corestore.",
90
- "required": true
91
- },
92
- {
93
- "key": "MONGODB_PASS",
94
- "value": "${MONGODB_PASSWORD}",
95
- "description": "MongoDB wire-protocol password provisioned by Onebox Corestore.",
96
- "required": true
97
- },
98
- {
99
- "key": "S3_ENDPOINT",
100
- "value": "onebox-corestore",
101
- "description": "S3 endpoint host provisioned by Onebox Corestore.",
102
- "required": true
103
- },
104
- {
105
- "key": "S3_PORT",
106
- "value": "9000",
107
- "description": "S3 endpoint port provisioned by Onebox Corestore.",
108
- "required": true
109
- },
110
- {
111
- "key": "S3_USESSL",
112
- "value": "false",
113
- "description": "Use plain HTTP for internal Corestore S3 traffic on the Onebox network.",
114
- "required": true
115
- },
116
- {
117
- "key": "S3_BUCKET",
118
- "value": "${S3_BUCKET}",
119
- "description": "S3 bucket provisioned by Onebox Corestore for Cloudly's registry.",
120
- "required": true
121
- },
122
- {
123
- "key": "S3_ACCESSKEY",
124
- "value": "${S3_ACCESS_KEY}",
125
- "description": "S3 access key provisioned by Onebox Corestore.",
126
- "required": true
127
- },
128
- {
129
- "key": "S3_SECRETKEY",
130
- "value": "${S3_SECRET_KEY}",
131
- "description": "S3 secret key provisioned by Onebox Corestore.",
132
- "required": true
133
- }
134
- ],
135
- "platformRequirements": {
136
- "mongodb": true,
137
- "s3": true
138
- },
139
- "platformOidc": {
140
- "redirectPath": "/auth/oidc/callback",
141
- "roles": [
142
- {
143
- "id": "admin",
144
- "label": "Administrator",
145
- "description": "Full Cloudly administration for this hosted instance."
146
- },
147
- {
148
- "id": "user",
149
- "label": "User",
150
- "description": "Standard authenticated Cloudly access for this hosted instance."
151
- }
152
- ],
153
- "environmentVariables": {
154
- "issuerUrl": "SERVEZONE_PLATFORM_OIDC_ISSUER",
155
- "clientId": "SERVEZONE_PLATFORM_OIDC_CLIENT_ID",
156
- "clientSecret": "SERVEZONE_PLATFORM_OIDC_CLIENT_SECRET",
157
- "redirectUri": "SERVEZONE_PLATFORM_OIDC_REDIRECT_URI",
158
- "audience": "SERVEZONE_PLATFORM_OIDC_AUDIENCE"
159
- },
160
- "clientAuthenticationMethod": "client_secret_basic"
161
- },
162
- "minOneboxVersion": "32.4.0",
163
- "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.",
164
- "breaking": true,
165
- "requiresManualReview": true,
166
- "migrationRequired": true,
167
- "backupBeforeUpgrade": true,
168
- "healthCheck": {
169
- "path": "/status",
170
- "port": 3000,
171
- "expectedStatus": 200
172
- }
173
- }
@@ -1,173 +0,0 @@
1
- {
2
- "image": "code.foss.global/serve.zone/cloudly@sha256:15796a1a784652cc8a59020125db14dc833c7e0e12d584209ccd6ada8f302bff",
3
- "targetPorts": [
4
- {
5
- "name": "web",
6
- "port": 3000,
7
- "protocol": "http",
8
- "default": true
9
- }
10
- ],
11
- "envVars": [
12
- {
13
- "key": "SERVEZONE_ENVIRONMENT",
14
- "value": "production",
15
- "description": "Cloudly runtime environment.",
16
- "required": true
17
- },
18
- {
19
- "key": "SERVEZONE_PUBLIC_ORIGIN",
20
- "value": "https://${SERVICE_DOMAIN}",
21
- "description": "Canonical public Cloudly origin including protocol and optional public port.",
22
- "required": true
23
- },
24
- {
25
- "key": "SERVEZONE_LISTENPORT",
26
- "value": "3000",
27
- "description": "Internal Cloudly HTTP port inside the container.",
28
- "required": true
29
- },
30
- {
31
- "key": "SERVEZONE_SSLMODE",
32
- "value": "external",
33
- "description": "Use external TLS termination through Onebox or dcrouter.",
34
- "required": true
35
- },
36
- {
37
- "key": "SERVEZONE_SECRET_KEYRING_PATH",
38
- "value": "/run/secrets/cloudly-secrets-v2-keyring.json",
39
- "description": "Path to the Cloudly Secrets v2 keyring mounted by Onebox; the keyring value is never placed in the public environment.",
40
- "required": true
41
- },
42
- {
43
- "key": "SERVEZONE_SECRET_KEYRING_FILE",
44
- "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.",
45
- "required": true,
46
- "secret": true,
47
- "delivery": {
48
- "type": "file",
49
- "targetPath": "/run/secrets/cloudly-secrets-v2-keyring.json",
50
- "uid": 0,
51
- "gid": 0,
52
- "mode": 256
53
- }
54
- },
55
- {
56
- "key": "SERVEZONE_WORKLOADINIT_APPROVAL_PATH",
57
- "value": "/run/secrets/cloudly-workloadinit-approval.json",
58
- "description": "Private WorkloadInit release-approval artifact mounted by Onebox for Coreflow secret-runtime registration.",
59
- "required": true
60
- },
61
- {
62
- "key": "SERVEZONE_WORKLOADINIT_APPROVAL_FILE",
63
- "description": "Operator-approved WorkloadInit release authority. Onebox stores it encrypted and mounts it only as a root-readable file.",
64
- "required": true,
65
- "secret": true,
66
- "delivery": {
67
- "type": "file",
68
- "targetPath": "/run/secrets/cloudly-workloadinit-approval.json",
69
- "uid": 0,
70
- "gid": 0,
71
- "mode": 256
72
- }
73
- },
74
- {
75
- "key": "MONGODB_URL",
76
- "value": "${MONGODB_URI}",
77
- "description": "Authenticated MongoDB wire-protocol URL provisioned by Onebox Corestore.",
78
- "required": true
79
- },
80
- {
81
- "key": "MONGODB_NAME",
82
- "value": "${MONGODB_DATABASE}",
83
- "description": "MongoDB wire-protocol database name provisioned by Onebox Corestore.",
84
- "required": true
85
- },
86
- {
87
- "key": "MONGODB_USER",
88
- "value": "${MONGODB_USERNAME}",
89
- "description": "MongoDB wire-protocol username provisioned by Onebox Corestore.",
90
- "required": true
91
- },
92
- {
93
- "key": "MONGODB_PASS",
94
- "value": "${MONGODB_PASSWORD}",
95
- "description": "MongoDB wire-protocol password provisioned by Onebox Corestore.",
96
- "required": true
97
- },
98
- {
99
- "key": "S3_ENDPOINT",
100
- "value": "onebox-corestore",
101
- "description": "S3 endpoint host provisioned by Onebox Corestore.",
102
- "required": true
103
- },
104
- {
105
- "key": "S3_PORT",
106
- "value": "9000",
107
- "description": "S3 endpoint port provisioned by Onebox Corestore.",
108
- "required": true
109
- },
110
- {
111
- "key": "S3_USESSL",
112
- "value": "false",
113
- "description": "Use plain HTTP for internal Corestore S3 traffic on the Onebox network.",
114
- "required": true
115
- },
116
- {
117
- "key": "S3_BUCKET",
118
- "value": "${S3_BUCKET}",
119
- "description": "S3 bucket provisioned by Onebox Corestore for Cloudly's registry.",
120
- "required": true
121
- },
122
- {
123
- "key": "S3_ACCESSKEY",
124
- "value": "${S3_ACCESS_KEY}",
125
- "description": "S3 access key provisioned by Onebox Corestore.",
126
- "required": true
127
- },
128
- {
129
- "key": "S3_SECRETKEY",
130
- "value": "${S3_SECRET_KEY}",
131
- "description": "S3 secret key provisioned by Onebox Corestore.",
132
- "required": true
133
- }
134
- ],
135
- "platformRequirements": {
136
- "mongodb": true,
137
- "s3": true
138
- },
139
- "platformOidc": {
140
- "redirectPath": "/auth/oidc/callback",
141
- "roles": [
142
- {
143
- "id": "admin",
144
- "label": "Administrator",
145
- "description": "Full Cloudly administration for this hosted instance."
146
- },
147
- {
148
- "id": "user",
149
- "label": "User",
150
- "description": "Standard authenticated Cloudly access for this hosted instance."
151
- }
152
- ],
153
- "environmentVariables": {
154
- "issuerUrl": "SERVEZONE_PLATFORM_OIDC_ISSUER",
155
- "clientId": "SERVEZONE_PLATFORM_OIDC_CLIENT_ID",
156
- "clientSecret": "SERVEZONE_PLATFORM_OIDC_CLIENT_SECRET",
157
- "redirectUri": "SERVEZONE_PLATFORM_OIDC_REDIRECT_URI",
158
- "audience": "SERVEZONE_PLATFORM_OIDC_AUDIENCE"
159
- },
160
- "clientAuthenticationMethod": "client_secret_basic"
161
- },
162
- "minOneboxVersion": "32.4.0",
163
- "changelog": "Move Cloudly to 33.1.0, a feature release over 33.0.0: database binding credentials are addressed to the database endpoint of the node the binding is placed on, set per node with setClusterNodeCorestoreDatabaseEndpoint; administrators can page a cluster's local storage claims; and registerClusterIngress answers its refusals with the named reason and retry delay. The runtime contract is unchanged from 1.3.0 and requires Onebox 32.4.0. From 1.2.1 or earlier, startup runs the forward-only data migration from 0.20.0 to 0.21.0 through the step retire-cluster-relay-acme, which drops the relay certificate and DNS collections of Cloudly's retired Cloudflare and Let's Encrypt integration and logs every relay name whose A record Cloudly had written at Cloudflare: remove each such record at the provider. A cluster relay then requires a dcrouter that advertises dns.clientRecords and certificates.exactIssuance, SERVEZONE_SSLMODE=letsencrypt is refused (this template keeps external), and the typed API changes as the Breaking Changes of the Cloudly 33.0.0 changelog list; review them, stop Cloudly and take a verified backup before upgrading, because the 32.9 image refuses the migrated data and rollback requires a full restore. From 1.3.0 there is no data step, as the data version stays 0.21.0, but the Cloudly 33.1.0 rollout order and the per-node database endpoint apply: roll out Cloudly 33.1.0 first, then Coreflow 33.1.0, then Corestore 33.0.0, and set every node's Corestore database endpoint, because a database binding on a node without one is not granted and its service is refused database-endpoint-missing, and existing database bindings answer no credential material until they are granted again for the endpoint. The upgrade is marked breaking, migration-required, backup-before-upgrade and manual-review because these flags are read from the target version alone and an upgrade from 1.2.1 or earlier runs the migration. An installation on 1.1.10 or earlier also runs the 1.2.0 steps first, from 0.10.0, and 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.",
164
- "breaking": true,
165
- "requiresManualReview": true,
166
- "migrationRequired": true,
167
- "backupBeforeUpgrade": true,
168
- "healthCheck": {
169
- "path": "/status",
170
- "port": 3000,
171
- "expectedStatus": 200
172
- }
173
- }
@@ -1,173 +0,0 @@
1
- {
2
- "image": "code.foss.global/serve.zone/cloudly@sha256:11bc9a39011c1fa21bf621067e0ff6d4c2fe8cb0306745eca825db13285ae756",
3
- "targetPorts": [
4
- {
5
- "name": "web",
6
- "port": 3000,
7
- "protocol": "http",
8
- "default": true
9
- }
10
- ],
11
- "envVars": [
12
- {
13
- "key": "SERVEZONE_ENVIRONMENT",
14
- "value": "production",
15
- "description": "Cloudly runtime environment.",
16
- "required": true
17
- },
18
- {
19
- "key": "SERVEZONE_PUBLIC_ORIGIN",
20
- "value": "https://${SERVICE_DOMAIN}",
21
- "description": "Canonical public Cloudly origin including protocol and optional public port.",
22
- "required": true
23
- },
24
- {
25
- "key": "SERVEZONE_LISTENPORT",
26
- "value": "3000",
27
- "description": "Internal Cloudly HTTP port inside the container.",
28
- "required": true
29
- },
30
- {
31
- "key": "SERVEZONE_SSLMODE",
32
- "value": "external",
33
- "description": "Use external TLS termination through Onebox or dcrouter.",
34
- "required": true
35
- },
36
- {
37
- "key": "SERVEZONE_SECRET_KEYRING_PATH",
38
- "value": "/run/secrets/cloudly-secrets-v2-keyring.json",
39
- "description": "Path to the Cloudly Secrets v2 keyring mounted by Onebox; the keyring value is never placed in the public environment.",
40
- "required": true
41
- },
42
- {
43
- "key": "SERVEZONE_SECRET_KEYRING_FILE",
44
- "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.",
45
- "required": true,
46
- "secret": true,
47
- "delivery": {
48
- "type": "file",
49
- "targetPath": "/run/secrets/cloudly-secrets-v2-keyring.json",
50
- "uid": 0,
51
- "gid": 0,
52
- "mode": 256
53
- }
54
- },
55
- {
56
- "key": "SERVEZONE_WORKLOADINIT_APPROVAL_PATH",
57
- "value": "/run/secrets/cloudly-workloadinit-approval.json",
58
- "description": "Private WorkloadInit release-approval artifact mounted by Onebox for Coreflow secret-runtime registration.",
59
- "required": true
60
- },
61
- {
62
- "key": "SERVEZONE_WORKLOADINIT_APPROVAL_FILE",
63
- "description": "Operator-approved WorkloadInit release authority. Onebox stores it encrypted and mounts it only as a root-readable file.",
64
- "required": true,
65
- "secret": true,
66
- "delivery": {
67
- "type": "file",
68
- "targetPath": "/run/secrets/cloudly-workloadinit-approval.json",
69
- "uid": 0,
70
- "gid": 0,
71
- "mode": 256
72
- }
73
- },
74
- {
75
- "key": "MONGODB_URL",
76
- "value": "${MONGODB_URI}",
77
- "description": "Authenticated MongoDB wire-protocol URL provisioned by Onebox Corestore.",
78
- "required": true
79
- },
80
- {
81
- "key": "MONGODB_NAME",
82
- "value": "${MONGODB_DATABASE}",
83
- "description": "MongoDB wire-protocol database name provisioned by Onebox Corestore.",
84
- "required": true
85
- },
86
- {
87
- "key": "MONGODB_USER",
88
- "value": "${MONGODB_USERNAME}",
89
- "description": "MongoDB wire-protocol username provisioned by Onebox Corestore.",
90
- "required": true
91
- },
92
- {
93
- "key": "MONGODB_PASS",
94
- "value": "${MONGODB_PASSWORD}",
95
- "description": "MongoDB wire-protocol password provisioned by Onebox Corestore.",
96
- "required": true
97
- },
98
- {
99
- "key": "S3_ENDPOINT",
100
- "value": "onebox-corestore",
101
- "description": "S3 endpoint host provisioned by Onebox Corestore.",
102
- "required": true
103
- },
104
- {
105
- "key": "S3_PORT",
106
- "value": "9000",
107
- "description": "S3 endpoint port provisioned by Onebox Corestore.",
108
- "required": true
109
- },
110
- {
111
- "key": "S3_USESSL",
112
- "value": "false",
113
- "description": "Use plain HTTP for internal Corestore S3 traffic on the Onebox network.",
114
- "required": true
115
- },
116
- {
117
- "key": "S3_BUCKET",
118
- "value": "${S3_BUCKET}",
119
- "description": "S3 bucket provisioned by Onebox Corestore for Cloudly's registry.",
120
- "required": true
121
- },
122
- {
123
- "key": "S3_ACCESSKEY",
124
- "value": "${S3_ACCESS_KEY}",
125
- "description": "S3 access key provisioned by Onebox Corestore.",
126
- "required": true
127
- },
128
- {
129
- "key": "S3_SECRETKEY",
130
- "value": "${S3_SECRET_KEY}",
131
- "description": "S3 secret key provisioned by Onebox Corestore.",
132
- "required": true
133
- }
134
- ],
135
- "platformRequirements": {
136
- "mongodb": true,
137
- "s3": true
138
- },
139
- "platformOidc": {
140
- "redirectPath": "/auth/oidc/callback",
141
- "roles": [
142
- {
143
- "id": "admin",
144
- "label": "Administrator",
145
- "description": "Full Cloudly administration for this hosted instance."
146
- },
147
- {
148
- "id": "user",
149
- "label": "User",
150
- "description": "Standard authenticated Cloudly access for this hosted instance."
151
- }
152
- ],
153
- "environmentVariables": {
154
- "issuerUrl": "SERVEZONE_PLATFORM_OIDC_ISSUER",
155
- "clientId": "SERVEZONE_PLATFORM_OIDC_CLIENT_ID",
156
- "clientSecret": "SERVEZONE_PLATFORM_OIDC_CLIENT_SECRET",
157
- "redirectUri": "SERVEZONE_PLATFORM_OIDC_REDIRECT_URI",
158
- "audience": "SERVEZONE_PLATFORM_OIDC_AUDIENCE"
159
- },
160
- "clientAuthenticationMethod": "client_secret_basic"
161
- },
162
- "minOneboxVersion": "32.4.0",
163
- "changelog": "Move Cloudly to 33.2.0, a feature release over 33.1.0: an administrator hands Cloudly a dcrouter admin token once through bootstrapExternalGatewayCredential or servezone gateway bootstrap, from which Cloudly provisions and stores its own gateway-client credential without storing or logging the token; a first enrollment starts with the gateway settings and turns admin-bootstrap-required instead of refusing them for the missing credential; a gateway settings change the held credential cannot carry is staged while the running gateway client keeps serving, until the next bootstrap switches both; a runtime network address plan with a list out of its canonical order is refused plan-unsorted; and a relay naming a node Cloudly does not hold is refused relay-node-unknown. The runtime contract is unchanged from 1.4.0 and requires Onebox 32.4.0. From 1.4.0 there is no data step, as the data version stays 0.21.0: roll out Cloudly 33.2.0 first, then Coreflow 33.2.0, which recognises the relay-node-unknown refusal, and take a verified backup before upgrading. From 1.3.0 there is no data step either, but the per-node database endpoint of Cloudly 33.1.0 applies: roll out Cloudly 33.2.0 first, then Coreflow 33.2.0 (33.1.0 at minimum), then Corestore 33.0.0, and set every node's Corestore database endpoint with setClusterNodeCorestoreDatabaseEndpoint, because a database binding on a node without one is not granted and its service is refused database-endpoint-missing, and existing database bindings answer no credential material until they are granted again for the endpoint. From 1.2.1 or earlier, startup runs the forward-only data migration from 0.20.0 to 0.21.0 through the step retire-cluster-relay-acme, which drops the relay certificate and DNS collections of Cloudly's retired Cloudflare and Let's Encrypt integration and logs every relay name whose A record Cloudly had written at Cloudflare: remove each such record at the provider. A cluster relay then requires a dcrouter that advertises dns.clientRecords and certificates.exactIssuance, SERVEZONE_SSLMODE=letsencrypt is refused (this template keeps external), and the typed API changes as the Breaking Changes of the Cloudly 33.0.0 changelog list; review them, stop Cloudly and take a verified backup before upgrading, because the 32.9 image refuses the migrated data and rollback requires a full restore. The upgrade is marked breaking, migration-required, backup-before-upgrade and manual-review because these flags are read from the target version alone and an upgrade from 1.2.1 or earlier still runs the migration on this image. An installation on 1.1.10 or earlier also runs the 1.2.0 steps first, from 0.10.0, and 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.",
164
- "breaking": true,
165
- "requiresManualReview": true,
166
- "migrationRequired": true,
167
- "backupBeforeUpgrade": true,
168
- "healthCheck": {
169
- "path": "/status",
170
- "port": 3000,
171
- "expectedStatus": 200
172
- }
173
- }