Compare commits

...

137 Commits

Author SHA1 Message Date
Axel Lender
f505f82916 fix(gotmpl): Sort values for existing secrets
Signed-off-by: Axel Lender <lender@b1-systems.de>
2025-08-12 14:27:31 +02:00
Axel Lender
dab833fa04 feat(helmfile): Template SMTP credentials as external secrets for Postfix
Signed-off-by: Axel Lender <lender@b1-systems.de>
2025-08-12 08:22:31 +02:00
Axel Lender
528fd704d0 fix(helmfile): Adap to existing naming
Signed-off-by: Axel Lender <lender@b1-systems.de>
2025-08-11 20:46:22 +02:00
Thomas Kaltenbrunner
636b926c88 fix(open-xchange): Add external secrets for Dovecot and Postfix 2025-08-11 20:46:22 +02:00
Thorsten Roßner
9980d50dce chore(release): 1.7.0 [skip ci]
# [1.7.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.6.0...v1.7.0) (2025-08-11)

### Bug Fixes

* **collabora:** Connect to Collabora Controller websocket via service ([5d01f60](5d01f6023d))
* **collabora:** Update from 25.04.2 to 25.04.3 ([3507c62](3507c62f83))
* **helmfile:** Adds default-enterprise-overrides to default values in helmfile-generic ([672e649](672e649b60))
* **nextcloud:** Block filesystem-unsafe characters in file and folder names ([0df6212](0df6212ca9))
* **nextcloud:** Include latest Helm chart version with supports `configuration.sharing.restrictUserEnumerationToGroup` ([c3dfa2a](c3dfa2a607))
* **notes:** Set Pod Disruption Budget (PDB) labels ([e35dac0](e35dac087a))
* **nubus:** Add `livenessProbe` for `nubusUdmListener` to mitigate cases where the listener becomes uninitialized and stops forwarding provisioning data to NATS. Temporary until upstream provides a probe ([ef8d67f](ef8d67f3c1))
* **open-xchange:** Disable documents role ([573e11f](573e11f5c5))
* **open-xchange:** Postfix to support submissions and external secrets ([13ab665](13ab665900))
* **open-xchange:** Support application specific passwords in groupware when CalDAV/CardDAV support is enabled, see `functional.groupware.davSupport.enabled` for reference ([90b2290](90b22904da))
* **open-xchange:** Use dedicated pod for migration ([6fd52b1](6fd52b167e))
* **opendesk-certificates:** Update Helm chart to remove default host for `webmail` being set even if OX App Suite is not enabled ([09a0aac](09a0aace45))
* **opendesk-services:** Update opendesk-alerts from 1.1.1 to 1.1.2, update opendesk-dashboards from 1.1.1 to 1.1.2 ([174d4fc](174d4fc61c))
* **openproject:** Update from 16.2.0 to 16.2.1 ([bba9b71](bba9b716a3))
* **ox-connector:** Update OX Connector and OX Extension to v0.27.2; review `migrations.md` for required upgrade steps ([9d51e40](9d51e40063))

### Features

* **nextcloud:** Enhance theming options for Nextcloud ([bdc7331](bdc7331cb5))
* **notes:** Switch to new Helm chart with support for self-signed deployments; review `migrations.md` for required upgrade steps ([3106ca7](3106ca793e))
* **nubus:** Allow configuration of limits for password reset requests via `security.passwordResetLimits` ([09f54b4](09f54b4134))
* **nubus:** Update from 1.11.2 to 1.12.0 ([5537dbb](5537dbbd7c))
* **open-xchange:** Update from 8.38 to 8.39 ([489986e](489986e906))
* **open-xchange:** Use internal endpoint for provisioning and support for optionally spinning up a dedicated internal Pod just for provisioning (see `technial.oxAppSuite.provisioning.dedicatedCoreMwPod` for details) ([31b7ec7](31b7ec7827))
* **openproject:** Update from 16.1.1 to 16.2.0 ([e273abb](e273abbecf))
2025-08-11 05:22:15 +00:00
Thorsten Roßner
25ba486ba0 chore(publiccode.yml): Update for openDesk 1.7.0 2025-08-10 21:24:16 +02:00
Franz Kuntke
a84d440f9f ci(db-cleanup): Add dovecot bucket 2025-08-09 07:44:05 +02:00
Thorsten Roßner
f549fdfd19 chore(publiccode.yml): Update for openDesk 1.7.0 2025-08-09 07:44:05 +02:00
Thorsten Roßner
3507c62f83 fix(collabora): Update from 25.04.2 to 25.04.3 2025-08-09 07:44:05 +02:00
Thomas Kaltenbrunner
5d01f6023d fix(collabora): Connect to Collabora Controller websocket via service 2025-08-09 07:44:05 +02:00
Thomas Kaltenbrunner
90b22904da fix(open-xchange): Support application specific passwords in groupware when CalDAV/CardDAV support is enabled, see functional.groupware.davSupport.enabled for reference 2025-08-09 07:44:05 +02:00
Simon Hermann
174d4fc61c fix(opendesk-services): Update opendesk-alerts from 1.1.1 to 1.1.2, update opendesk-dashboards from 1.1.1 to 1.1.2 2025-08-09 07:44:05 +02:00
Thomas Kaltenbrunner
e35dac087a fix(notes): Set Pod Disruption Budget (PDB) labels 2025-08-09 07:44:05 +02:00
Thorsten Roßner
ef8d67f3c1 fix(nubus): Add livenessProbe for nubusUdmListener to mitigate cases where the listener becomes uninitialized and stops forwarding provisioning data to NATS. Temporary until upstream provides a probe 2025-08-09 07:44:05 +02:00
Thorsten Roßner
7f17a80597 chore(mirror): Add mirror annotations to Bitnami images 2025-08-09 07:44:05 +02:00
Franz Kuntke
797308f1ec ci(db-cleanup): Fix connection to STACKIT PostgreSQL databases and add openxchange bucket 2025-08-09 07:44:05 +02:00
Simon Herman
39c057904a docs(migrations.md): Add note for default values in helmfile_generic.yaml.gotmpl 2025-08-09 07:44:05 +02:00
Oliver Günther
bba9b716a3 fix(openproject): Update from 16.2.0 to 16.2.1 2025-08-09 07:44:05 +02:00
Thomas Kaltenbrunner
6fd52b167e fix(open-xchange): Use dedicated pod for migration 2025-08-09 07:44:05 +02:00
Thomas Kaltenbrunner
3106ca793e feat(notes): Switch to new Helm chart with support for self-signed deployments; review migrations.md for required upgrade steps 2025-08-09 07:44:05 +02:00
Thorsten Roßner
8eaa12e53b chore(helmfile): Set global.systemInformation.releaseVersion to v1.7.0 2025-08-09 07:44:05 +02:00
Lilly Sell
09f54b4134 feat(nubus): Allow configuration of limits for password reset requests via security.passwordResetLimits 2025-08-09 07:44:05 +02:00
Norbert Tretkowski
5537dbbd7c feat(nubus): Update from 1.11.2 to 1.12.0 2025-08-09 07:44:05 +02:00
Norbert Tretkowski
9d51e40063 fix(ox-connector): Update OX Connector and OX Extension to v0.27.2; review migrations.md for required upgrade steps 2025-08-09 07:44:05 +02:00
Viktor Pracht
489986e906 feat(open-xchange): Update from 8.38 to 8.39 2025-08-09 07:44:05 +02:00
Thomas Kaltenbrunner
13ab665900 fix(open-xchange): Postfix to support submissions and external secrets 2025-08-09 07:44:05 +02:00
Philip Gaber
0df6212ca9 fix(nextcloud): Block filesystem-unsafe characters in file and folder names 2025-08-09 07:44:05 +02:00
Thorsten Roßner
0d8c148062 chore(mr-templates): Update merge request templates 2025-08-09 07:44:05 +02:00
Thorsten Roßner
f0057c6417 docs(workflow.md): Update conventional commits section 2025-08-09 07:44:05 +02:00
Thorsten Roßner
cd000826df docs(README-EE.md): Remove the # before some number references to avoid GitLab thinking these are issue references 2025-08-09 07:44:05 +02:00
Simon Herman
672e649b60 fix(helmfile): Adds default-enterprise-overrides to default values in helmfile-generic 2025-08-09 07:44:04 +02:00
Thorsten Roßner
09a0aace45 fix(opendesk-certificates): Update Helm chart to remove default host for webmail being set even if OX App Suite is not enabled 2025-08-09 07:44:04 +02:00
Thorsten Roßner
c3dfa2a607 fix(nextcloud): Include latest Helm chart version with supports configuration.sharing.restrictUserEnumerationToGroup 2025-08-09 07:44:04 +02:00
Thomas Kaltenbrunner
31b7ec7827 feat(open-xchange): Use internal endpoint for provisioning and support for optionally spinning up a dedicated internal Pod just for provisioning (see technial.oxAppSuite.provisioning.dedicatedCoreMwPod for details) 2025-08-09 07:44:04 +02:00
Philip Gaber
bdc7331cb5 feat(nextcloud): Enhance theming options for Nextcloud 2025-08-09 07:44:04 +02:00
Oliver Günther
e273abbecf feat(openproject): Update from 16.1.1 to 16.2.0 2025-08-09 07:44:04 +02:00
René Fischer
386dbbf453 docs(releases.md): Add release and patch management process 2025-08-09 07:44:04 +02:00
René Fischer
6e054008a2 docs(README-EE.md): Add EE features 2025-08-09 07:44:04 +02:00
René Fischer
02318a478a docs(README-EE.md): Add CE licenses 2025-08-09 07:44:04 +02:00
René Fischer
b610a8825c docs(README-EE.md): Add overview of CE vs. EE 2025-08-09 07:44:04 +02:00
Thorsten Roßner
248213a285 ci(dbcleanup): Fix RUN cluster cleanup 2025-08-09 07:44:04 +02:00
Philip Gaber
879838bbb2 ci(service-cleanup): Update for new opendesk-env structure and set STACKIT as default 2025-08-09 07:44:04 +02:00
Silvio Knizek
1185f4d97a docs(migrations.md): Broken markdown table 2025-08-09 07:44:04 +02:00
Thomas Kaltenbrunner
573e11f5c5 fix(open-xchange): Disable documents role 2025-08-09 07:44:04 +02:00
Alexander Smolianitski
3b9ddab603 docs(baseline-requirements): Fix broken links ins section "License Compliance" 2025-07-31 16:38:41 +02:00
Thorsten Roßner
c858692e6b chore(release): 1.6.0 [skip ci]
# [1.6.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.5.0...v1.6.0) (2025-07-14)

### Bug Fixes

* **dovecot-pro:** Use of `requiredEnv` instead of `env` and update `README-EE.md` ([a79e40f](a79e40f44a))
* **helmfile:** Prefix NATS passwords as workaround for upstream issue and add documentation to `gettings-started.md` [[#185](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/185), [#202](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/202)] ([7f478bf](7f478bffd6))
* **helmfile:** Remove default setting from `repositories.helm.registryOpencodeDeEnterprise` for better support of `PRIVATE_HELM_REGISTRY_URL` ([c5dd881](c5dd8814ae))
* **helmfile:** Set `nubusKeycloakBootstrap` debug mode when openDesk is running in debug mode ([4e0ffee](4e0ffeea1f))
* **helmfile:** Streamline license header comment style [[#192](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/192)] ([20cbad3](20cbad31e7))
* **nubus:** Explicitly template `nubusStackDataUms.stackDataContext.portalFqdn` to fix custom hostname support [[#193](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/193)] ([6aa6d3a](6aa6d3af2f))
* **nubus:** Replace openDesk portal fork with upstream `portal-frontend` image ([e4f1afc](e4f1afca0f))
* **nubus:** Update from 1.11.1 to 1.11.2 ([237c9af](237c9af3c1))
* **open-xchange:** Add missing `imagePullSecrets` for `core-imageconverter` and `core-documentconverter` ([9b7f439](9b7f439d83))
* **open-xchange:** Enable `com.openexchange.smime.test` only when openDesk is running with `debug.enabled: true` ([51ff7a5](51ff7a5fdb))
* **open-xchange:** Enable searching by LDAP `mailAlternativeAddress` when resolving global contacts. Note: OX App Suite evaluates all `mailAlternativeAddress` values of a user when searching, but only the first address is returned, which might differ from the one that matched the search criteria. ([9014324](9014324156))
* **open-xchange:** Use `objectstore.dovecot.secretKey` when defined ([5c33226](5c332264ed))
* **opendesk-services:** Add missing certificates ([acbabdb](acbabdb806))
* **openproject:** Update from 16.1.0 to 16.1.1 ([e30d4f1](e30d4f126d))

### Features

* **collabora:** Update from 24.04.13 to 25.04.2 ([c56f564](c56f564025))
* **element:** Update NeoBoard from 2.1.0 to 2.2.1, NeoChoice from 1.5.1. to 1.5.2, NeoDateFix from 1.7.0 to 1.7.1 widgets and NeoDateFixBot from 2.8.2 to 2.8.3 latest releases ([98d31f8](98d31f811b))
* **helmfile:** Add options in `functional.yaml.gotmpl` for setting the portal's corner links, toggling the welcome message and the newsfeed ([1a6f438](1a6f438724))
* **nextcloud:** Update from 30.0.10 to 31.0.6 and support for notify-push ([a4c8be6](a4c8be60f3))
* **nubus:** Update from 1.9.1 to 1.11.1; required minimum openDesk version for this upgrade is 1.5.0, see `migrations.md` for details ([ccd5ab8](ccd5ab84e3))
* **open-xchange:** Store attachments for calendar, contact and task objects in object storage; review `migrations.md` for required upgrade steps ([4eb6570](4eb6570b0a))
* **open-xchange:** Updated OX App Suite from 8.37 to 8.38 ([2b31751](2b317514c6))
2025-07-14 11:19:43 +00:00
Thorsten Roßner
de1554aed1 chore(publiccode.yml): Update for 1.6.0 2025-07-12 14:55:55 +02:00
Philip Gaber
a79e40f44a fix(dovecot-pro): Use of requiredEnv instead of env and update README-EE.md 2025-07-12 14:55:55 +02:00
Thomas Kaltenbrunner
5c332264ed fix(open-xchange): Use objectstore.dovecot.secretKey when defined 2025-07-12 14:55:55 +02:00
Thorsten Roßner
22c179d3f2 ci(db-cleanup): Fix cleanup when values files are loaded including go-template placeholders 2025-07-12 14:55:55 +02:00
Thorsten Roßner
20cbad31e7 fix(helmfile): Streamline license header comment style [#192] 2025-07-12 14:55:55 +02:00
Norbert Tretkowski
237c9af3c1 fix(nubus): Update from 1.11.1 to 1.11.2 2025-07-12 14:55:55 +02:00
Thomas Kaltenbrunner
acbabdb806 fix(opendesk-services): Add missing certificates 2025-07-12 14:55:55 +02:00
Philip Gaber
a4c8be60f3 feat(nextcloud): Update from 30.0.10 to 31.0.6 and support for notify-push 2025-07-12 14:55:55 +02:00
Franz Kuntke
9e92aa3005 ci(cleanup): Extend db-cleanup to flush data of external-services at StackIT 2025-07-12 14:55:55 +02:00
Thorsten Roßner
5160711050 chore(nubus): Update wrong SHA for nubusBlocklistCleanup to existing image on the openCode mirror 2025-07-12 14:55:55 +02:00
Mikhail Aheichyk
98d31f811b feat(element): Update NeoBoard from 2.1.0 to 2.2.1, NeoChoice from 1.5.1. to 1.5.2, NeoDateFix from 1.7.0 to 1.7.1 widgets and NeoDateFixBot from 2.8.2 to 2.8.3 latest releases 2025-07-12 14:55:55 +02:00
Thorsten Roßner
26e4b54cad docs(gettings-started.md): Explicitly require ingressClassName 2025-07-12 14:55:55 +02:00
Thorsten Roßner
7ae716bc82 docs(theming.md): Improve wording 2025-07-12 14:55:55 +02:00
Thorsten Roßner
d39c406d63 docs(migrations.md): Add "deprecation warning" section 2025-07-12 14:55:55 +02:00
Thorsten Roßner
1a6f438724 feat(helmfile): Add options in functional.yaml.gotmpl for setting the portal's corner links, toggling the welcome message and the newsfeed 2025-07-12 14:55:55 +02:00
Thorsten Roßner
e4f1afca0f fix(nubus): Replace openDesk portal fork with upstream portal-frontend image 2025-07-12 14:55:55 +02:00
Thorsten Roßner
19f4ea90e2 chore(helmfile): Set global.systemInformation.releaseVersion to v1.6.0 to allow migration tests 2025-07-12 14:55:55 +02:00
Thorsten Roßner
8777722cf1 ci(cleanup): Echo info which namespace is being worked on 2025-07-12 14:55:55 +02:00
Thorsten Roßner
0cc04c0be0 docs(data-storage.md): Update NC,XWiki as they use PostgreSQL as default, fix provisioning listener table entry [#198, #200] 2025-07-12 14:55:55 +02:00
Thorsten Roßner
6aa6d3af2f fix(nubus): Explicitly template nubusStackDataUms.stackDataContext.portalFqdn to fix custom hostname support [#193] 2025-07-12 14:55:55 +02:00
Thorsten Roßner
4e0ffeea1f fix(helmfile): Set nubusKeycloakBootstrap debug mode when openDesk is running in debug mode 2025-07-12 14:55:55 +02:00
Norbert Tretkowski
ccd5ab84e3 feat(nubus): Update from 1.9.1 to 1.11.1; required minimum openDesk version for this upgrade is 1.5.0, see migrations.md for details 2025-07-12 14:55:55 +02:00
René Fischer
8d832107c1 chore(publiccode.yml): Add English translation 2025-07-12 14:55:55 +02:00
Thorsten Roßner
51ff7a5fdb fix(open-xchange): Enable com.openexchange.smime.test only when openDesk is running with debug.enabled: true 2025-07-12 14:55:55 +02:00
Thorsten Roßner
4eb6570b0a feat(open-xchange): Store attachments for calendar, contact and task objects in object storage; review migrations.md for required upgrade steps 2025-07-12 14:55:55 +02:00
Philip Gaber
9b7f439d83 fix(open-xchange): Add missing imagePullSecrets for core-imageconverter and core-documentconverter 2025-07-12 14:55:55 +02:00
Viktor Pracht
2b317514c6 feat(open-xchange): Updated OX App Suite from 8.37 to 8.38 2025-07-12 14:55:55 +02:00
Thomas Kaltenbrunner
9014324156 fix(open-xchange): Enable searching by LDAP mailAlternativeAddress when resolving global contacts. Note: OX App Suite evaluates all mailAlternativeAddress values of a user when searching, but only the first address is returned, which might differ from the one that matched the search criteria. 2025-07-12 14:55:55 +02:00
Thorsten Roßner
c5dd8814ae fix(helmfile): Remove default setting from repositories.helm.registryOpencodeDeEnterprise for better support of PRIVATE_HELM_REGISTRY_URL 2025-07-12 14:55:55 +02:00
Thorsten Roßner
c56f564025 feat(collabora): Update from 24.04.13 to 25.04.2 2025-07-12 14:55:55 +02:00
Oliver Günther
e30d4f126d fix(openproject): Update from 16.1.0 to 16.1.1 2025-07-12 14:55:33 +02:00
Thorsten Roßner
55b93cb190 chore(helmfile): Add description for davSupport in functional.yaml.gotmpl 2025-07-01 11:54:18 +00:00
Thorsten Roßner
d3c7462371 docs(getting-started.md): Improve wording 2025-07-01 06:46:12 +00:00
Axel Lender
7f478bffd6 fix(helmfile): Prefix NATS passwords as workaround for upstream issue and add documentation to gettings-started.md [#185, #202] 2025-06-30 17:04:27 +02:00
Niels Lindenthal
3df9342b31 chore(changelog): Fix typo in component name open-xchange 2025-06-18 10:17:15 +02:00
Thorsten Roßner
6baec0b587 chore(reuse): Annotate merge request templates in REUSE.toml 2025-06-16 16:38:48 +02:00
René Fischer
5a3e47ea5d chore(merge_request_templates): Add merge request templates 2025-06-16 14:35:49 +02:00
Thorsten Roßner
74c4cc309d chore(notes): Remove "Beta" label from portal tile 2025-06-16 10:27:17 +02:00
Thorsten Roßner
feaaa81094 chore(release): 1.5.0 [skip ci]
# [1.5.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.4.1...v1.5.0) (2025-06-16)

### Bug Fixes

* **dovecot:** Enable Dovecot ACL for CE (file) & EE (cassandra) ([9354ee7](9354ee7196))
* **notes:** Support templating of Ingress annotations `bodyTimeout` and `bodySize` to allow application defined upload limits to be reached ([69faf77](69faf77d15))
* **nubus:** Create required LDAP objects for `global.additionalMailDomains` ([4dcb683](4dcb683118))
* **nubus:** Explicitly template security context for Keycloak proxy ([e959438](e9594382ed))
* **nubus:** Update CSS for login screen to show login button for federated IdP ([0d4e1b0](0d4e1b01e3))
* **nubus:** Use read-only root filesystem for Keycloak bootstrap ([1edd7c3](1edd7c3f06))
* **open-xchange:** Enabled mail login resolver ([7547f49](7547f4948e))
* **open-xchange:** Update Dovecot CE chart to support ACLs (mailbox sharing) and usernames different from local part of mail address ([87c30ab](87c30ab8e3))
* **open-xchange:** Use login name instead of email between OX and Dovecot ([8e9ef08](8e9ef0867b))
* **openproject:** Update from 16.0.0 to 16.0.1 ([b60f9c7](b60f9c7576))
* **openxchange:** Update App Suite 8.37 to latest patch level (8.37.69) ([bc436b2](bc436b2485))

### Features

* **ci:** Update Helm to 3.18.1 and Helmfile to 1.1.1 ([59a4086](59a40864ed))
* **notes:** Update from 2.4.0 to 3.2.1 ([9f4e3c8](9f4e3c86c7))
* **open-xchange:** Support for `mailAlternativAddress`(es) for sending and receiving emails ([6d6b1a6](6d6b1a6dd7))
* **openproject:** Update from 15.5.1 to 16.0.0 including Helm chart update ([add7266](add72669ae))
2025-06-16 08:03:51 +00:00
Thorsten Roßner
03f414ffaf chore(publiccode.yml): Update version number to 1.5.0 2025-06-16 08:38:18 +02:00
Thorsten Roßner
f773a9371c ci(diff-on-branch): Merge doublette variables block 2025-06-16 08:36:25 +02:00
rweber
69faf77d15 fix(notes): Support templating of Ingress annotations bodyTimeout and bodySize to allow application defined upload limits to be reached 2025-06-16 08:36:25 +02:00
rweber
9f4e3c86c7 feat(notes): Update from 2.4.0 to 3.2.1 2025-06-16 08:36:25 +02:00
Thorsten Roßner
e06642f6b6 ci(diff-on-branch): Update to ensure opendesk-env files are loaded 2025-06-16 08:36:25 +02:00
Thorsten Roßner
0d4e1b01e3 fix(nubus): Update CSS for login screen to show login button for federated IdP 2025-06-16 08:36:25 +02:00
Viktor Pracht
bc436b2485 fix(openxchange): Update App Suite 8.37 to latest patch level (8.37.69) 2025-06-16 08:35:28 +02:00
René Fischer
3b9fd4eb99 docs(README-EE.md): Add link to enterprise_keys.yml.gotmpl 2025-06-16 08:35:28 +02:00
Yannik Schmidt
e9594382ed fix(nubus): Explicitly template security context for Keycloak proxy 2025-06-16 08:35:28 +02:00
Timo Hollwedel
1edd7c3f06 fix(nubus): Use read-only root filesystem for Keycloak bootstrap 2025-06-16 08:35:28 +02:00
Thomas Kaltenbrunner
6d6b1a6dd7 feat(open-xchange): Support for mailAlternativAddress(es) for sending and receiving emails 2025-06-16 08:35:28 +02:00
Christophe Bliard
b60f9c7576 fix(openproject): Update from 16.0.0 to 16.0.1 2025-06-16 08:35:28 +02:00
Thorsten Roßner
4dcb683118 fix(nubus): Create required LDAP objects for global.additionalMailDomains 2025-06-16 08:35:28 +02:00
Thorsten Roßner
bc8028dd93 ci: Add diff-on-branch feature 2025-06-16 08:35:28 +02:00
Thorsten Roßner
e143a9c9d8 chore(helmfile): Bump images of opendesk-element-syncadmins, opendesk-nextcloud-exporter and postfix to current builds using the gitlab-config v2.4.10 to avoid layer mimetype issues when mirroring images 2025-06-16 08:35:28 +02:00
Thomas Kaltenbrunner
9354ee7196 fix(dovecot): Enable Dovecot ACL for CE (file) & EE (cassandra) 2025-06-16 08:35:28 +02:00
Viktor Pracht
8e9ef0867b fix(open-xchange): Use login name instead of email between OX and Dovecot 2025-06-16 08:35:28 +02:00
Thorsten Roßner
87c30ab8e3 fix(open-xchange): Update Dovecot CE chart to support ACLs (mailbox sharing) and usernames different from local part of mail address 2025-06-16 08:35:28 +02:00
Viktor Pracht
7547f4948e fix(open-xchange): Enabled mail login resolver 2025-06-16 08:35:28 +02:00
Viktor Pracht
b608a610fe chore(openxchange): Updated OX App Suite Pro charts only to 8.37 2025-06-16 08:35:09 +02:00
Thorsten Roßner
59a40864ed feat(ci): Update Helm to 3.18.1 and Helmfile to 1.1.1 2025-06-03 07:42:45 +00:00
Markus Kahl
add72669ae feat(openproject): Update from 15.5.1 to 16.0.0 including Helm chart update 2025-06-03 06:49:58 +00:00
Thorsten Roßner
fe510fa679 chore(helmfile): Post release update of global.generated.yaml.gotmpl 2025-06-02 10:10:32 +02:00
Thorsten Roßner
805cdf26ae chore(release): 1.4.1 [skip ci]
## [1.4.1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.4.0...v1.4.1) (2025-06-02)

### Bug Fixes

* **nextcloud:** Update NC CE to 30.0.10 ([785be8b](785be8b662))
* **nextcloud:** Update Nextcloud incl. apps to 30.0.10 ([559fbf6](559fbf6801))
* **nubus:** Use `.Values.theme.texts.productName` for Keycloak's `loginTitle` instead of static product name string ([d1a1e5d](d1a1e5dc29))
* **open-xchange:** Re-adding `com.openexchange.oauth.provider.*` to fix central contacts feature ([561e44f](561e44fd4c))
* **open-xchange:** Set `com.openexchange.hostname` to get working links in outgoing system mails (e.g. task assignments) ([0d61687](0d616871e3))
* **postfix:** Require TLSv1.3 ([3b3d8ac](3b3d8aca54))
* **requirements.md:** Helm 3.18.x is not supported due to upstream bug ([1ea9cae](1ea9cae1ce))
2025-06-02 08:01:20 +00:00
Thorsten Roßner
559fbf6801 fix(nextcloud): Update Nextcloud incl. apps to 30.0.10 2025-06-02 07:05:58 +02:00
Thorsten Roßner
561e44fd4c fix(open-xchange): Re-adding com.openexchange.oauth.provider.* to fix central contacts feature 2025-06-02 07:05:58 +02:00
Thomas Kaltenbrunner
0d616871e3 fix(open-xchange): Set com.openexchange.hostname to get working links in outgoing system mails (e.g. task assignments) 2025-06-02 07:05:58 +02:00
Thorsten Roßner
b185fe055c docs(migrations.md): [#188] Update to point out requirement for IdP federation configuration 2025-06-02 07:05:58 +02:00
Thorsten Roßner
d1a1e5dc29 fix(nubus): Use .Values.theme.texts.productName for Keycloak's loginTitle instead of static product name string 2025-06-02 07:05:58 +02:00
Tilman Lüttje
1ea9cae1ce fix(requirements.md): Helm 3.18.x is not supported due to upstream bug 2025-06-02 07:05:52 +02:00
Thomas Kaltenbrunner
3b3d8aca54 fix(postfix): Require TLSv1.3 2025-05-30 17:02:07 +02:00
Tilman Lüttje
785be8b662 fix(nextcloud): Update NC CE to 30.0.10 2025-05-30 17:01:45 +02:00
Dominik Kaminski
6d06e1fcc2 chore(release): 1.4.0 [skip ci]
# [1.4.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.3.2...v1.4.0) (2025-05-20)

### Bug Fixes

* **docs:** Update requirements, bump helmfile to v1.0.0 ([88b29c5](88b29c57e8))
* **dovecot:** Encode object storage password and add more template values ([c40de73](c40de73ccf))
* **nubus:** [[#182](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/182)] Add `KC_TRUSTSTORE_PATHS` to Keycloak when using self-signed certificates ([006aed7](006aed791e))
* **nubus:** [[#183](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/183)] Do not override `nubusPortalConsumer.waitForDependency.image` when using self-signed certificates ([b45a0bf](b45a0bf832))
* **nubus:** Update ArgoCD hook annotations ([f2b1384](f2b1384670))
* **open-xchange:** Update Open-Xchange to v8.36 ([b40b863](b40b8630c1))
* **open-xchange:** Update Open-Xchange to v8.37 ([174c73c](174c73c012))
* **openproject:** Update to 15.5.1 ([e91efa8](e91efa8ecc))
* **openxchange:** Add proper dav URLs in client onboarding and disable unnecessary oauth section ([bba2af0](bba2af0f06))
* **openxchange:** Disable redundant o-x-authentication-oauth package ([1d2b17b](1d2b17b495))
* **openxchange:** Enable DAV support ([709e50f](709e50ff7c))

### Features

* **collabora:** Update enterprise image to 24.04.13.4.1 ([b590810](b5908100dd))
* **helmfile:** Define `global.additionalMailDomains` as list; if you use the setting already, check `migrations.md` for details ([4b30576](4b305768c4))
* **helmfile:** Option to select default file format for weboffice using; see `functional.weboffice.defaultFormat` in `functional.yaml.gotmpl` for details ([5f58a85](5f58a857ac))
* **nubus:** Update nubus to v1.9.1 ([3d694a8](3d694a8248))
2025-05-20 00:46:42 +00:00
Justus Holzberger
b9640d9321 chore(docs): Update links, images and tables in docs 2025-05-20 00:05:43 +02:00
Thomas Kaltenbrunner
c40de73ccf fix(dovecot): Encode object storage password and add more template values 2025-05-20 00:00:55 +02:00
Norbert Tretkowski
3d694a8248 feat(nubus): Update nubus to v1.9.1 2025-05-19 23:57:45 +02:00
renovate
174c73c012 fix(open-xchange): Update Open-Xchange to v8.37 2025-05-19 14:56:20 +02:00
openDesk Bot
b1acec9171 chore(renovate): Update Element 2025-05-19 08:48:00 +00:00
Uta Lemke
2f56a94b2a docs(README-EE.md): Add caution note on XWiki license key format 2025-05-16 13:57:55 +00:00
Tilman Lüttje
b5908100dd feat(collabora): Update enterprise image to 24.04.13.4.1 2025-05-16 09:08:32 +00:00
renovate
cc16bee370 chore(renovate): Update bmi/opendesk/components/supplier/collabora/images/collabora-online-for-opendesk Docker tag to v24.04.14.3.1 2025-05-16 09:08:32 +00:00
Dominik Kaminski
26970483b2 chore(helmfile): Update a bunch of external images 2025-05-15 23:03:33 +02:00
openDesk Bot
f8fa301b6c chore(renovate): Update alpine/k8s Docker tag to v1.33.0 2025-05-15 20:47:42 +02:00
Dominik Kaminski
b40b8630c1 fix(open-xchange): Update Open-Xchange to v8.36 2025-05-15 19:39:01 +02:00
openDesk Bot
9b9726087f chore(renovate): Update Open-Xchange 2025-05-15 15:22:39 +02:00
Dominik Kaminski
88b29c57e8 fix(docs): Update requirements, bump helmfile to v1.0.0 2025-05-15 14:34:34 +02:00
Dominik Kaminski
f2b1384670 fix(nubus): Update ArgoCD hook annotations 2025-05-15 13:39:59 +02:00
openDesk Bot
d916365cb4 chore(renovate): Update collabora-online Docker tag to v1.1.38 2025-05-14 13:29:59 +00:00
Thomas Kaltenbrunner
bba2af0f06 fix(openxchange): Add proper dav URLs in client onboarding and disable unnecessary oauth section 2025-05-13 19:25:47 +02:00
Viktor Pracht
1d2b17b495 fix(openxchange): Disable redundant o-x-authentication-oauth package
Also fixed a typo in oidcPath.
2025-05-13 19:25:47 +02:00
Thomas Kaltenbrunner
709e50ff7c fix(openxchange): Enable DAV support 2025-05-13 19:25:47 +02:00
openDesk Bot
7603bbdc64 chore(renovate): Update library/postgres Docker tag to v16.9 2025-05-10 03:36:39 +00:00
135 changed files with 5203 additions and 1647 deletions

View File

@@ -4,7 +4,7 @@
---
include:
- project: "${PROJECT_PATH_GITLAB_CONFIG_TOOLING}"
ref: "v2.4.9"
ref: "v2.4.10"
file:
- "ci/common/lint.yml"
- "ci/release-automation/semantic-release.yml"
@@ -80,6 +80,15 @@ variables:
options:
- "yes"
- "no"
FLUSH_EXTERNAL_SERVICES_TYPE:
description: >
Select the type of external services (e.g. "RUN", or "STACKIT"), as they require different
cleanup strategies. Requires `FLUSH_EXTERNAL_SERVICES_BEFORE=yes` and `ENV_STOP_BEFORE=yes`.
value: "CHANGE ME"
options:
- "RUN"
- "STACKIT"
- "CHANGE ME"
DEBUG_ENABLED:
description: >
Allows to set `debug.enabled` to true for a deployment, needs to be supported by stage specific
@@ -182,6 +191,9 @@ variables:
options:
- "yes"
- "no"
DIFF_ON_BRANCH:
description: "Provide a branch to run `helmfile diff` for the specified branch."
value: ""
RUN_TESTS:
description: "Triggers execution of E2E-tests."
value: "no"
@@ -220,6 +232,9 @@ variables:
TESTS_PROJECT_URL:
description: "Project url for e2e-tests (`<domain of gitlab>/api/v4/projects/<id>`)"
value: "gitlab.opencode.de/api/v4/projects/1506"
HELM_IMAGE_PIN:
description: "The Helm image tag/checksum."
value: "1.3.3@sha256:3e195942e6988b8b93c62349700c0ed8428e3a8fbe2655bd7f5378dc88bc8ccb"
# Declare .environments which is in `opendesk-env` repository. In case it is not available
# 'cache' is used because job as a dummy key, as the job is not allowed to be empty.
@@ -232,8 +247,7 @@ variables:
extends: ".environments"
environment:
name: "${NAMESPACE}"
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/helm:1.3.1\
@sha256:de527f493044f06009045c369be831ababbc8dd74adaa378613c5acb1e654959"
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/helm:${HELM_IMAGE_PIN}"
script:
- "cd ${CI_PROJECT_DIR}/helmfile/apps/${COMPONENT}"
# MASTER_PASSWORD_WEB_VAR as precedence for MASTER_PASSWORD
@@ -267,53 +281,77 @@ db-cleanup:
when: "on_success"
script:
# yamllint disable-line rule:line-length rule:quoted-strings
- export FILES=(${CI_PROJECT_DIR}/helmfile/environments/default/database.yaml.gotmpl ${CI_PROJECT_DIR}/helmfile/environments/dev/write-over-values-for-environment.yaml.gotmpl)
# Cleanup MariaDB
- |
export DATABASES="oxAppSuite"
export MARIADB_HOST=""
export MARIADB_PORT=""
export MARIADB_USERNAME=""
export MARIADB_PASSWORD=""
echo "Checking FLUSH_EXTERNAL_SERVICES_TYPE value..."
case "$FLUSH_EXTERNAL_SERVICES_TYPE" in
"RUN")
echo " ... running flush procedure for RUN cluster."
;;
"STACKIT")
echo " ... running flush procedure for STACKIT provider."
;;
*)
echo "ERROR: FLUSH_EXTERNAL_SERVICES_TYPE is not set to valid value."
echo " Expected 'RUN' or 'STACKIT', got ${FLUSH_EXTERNAL_SERVICES_TYPE}."
exit 1
;;
esac
# First: Gather all files that contain the "database:" keyword in the default environment
- |
export FILES="$(grep -r 'databases:' "${CI_PROJECT_DIR}/helmfile/environments/default" |
awk -F ':' '{print $1}')"
# Second: Gather all files that contain the "database:" keyword in the dev environment
# where the adjustments from opendesk-env are placed
- |
export FILES="${FILES} $(grep -r 'databases:' "${CI_PROJECT_DIR}/helmfile/environments/dev" |
awk -F ':' '{print $1}')"
- "echo \"${FILES[@]}\""
# Cleanup MariaDB
- "export MARIADB_HOST=\"\""
- "export MARIADB_PORT=\"\""
- "export MARIADB_USERNAME=\"\""
- "export MARIADB_PASSWORD=\"\""
- "export ENV_DATABASE=\"oxAppSuite\""
for DATABASE in $DATABASES; do
export ENV_DATABASE=${DATABASE}
# Parse cluster values
for FILE in ${FILES[@]}; do
if [ -f ${FILE} ]; then
if [[ $(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)]') != "null" ]]; then
MARIADB_DATABASE=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].name')
MARIADB_USERNAME=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].username')
MARIADB_PASSWORD=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].password')
MARIADB_HOST=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].host')
MARIADB_PORT=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].port')
fi;
# Parse cluster values
- |
for FILE in ${FILES[@]}; do
if [ -f "${FILE}" ]; then
if [[ $(tail -n +1 "${FILE}" | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)]') != "null" ]]; then
MARIADB_DATABASE=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].name')
MARIADB_USERNAME=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].username')
MARIADB_PASSWORD=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].password')
MARIADB_HOST=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].host')
MARIADB_PORT=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].port')
fi;
done;
CONNECTION="--host=${MARIADB_HOST} \
--port=${MARIADB_PORT} \
--user=${MARIADB_USERNAME} \
--password=${MARIADB_PASSWORD} \
--skip-ssl"
echo "[mysql] [${ENV_DATABASE}] DROP ${MARIADB_DATABASE} on ${MARIADB_HOST}"
mariadb ${CONNECTION} -e "DROP DATABASE IF EXISTS ${MARIADB_DATABASE};"
if [ "${ENV_DATABASE}" = "oxAppSuite" ]; then
echo "[mysql] [${ENV_DATABASE}] DROP oxguard on ${MARIADB_HOST}"
mariadb ${CONNECTION} -e "DROP DATABASE IF EXISTS oxguard;"
echo "[mysql] [${ENV_DATABASE}] DROP oxguard_1 on ${MARIADB_HOST}"
mariadb ${CONNECTION} -e "DROP DATABASE IF EXISTS oxguard_1;"
echo "[mysql] [${ENV_DATABASE}] DROP PRIMARYDB_9 on ${MARIADB_HOST}"
mariadb ${CONNECTION} -e "DROP DATABASE IF EXISTS PRIMARYDB_9;"
else
mariadb ${CONNECTION} -e "CREATE DATABASE ${MARIADB_DATABASE};"
mariadb ${CONNECTION} -e "GRANT ALL PRIVILEGES ON ${MARIADB_DATABASE}.* TO ${MARIADB_USERNAME}@\"%\";"
mariadb ${CONNECTION} -e "FLUSH PRIVILEGES;"
fi;
done;
- |
export CONNECTION=(
"--host=${MARIADB_HOST}"
"--port=${MARIADB_PORT}"
"--user=${MARIADB_USERNAME}"
"--password=${MARIADB_PASSWORD}"
"--skip-ssl"
)
- "echo \"[mysql] [${ENV_DATABASE}] DROP ${MARIADB_DATABASE} on ${MARIADB_HOST}\""
- "mariadb ${CONNECTION[@]} -e \"DROP DATABASE IF EXISTS ${MARIADB_DATABASE};\""
- |
if [ "${ENV_DATABASE}" = "oxAppSuite" ]; then
echo "[mysql] [${ENV_DATABASE}] DROP oxguard on ${MARIADB_HOST}"
mariadb ${CONNECTION[@]} -e "DROP DATABASE IF EXISTS oxguard;"
echo "[mysql] [${ENV_DATABASE}] DROP oxguard_1 on ${MARIADB_HOST}"
mariadb ${CONNECTION[@]} -e "DROP DATABASE IF EXISTS oxguard_1;"
echo "[mysql] [${ENV_DATABASE}] DROP PRIMARYDB_9 on ${MARIADB_HOST}"
mariadb ${CONNECTION[@]} -e "DROP DATABASE IF EXISTS PRIMARYDB_9;"
else
mariadb ${CONNECTION[@]} -e "CREATE DATABASE ${MARIADB_DATABASE};"
mariadb ${CONNECTION[@]} -e "GRANT ALL PRIVILEGES ON ${MARIADB_DATABASE}.* TO ${MARIADB_USERNAME}@\"%\";"
mariadb ${CONNECTION[@]} -e "FLUSH PRIVILEGES;"
fi;
# Cleanup PostgreSQL
- |
export DATABASES="keycloak keycloakExtension nextcloud notes openproject synapse umsGuardianManagementApi \
@@ -331,30 +369,42 @@ db-cleanup:
# Parse cluster values
for FILE in ${FILES[@]}; do
if [ -f $FILE ]; then
if [[ $(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)]') != "null" ]]; then
POSTGRES_DATABASE=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].name')
PGUSER=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].username')
PGPASSWORD=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].password')
PGHOST=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].host')
PGPORT=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].port')
PGPARAMS=$(tail -n +5 $FILE | yq '.databases.[env(ENV_DATABASE)].parameters')
if [[ $(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)]') != "null" ]]; then
POSTGRES_DATABASE=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].name')
PGUSER=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].username')
PGPASSWORD=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].password')
PGHOST=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].host')
PGPORT=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].port')
PGPARAMS=$(tail -n +1 $FILE | grep -v '{{' | yq '.databases.[env(ENV_DATABASE)].parameters')
fi;
fi;
done;
echo "[psql] [${ENV_DATABASE}] DROP ${POSTGRES_DATABASE} on ${PGHOST}"
psql -c "DROP DATABASE ${POSTGRES_DATABASE}" || true;
if [ "${PGPARAMS}" = "null" ]; then
psql -c "CREATE DATABASE \"${POSTGRES_DATABASE}\";"
else
psql -c "CREATE DATABASE \"${POSTGRES_DATABASE}\" ${PGPARAMS};"
fi;
psql -c "ALTER DATABASE \"${POSTGRES_DATABASE}\" OWNER TO \"${PGUSER}\"";
psql -c "GRANT ALL PRIVILEGES ON DATABASE \"${POSTGRES_DATABASE}\" TO \"${PGUSER}\"";
case "$FLUSH_EXTERNAL_SERVICES_TYPE" in
"STACKIT")
# In case of STACKIT resources the db content should just be dropped
echo "[psql] [${ENV_DATABASE}] DROP OWNED BY ${PGUSER} in ${POSTGRES_DATABASE} on ${PGHOST}"
PGDATABASE=${POSTGRES_DATABASE} # env var PGDATABASE is interpreted by psql
psql -c "DROP OWNED BY ${PGUSER};" || true;
;;
"RUN")
# Usually, e.g. in "RUN" cluster, databases can simply be dropped and recreated
echo "[psql] [${ENV_DATABASE}] DROP ${POSTGRES_DATABASE} on ${PGHOST}"
psql -c "DROP DATABASE ${POSTGRES_DATABASE}" || true;
if [ "${PGPARAMS}" = "null" ]; then
psql -c "CREATE DATABASE \"${POSTGRES_DATABASE}\";"
else
psql -c "CREATE DATABASE \"${POSTGRES_DATABASE}\" ${PGPARAMS};"
fi;
psql -c "ALTER DATABASE \"${POSTGRES_DATABASE}\" OWNER TO \"${PGUSER}\"";
psql -c "GRANT ALL PRIVILEGES ON DATABASE \"${POSTGRES_DATABASE}\" TO \"${PGUSER}\"";
;;
esac
done;
# Cleanup Objectstore
- |
export BUCKETS="migrations nextcloud openproject nubus notes"
export BUCKETS="migrations nextcloud openproject nubus notes openxchange dovecot"
export AWS_DEFAULT_REGION=""
export AWS_ENDPOINT=""
export AWS_ACCESS_KEY_ID=""
@@ -366,12 +416,12 @@ db-cleanup:
# Parse cluster values
for FILE in ${FILES[@]}; do
if [ -f $FILE ]; then
if [[ $(tail -n +5 $FILE | yq '.objectstores.[env(ENV_BUCKET)]') != "null" ]]; then
AWS_BUCKET=$(tail -n +5 $FILE | yq '.objectstores.[env(ENV_BUCKET)].bucket')
AWS_ENDPOINT=$(tail -n +5 $FILE | yq '.objectstores.[env(ENV_BUCKET)].endpoint')
AWS_ACCESS_KEY_ID=$(tail -n +5 $FILE | yq '.objectstores.[env(ENV_BUCKET)].username')
AWS_SECRET_ACCESS_KEY=$(tail -n +5 $FILE | yq '.objectstores.[env(ENV_BUCKET)].secretKey')
AWS_DEFAULT_REGION=$(tail -n +5 $FILE | yq '.objectstores.[env(ENV_BUCKET)].region')
if [[ $(tail -n +1 $FILE | grep -v '{{' | yq '.objectstores.[env(ENV_BUCKET)]') != "null" ]]; then
AWS_BUCKET=$(tail -n +1 $FILE | grep -v '{{' | yq '.objectstores.[env(ENV_BUCKET)].bucket')
AWS_ENDPOINT=$(tail -n +1 $FILE | grep -v '{{' | yq '.objectstores.[env(ENV_BUCKET)].endpoint')
AWS_ACCESS_KEY_ID=$(tail -n +1 $FILE | grep -v '{{' | yq '.objectstores.[env(ENV_BUCKET)].username')
AWS_SECRET_ACCESS_KEY=$(tail -n +1 $FILE | grep -v '{{' | yq '.objectstores.[env(ENV_BUCKET)].secretKey')
AWS_DEFAULT_REGION=$(tail -n +1 $FILE | grep -v '{{' | yq '.objectstores.[env(ENV_BUCKET)].region')
fi;
fi;
done;
@@ -390,6 +440,7 @@ env-cleanup:
when: "on_success"
script:
- |
echo "Cleaning up ${NAMESPACE}"
if [ "${OPENDESK_SLEDGEHAMMER_DESTROY_ENABLED}" = "yes" ]; then
for OPENDESK_RELEASE in $(helm ls -n ${NAMESPACE} -aq); do
helm uninstall -n ${NAMESPACE} ${OPENDESK_RELEASE};
@@ -671,6 +722,35 @@ fetch-administrator-credentials:
reports:
dotenv: ".env"
diff-on-branch:
stage: "post-execute"
cache: {}
dependencies: []
extends: ".environments"
environment:
name: "${NAMESPACE}"
image: "registry.opencode.de/bmi/opendesk/components/platform-development/images/helm:${HELM_IMAGE_PIN}"
rules:
- if: "$DIFF_ON_BRANCH"
script:
- |
echo "Downloading branch ${DIFF_ON_BRANCH}"
SAFE_BRANCH_NAME=$(echo "$DIFF_ON_BRANCH" | tr '/' '-')
BASE_URL="https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/archive"
FILE_NAME="opendesk-${SAFE_BRANCH_NAME}.tar.gz"
curl -L "${BASE_URL}/${DIFF_ON_BRANCH}/${FILE_NAME}" -o branch.tar.gz
mkdir ${DIFF_ON_BRANCH_SUBDIRECTORY} &&
tar -xzf branch.tar.gz -C ${DIFF_ON_BRANCH_SUBDIRECTORY} --strip-components=1
cd ${DIFF_ON_BRANCH_SUBDIRECTORY}
helmfile --namespace ${NAMESPACE} diff | grep -v '^ ' || true
tags:
- "docker"
- "kubernetes"
- "${CLUSTER}"
variables:
HELMFILE_ENVIRONMENT: "dev"
DIFF_ON_BRANCH_SUBDIRECTORY: "diff-on-branch"
import-default-accounts:
stage: "post-execute"
extends: ".environments"
@@ -696,6 +776,7 @@ import-default-accounts:
--admin_enable_knowledgemanagement True \
--admin_enable_projectmanagement True \
--create_admin_accounts True \
--create_maildomains True \
--verify_certificate False
run-tests:

View File

@@ -0,0 +1,57 @@
# 🪲 Bugfix
*Expected MR Title and git commit message*
*`fix(<app-name>): <Short description of what has been fixed>`*
## ✅ Changes
Explain for the reviewer how the change addresses the issue, providing some insights on the underlaying cause of the bug.
- ...
## 🧪 How to reproduce & test
Provida a link to the issue or document the required details below.
In case it is a GitLab issue, reference it at the end of the commit message in square brackets, like `[#123]`
### Before the Fix
1. ...
### After the Fix
Provide steps for QA or reviewers to test the fix and mention anything reviewers should be aware of:
1. ...
## 🔄 Requirements for migrations
- [ ] Describe manual steps required to update existing deployments. This especially applies if this MR introduces breaking changes:
- [ ] Any other considerations in context of the update:
# Checklist / Sign-offs
## 🏷️ Labels
Set labels:
```
/label ~"MR-Type::Bugfix"
/label ~"PO::👀"
/label ~"Tech Lead::👀"
/label ~"QA::👀"
/label ~"Testautomation::👀"
```
# 👷 Developer Checklist
- Does the MR include new bits and pieces (e.g. new secrets) that require documentation?
- [ ] No.
- [ ] Yes, and the documentation was updated accordingly.
Document in an extra comment and link to that comment:
- [ ] How you verified the fix is working as expected, also in upgrade scenarios.
- [ ] Any regression testing done.
--> Link to comment:

View File

@@ -1,16 +1,8 @@
<!--
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
-->
Thank you for your contribution!
# Summary
Please follow these simple guidelines to continue:
- *describe the reason for/content of the MR*
# Commits
%{all_commits}
# Authors
%{co_authored_by}
- Create MRs early and use the "draft" state to show that this MR isn't ready for review and merge.
- Flag the MR "ready" as soon as it can be reviewed and QA'd.
- Always assign the MR to yourself and set somebody from the development team as reviewer. If you do not know whom to chose leave the reviewer empty.
- Select one of the templates in case your contribution contains more than simple documentation updates and follow the templates instructions.

View File

@@ -0,0 +1,47 @@
# ⬆️ Feature
*Expected MR Title and git commit message*
*`feat(<app-name>): <Short description of the new feature>`*
## ✅ Changes
List the key changes made in this MR:
- ...
## 🧪 Tests
Provide steps for QA or reviewers to test the feature and mention anything reviewers should be aware of:
- ...
## 🔄 Requirements for migrations
- [ ] Describe manual steps required to update existing deployments. This especially applies if this MR introduces breaking changes:
- [ ] Any other considerations in context of the update:
# Checklist / Sign-offs
## 🏷️ Labels
Set labels:
```
/label ~"MR-Type::Feature"
/label ~"PO::👀"
/label ~"Tech Lead::👀"
/label ~"QA::👀"
/label ~"Testautomation::👀"
```
# 👷 Developer Checklist
- Does the MR include new bits and pieces (e.g. new secrets) that require documentation?
- [ ] No.
- [ ] Yes, and the documentation was updated accordingly.
Document in an extra comment and link to that comment:
- [ ] How you verified the feature is working as expected, also in upgrade scenarios.
- [ ] Any regression testing done.
--> Link to comment:

View File

@@ -0,0 +1,41 @@
# 🎉 Other
*Expected MR Title and git commit message*
*`fix(<component>): <Short description of what has been changed>`*
## ✅ Changes
Explain for the reviewer and QA the reason for the MR and what changes are included.
- ...
## 🔄 Requirements for migrations
- [ ] Describe manual steps required to update existing deployments. This especially applies if this MR introduces breaking changes:
- [ ] Any other considerations in context of the update:
# Checklist / Sign-offs
## 🏷️ Labels
Set labels:
```
/label ~"MR-Type::Other"
/label ~"PO::👀"
/label ~"Tech Lead::👀"
/label ~"QA::👀"
/label ~"Testautomation::👀"
```
# 👷 Developer Checklist
- Does the MR include new bits and pieces (e.g. new secrets) that require documentation?
- [ ] No.
- [ ] Yes, and the documentation was updated accordingly.
Document in an extra comment and link to that comment:
- [ ] How you verified the change is working as expected, also in upgrade scenarios.
- [ ] Any regression testing done.
--> Link to comment:

View File

@@ -0,0 +1,41 @@
# ⬆️ Application Update
*Expected MR Title and git commit message*
*`feat/fix(<app-name>): Update from <old-version> to <new-version>`*
## 📋 Changelog/Release Notes
- [ ] [README.md](../../README.md) component table updated including the link to the related release notes
- [ ] Provide significant improvements you'd like to see in the openDesk release notes. If you have a lot of details to provide or someone else is providing the details, please use a comment on the MR and link the comment in here.
## 🔄 Requirements for migrations
- [ ] Minimum version of the application required in existing depoyments to update/upgrade:
- [ ] Describe manual steps required to update existing deployments. This especially applies if the upgrade includes any breaking changes:
- [ ] Any other considerations in context of the update:
# Checklist / Sign-offs
## 🏷️ Labels
Set labels:
```
/label ~"MR-Type::AppUpdate"
/label ~"PO::👀"
/label ~"Tech Lead::👀"
/label ~"QA::👀"
/label ~"Testautomation::👀"
```
## 👷 Developer Checklist
- Does the MR include new bits and pieces (e.g. new secrets) that require documentation?
- [ ] No.
- [ ] Yes, and the documentation was updated accordingly.
Document in an extra comment and link to that comment:
- [ ] How you verified the update is working as expected, also in upgrade scenarios.
- [ ] Any regression testing done.
--> Link to comment:

View File

@@ -1,3 +1,129 @@
# [1.7.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.6.0...v1.7.0) (2025-08-11)
### Bug Fixes
* **collabora:** Connect to Collabora Controller websocket via service ([5d01f60](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/5d01f6023d6d300e106cc86dfca09a4ae388f4ca))
* **collabora:** Update from 25.04.2 to 25.04.3 ([3507c62](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/3507c62f832556c5d76e7a5b206acbdbcaca37a8))
* **helmfile:** Adds default-enterprise-overrides to default values in helmfile-generic ([672e649](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/672e649b608fa03f04834837f13c360a08e8eb6c))
* **nextcloud:** Block filesystem-unsafe characters in file and folder names ([0df6212](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/0df6212ca9399d39bedc30c064cbae80c2684e44))
* **nextcloud:** Include latest Helm chart version with supports `configuration.sharing.restrictUserEnumerationToGroup` ([c3dfa2a](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c3dfa2a6075ae388764acbb20bd8282a64183ed3))
* **notes:** Set Pod Disruption Budget (PDB) labels ([e35dac0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e35dac087aac54f545d361dee881196b264af906))
* **nubus:** Add `livenessProbe` for `nubusUdmListener` to mitigate cases where the listener becomes uninitialized and stops forwarding provisioning data to NATS. Temporary until upstream provides a probe ([ef8d67f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/ef8d67f3c1525de6f958ac7a8893b4b30ea3f7dc))
* **open-xchange:** Disable documents role ([573e11f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/573e11f5c5103ee5906b0168317054a7e5a22e87))
* **open-xchange:** Postfix to support submissions and external secrets ([13ab665](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/13ab6659001abf5b6c683bf6a9309972ef7412b3))
* **open-xchange:** Support application specific passwords in groupware when CalDAV/CardDAV support is enabled, see `functional.groupware.davSupport.enabled` for reference ([90b2290](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/90b22904dab0195f505021beb785317f8969ff7d))
* **open-xchange:** Use dedicated pod for migration ([6fd52b1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6fd52b167eeed5c7e9eda2a21b209680131380ee))
* **opendesk-certificates:** Update Helm chart to remove default host for `webmail` being set even if OX App Suite is not enabled ([09a0aac](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/09a0aace45227b60e9b39671e747958bd339c8c9))
* **opendesk-services:** Update opendesk-alerts from 1.1.1 to 1.1.2, update opendesk-dashboards from 1.1.1 to 1.1.2 ([174d4fc](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/174d4fc61cbb718818015779012fa65353987f3c))
* **openproject:** Update from 16.2.0 to 16.2.1 ([bba9b71](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/bba9b716a3fdf915bfc2925f1c27fe91494edcb0))
* **ox-connector:** Update OX Connector and OX Extension to v0.27.2; review `migrations.md` for required upgrade steps ([9d51e40](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/9d51e40063d73226fc8a25365cbfa92ff09f0910))
### Features
* **nextcloud:** Enhance theming options for Nextcloud ([bdc7331](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/bdc7331cb59da96941c3250625af3cb5f9b12e15))
* **notes:** Switch to new Helm chart with support for self-signed deployments; review `migrations.md` for required upgrade steps ([3106ca7](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/3106ca793ee1e0021f7c03e620873c49adb54199))
* **nubus:** Allow configuration of limits for password reset requests via `security.passwordResetLimits` ([09f54b4](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/09f54b41347ff5c90064c8d4c2c6a9db7f05d54c))
* **nubus:** Update from 1.11.2 to 1.12.0 ([5537dbb](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/5537dbbd7cb93dcb2aeafe9017c68a89d2e19293))
* **open-xchange:** Update from 8.38 to 8.39 ([489986e](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/489986e906e828f3877e7a9087541f10c5bbfe8c))
* **open-xchange:** Use internal endpoint for provisioning and support for optionally spinning up a dedicated internal Pod just for provisioning (see `technial.oxAppSuite.provisioning.dedicatedCoreMwPod` for details) ([31b7ec7](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/31b7ec78274e5a901b51aaaeed01e6ac82298b73))
* **openproject:** Update from 16.1.1 to 16.2.0 ([e273abb](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e273abbecf58b098e76c49e1763b4c3074bf5cec))
# [1.6.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.5.0...v1.6.0) (2025-07-14)
### Bug Fixes
* **dovecot-pro:** Use of `requiredEnv` instead of `env` and update `README-EE.md` ([a79e40f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a79e40f44af68a16f0944265cc447ec9b0d84922))
* **helmfile:** Prefix NATS passwords as workaround for upstream issue and add documentation to `gettings-started.md` [[#185](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/185), [#202](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/202)] ([7f478bf](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/7f478bffd60bdf3af536bc593ef397d823a22e88))
* **helmfile:** Remove default setting from `repositories.helm.registryOpencodeDeEnterprise` for better support of `PRIVATE_HELM_REGISTRY_URL` ([c5dd881](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c5dd8814ae7576eaaf7cfcdd1cb4aa101f164c62))
* **helmfile:** Set `nubusKeycloakBootstrap` debug mode when openDesk is running in debug mode ([4e0ffee](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/4e0ffeea1f9d0420c404d78c5188ff6bdb0f81ea))
* **helmfile:** Streamline license header comment style [[#192](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/192)] ([20cbad3](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/20cbad31e75d9ae27081675072561650fa168935))
* **nubus:** Explicitly template `nubusStackDataUms.stackDataContext.portalFqdn` to fix custom hostname support [[#193](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/193)] ([6aa6d3a](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6aa6d3af2fed1be99b4f4eb5de2e2703ca00578a))
* **nubus:** Replace openDesk portal fork with upstream `portal-frontend` image ([e4f1afc](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e4f1afca0fdf4af184f4e287f1317ed57d229013))
* **nubus:** Update from 1.11.1 to 1.11.2 ([237c9af](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/237c9af3c16885b51dcd1d7c793bf7fd23dbcefb))
* **open-xchange:** Add missing `imagePullSecrets` for `core-imageconverter` and `core-documentconverter` ([9b7f439](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/9b7f439d83c9cd5a60b70f8d3ba7d36bb35ebd5c))
* **open-xchange:** Enable `com.openexchange.smime.test` only when openDesk is running with `debug.enabled: true` ([51ff7a5](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/51ff7a5fdb7b7f3bdef02a32e44e6204df9db6ea))
* **open-xchange:** Enable searching by LDAP `mailAlternativeAddress` when resolving global contacts. Note: OX App Suite evaluates all `mailAlternativeAddress` values of a user when searching, but only the first address is returned, which might differ from the one that matched the search criteria. ([9014324](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/90143241564d7e66bf1b864c704e13c677dcbc93))
* **open-xchange:** Use `objectstore.dovecot.secretKey` when defined ([5c33226](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/5c332264edfcbb3343bcfd39352db6ddefd0a85c))
* **opendesk-services:** Add missing certificates ([acbabdb](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/acbabdb80662bf0599a157b24d3f8461e1f98cad))
* **openproject:** Update from 16.1.0 to 16.1.1 ([e30d4f1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e30d4f126dda29183cffc078307d41d3dce6f4fa))
### Features
* **collabora:** Update from 24.04.13 to 25.04.2 ([c56f564](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c56f564025531d25a1966792f8c161aedf644c99))
* **element:** Update NeoBoard from 2.1.0 to 2.2.1, NeoChoice from 1.5.1. to 1.5.2, NeoDateFix from 1.7.0 to 1.7.1 widgets and NeoDateFixBot from 2.8.2 to 2.8.3 latest releases ([98d31f8](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/98d31f811bdb007e40c4b3436ff65cdcf610db7e))
* **helmfile:** Add options in `functional.yaml.gotmpl` for setting the portal's corner links, toggling the welcome message and the newsfeed ([1a6f438](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1a6f438724cc442ca7b9c423a326c67690510301))
* **nextcloud:** Update from 30.0.10 to 31.0.6 and support for notify-push ([a4c8be6](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/a4c8be60f335af98270e40478e53e6fa34c23d38))
* **nubus:** Update from 1.9.1 to 1.11.1; required minimum openDesk version for this upgrade is 1.5.0, see `migrations.md` for details ([ccd5ab8](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/ccd5ab84e3f5bb67eb879a3683c299d7a61ddba0))
* **open-xchange:** Store attachments for calendar, contact and task objects in object storage; review `migrations.md` for required upgrade steps ([4eb6570](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/4eb6570b0a69931f09042bdc40edfad23e6f28c1))
* **open-xchange:** Updated OX App Suite from 8.37 to 8.38 ([2b31751](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/2b317514c61eba4ebc4cc9e7041aac606d8c16b8))
# [1.5.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.4.1...v1.5.0) (2025-06-16)
### Bug Fixes
* **dovecot:** Enable Dovecot ACL for CE (file) & EE (cassandra) ([9354ee7](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/9354ee719628c876c26e91e1b57a4a0cfafedca1))
* **notes:** Support templating of Ingress annotations `bodyTimeout` and `bodySize` to allow application defined upload limits to be reached ([69faf77](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/69faf77d15d1df441eb62c58374620f8035f2596))
* **nubus:** Create required LDAP objects for `global.additionalMailDomains` ([4dcb683](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/4dcb6831189fc9cedb244c3fd7997d57e8a78c5a))
* **nubus:** Explicitly template security context for Keycloak proxy ([e959438](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e9594382ed7a2469240d62134b34bcf3e5d06a59))
* **nubus:** Update CSS for login screen to show login button for federated IdP ([0d4e1b0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/0d4e1b01e3e82ace7f7438a754235a009036b90d))
* **nubus:** Use read-only root filesystem for Keycloak bootstrap ([1edd7c3](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1edd7c3f062ec411b8b38f45be9ef22a200b4bea))
* **open-xchange:** Enabled mail login resolver ([7547f49](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/7547f4948ea13357c4cbc3ae69ae4e7210fdf4a2))
* **open-xchange:** Update App Suite 8.37 to latest patch level (8.37.69) ([bc436b2](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/bc436b248525bf76584dd21f735694065bcb67a5))
* **open-xchange:** Update Dovecot CE chart to support ACLs (mailbox sharing) and usernames different from local part of mail address ([87c30ab](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/87c30ab8e32c1b405f6aff8eda5eed5f74d5df0a))
* **open-xchange:** Use login name instead of email between OX and Dovecot ([8e9ef08](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/8e9ef0867beb8381ad4a5f55f2e9d12bd7dbbba2))
* **openproject:** Update from 16.0.0 to 16.0.1 ([b60f9c7](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b60f9c7576deca327ad36c48ad0b1a7e3e9d3c9c))
### Features
* **ci:** Update Helm to 3.18.1 and Helmfile to 1.1.1 ([59a4086](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/59a40864edbdf9775e0d6003425c3b05b7b7cb15))
* **notes:** Update from 2.4.0 to 3.2.1 ([9f4e3c8](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/9f4e3c86c74ef6c6f618150a7a9d0935fb5ed437))
* **open-xchange:** Support for `mailAlternativAddress`(es) for sending and receiving emails ([6d6b1a6](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/6d6b1a6dd754dcb283fd23f08f9df937f8e08c59))
* **openproject:** Update from 15.5.1 to 16.0.0 including Helm chart update ([add7266](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/add72669aedfcd57b41fe8680f14940ab77f6aef))
## [1.4.1](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.4.0...v1.4.1) (2025-06-02)
### Bug Fixes
* **nextcloud:** Update NC CE to 30.0.10 ([785be8b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/785be8b6621305e79acca62250720028b9ca7a30))
* **nextcloud:** Update Nextcloud incl. apps to 30.0.10 ([559fbf6](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/559fbf6801fc785f26f9e6287e0730f86b459a01))
* **nubus:** Use `.Values.theme.texts.productName` for Keycloak's `loginTitle` instead of static product name string ([d1a1e5d](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/d1a1e5dc29ca21fd822abd127406f6859603b9c7))
* **open-xchange:** Re-adding `com.openexchange.oauth.provider.*` to fix central contacts feature ([561e44f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/561e44fd4cc42089954868da60edbd210b9a2608))
* **open-xchange:** Set `com.openexchange.hostname` to get working links in outgoing system mails (e.g. task assignments) ([0d61687](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/0d616871e3f5114ec429714658500c09af842fe6))
* **postfix:** Require TLSv1.3 ([3b3d8ac](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/3b3d8aca54bdaea055289c993e3f158d93864223))
* **requirements.md:** Helm 3.18.x is not supported due to upstream bug ([1ea9cae](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1ea9cae1ce46f864dc03d94c1a72956c5f5ba9a9))
# [1.4.0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.3.2...v1.4.0) (2025-05-20)
### Bug Fixes
* **docs:** Update requirements, bump helmfile to v1.0.0 ([88b29c5](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/88b29c57e8197f072b9c80019255ee0b7d1188e1))
* **dovecot:** Encode object storage password and add more template values ([c40de73](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/c40de73ccf02bf77df0c3a17c2fccf2e113c4b35))
* **nubus:** [[#182](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/182)] Add `KC_TRUSTSTORE_PATHS` to Keycloak when using self-signed certificates ([006aed7](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/006aed791e5cf58850712e468a15c8abe1ee0973))
* **nubus:** [[#183](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/issues/183)] Do not override `nubusPortalConsumer.waitForDependency.image` when using self-signed certificates ([b45a0bf](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b45a0bf832506fb60488cd01c9c883b58e1d60b6))
* **nubus:** Update ArgoCD hook annotations ([f2b1384](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/f2b13846700d8a49a066b3343b043dac89d326f5))
* **open-xchange:** Update Open-Xchange to v8.36 ([b40b863](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b40b8630c1a5ba7452d0461d38b1175fa647226d))
* **open-xchange:** Update Open-Xchange to v8.37 ([174c73c](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/174c73c012e911342644bdcb89d22b35be9baa36))
* **openproject:** Update to 15.5.1 ([e91efa8](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/e91efa8ecc1be9b444092e1a291747bb9f0c00ea))
* **openxchange:** Add proper dav URLs in client onboarding and disable unnecessary oauth section ([bba2af0](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/bba2af0f06942bd2063cc7b79f3e39fdb07838f0))
* **openxchange:** Disable redundant o-x-authentication-oauth package ([1d2b17b](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/1d2b17b4951581e1f60d8a7f2402512dc1c1c568))
* **openxchange:** Enable DAV support ([709e50f](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/709e50ff7c020347dad953be7380d08438d3ab69))
### Features
* **collabora:** Update enterprise image to 24.04.13.4.1 ([b590810](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/b5908100ddbd7497f7f858e874bcbf7979480d1b))
* **helmfile:** Define `global.additionalMailDomains` as list; if you use the setting already, check `migrations.md` for details ([4b30576](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/4b305768c444c166e28829ee05631451ba997126))
* **helmfile:** Option to select default file format for weboffice using; see `functional.weboffice.defaultFormat` in `functional.yaml.gotmpl` for details ([5f58a85](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/5f58a857acab38fa7f56e1e14ef0a6f805c7622e))
* **nubus:** Update nubus to v1.9.1 ([3d694a8](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/commit/3d694a8248d5e983ab3e05753326088b375f2d82))
## [1.3.2](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/compare/v1.3.1...v1.3.2) (2025-05-06)

View File

@@ -6,11 +6,9 @@ SPDX-License-Identifier: Apache-2.0
<h1>openDesk Enterprise Edition</h1>
<!-- TOC -->
* [Enabling the Enterprise deployment](#enabling-the-enterprise-deployment)
* [Configuring the oD EE deployment for self-hosted installations](#configuring-the-od-ee-deployment-for-self-hosted-installations)
* [Registry access](#registry-access)
* [License keys](#license-keys)
* [Component overview](#component-overview)
* [Overview](#overview)
* [Enterprise Features](#enterprise-features)
* [CE vs. EE](#ce-vs-ee)
* [CE Components](#ce-components)
* [EE Components](#ee-components)
* [Collabora](#collabora)
@@ -19,14 +17,117 @@ SPDX-License-Identifier: Apache-2.0
* [Open-Xchange](#open-xchange)
* [OX App Suite](#ox-app-suite)
* [OX Dovecot](#ox-dovecot)
* [Enabling the Enterprise deployment](#enabling-the-enterprise-deployment)
* [Configuring the oD EE deployment for self-hosted installations](#configuring-the-od-ee-deployment-for-self-hosted-installations)
* [Registry access](#registry-access)
* [License keys](#license-keys)
<!-- TOC -->
openDesk Enterprise Edition is recommended for production use. It receives support and patches from ZenDiS and the suppliers of the components due to the included product subscriptions.
# Overview
openDesk Enterprise Edition is recommended for production use. It receives support and patches from ZenDiS and the suppliers of the components due to the product subscriptions included.
This document refers to the openDesk Community Edition as "oD CE" and the openDesk Enterprise Edition as "oD EE".
Please contact [ZenDiS](mailto:opendesk@zendis.de) to get openDesk Enterprise, either as a SaaS offering or for your on-premises installation.
# Enterprise Features
oD EE ships the following features for Enterprise use that are not available in oD CE.
| Component | Enterprise-only Features |
| -------------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Collabora** | Branding |
| | [Automatic load scaling](https://www.collaboraonline.com/collabora-online-controller/) |
| **Element** | [AdminBot](https://ems-docs.element.io/books/element-cloud-documentation/page/admin-bot) |
| | [GroupSync](https://ems-docs.element.io/books/element-server-suite-classic-documentation-lts-2504/page/setting-up-group-sync-with-the-installer#bkmrk-what-is-group-sync?) |
| | [Admin Console](https://ems-docs.element.io/books/element-server-suite-classic-documentation-lts-2504/page/using-the-admin-console) |
| **Nextcloud** | Enterprise security patches |
| | [Guard app](https://nextcloud.com/features/#guard) |
| **OpenXchange** | S3 storage |
| | Central orchestration of cluster topology, health checks, and configuration |
| | Advanced Full-Text Search (FTS) functionality for mailboxes |
| **OpenProject**. | [Enterprise addons](https://www.openproject.org/docs/enterprise-guide/) (*Corporate Plan*) |
| **XWiki** | [XWiki Pro apps](https://xwiki.com/en/offerings/products/xwiki-pro) |
# CE vs. EE
The following table summarizes the differences between oD CE and oD EE.
| Aspect | Community Edition (CE) | Enterprise Edition (EE) |
| -------------------------------- | --------------------------------------- | -------------------------------------------------------------------------- |
| **Licensing of core components** | OSS (Apache2.0 / GPL, etc.) | Same OSS licenses |
| **Closedsource modules** | None | Collabora (branding), Element (admin tools), Nextcloud (guard app), OX Pro, Dovecot Pro |
| **Technical enablement** | Fully public images/charts via openCode | EEonly registry, license file (`enterprise.yaml`) |
| **Support & updates** | Community via openCode, no SLA | SLAbacked support, patches, 2nd/3rd level |
| **Access to source code** | All CE code on openCode | Proprietary modules NOT on openCode |
## CE Components
The following components are using the same codebase and artifacts for their Community and Enterprise offering:
- Cryptpad
- Jitsi
- Notes
- Nubus
- OpenProject
- XWiki
## EE Components
This section provides information about the components that have - at least partially - Enterprise-specific artifacts.
If you want to check in detail which artifacts are specific to openDesk Enterprise and thereby may contain proprietary code, please check the `repository:`
values in the image ([1](./helmfile/environments/default/images.yaml.gotmpl) / [2](./helmfile/environments/default-enterprise-overrides/images.yaml.gotmpl))
and chart ([1](./helmfile/environments/default/charts.yaml.gotmpl) / [2](./helmfile/environments/default-enterprise-overrides/charts.yaml.gotmpl)) definitions.
When a repository path starts with `/zendis`, the artifact is only available in an openDesk Enterprise deployment.
### Collabora
- Collabora Online (COOL) container image: Is build from the same public source code as Collabora Development Edition (CODE), only the build configurations might differ. COOL includes a brand package that is not public and its license is not open source.
- COOL Controller container image and Helm chart: Source code and chart are using Mozilla Public License Version 2.0, but the source code is not public. It is provided to customers upon request.
openDesk updates Collabora once a COOL image based on the version pattern `<major>.<minor>.<patch>.3+.<build>` was made available. This happens usually at the same time the CODE image with `<major>.<minor>.<patch>.2+.<build>` is made available.
### Element
- AdminBot and GroupSync container image: 100% closed source
- Admin Console container image: 100% closed source, though ~65% of the total runtime code is from the [matrix-bot-sdk](https://github.com/turt2live/matrix-bot-sdk/)
### Nextcloud
- Nextcloud Enterprise: openDesk uses the Nextcloud Enterprise to the build Nextcloud container image for oD EE. The Nextcloud EE codebase might contain EE exclusive (longterm support) security patches, plus the Guard app, that is not publicly available, while it is AGPL-3.0 licensed.
openDesk updates the Nextcloud images for openDesk CE and EE in parallel, therefore we will not upgrade to a new major Nextcloud release before the related Nextcloud Enterprise release is available. When patches are released exclusively for Nextcloud Enterprise, they are made available also exclusively in oD EE.
### Open-Xchange
#### OX App Suite
- OX App Suite Core Middleware container image: The amount of code, that is not open source and has a proprietary license, is <10%.
- OX App Suite Pro Helm chart: It is not publicly available, though it is "just" an umbrella chart re-using the publicly available charts referencing the EE images, so it has <10% prorietary content.
openDesk updates OX App Suite in oD CE and EE always to the same release version. Only the App Suíte Pro Helm chart has the same versioning as the actual App Suite release, the chart used in oD CE has a different versioning scheme.
#### OX Dovecot
- Dovecot Pro container image: Dovecot Pro is based on the open source components Dovecot and Pigeonhole but extended by modules providing additional functionality like obox2, cluster, cluster controller and dovecot fts. The additional modules make up about 15% of the overall Dovecot Pro code and are subject to a closed source license.
openDesk aims to keep Dovecot's shared codebases in sync between oD CE and EE, though the versioning between the releases differs (CE: 2.x, EE: 3.y).
Dovecot Pro requires two additional environment variables:
- `DOVECOT_CRYPT_PRIVATE_KEY`
- `DOVECOT_CRYPT_PUBLIC_KEY`
These variables must contain the base64 encoded strings of the private and public
key. These keys can be generated with the following commands:
- Private Key: `openssl genpkey -algorithm X25519 -out private.pem && cat private.pem | base64 -w0`
- Public Key: `openssl pkey -in private.pem -out public.pem -pubout && cat public.pem | base64 -w0`
# Enabling the Enterprise deployment
To enable the oD EE deployment you must set the environment variable `OPENDESK_ENTERPRISE` to any value that does not evaluate to boolean *false* for [Helm flow control](https://helm.sh/docs/chart_template_guide/control_structures/#ifelse), e.g. `"true"`, `"yes"` or `"1"`:
@@ -45,7 +146,7 @@ OPENDESK_ENTERPRISE=true
With openDesk EE you get access to the related artifact registry owned by ZenDiS.
Three steps are required to access the registry - for step #1 and #2 you can set some variables. Below, you can define `<your_name_for_the_secret>` freely, like `enterprise-secret`, as long as it consistent in step #1 and #3.
Three steps are required to access the registry - for step 1 and 2 you can set some variables. Below, you can define `<your_name_for_the_secret>` freely, like `enterprise-secret`, as long as it consistent in step 1 and 3.
```shell
NAMESPACE=<your_namespace>
@@ -86,7 +187,7 @@ repositories:
## License keys
Some applications require license information for their Enterprise features to be enabled. With the aforementioned registry credentials you will also receive a file called `enterprise.yaml` containing the relevant license keys.
Some applications require license information for their Enterprise features to be enabled. With the aforementioned registry credentials you will also receive a file called [`enterprise.yaml`](./helmfile/environments/default/enterprise_keys.yaml.gotmpl) containing the relevant license keys.
Please place the file next your other `.yaml.gotmpl` file(s) that configure your deployment.
@@ -94,59 +195,4 @@ Details regarding the scope/limitation of the component's licenses:
- Nextcloud: Enterprise license to enable [Nextcloud Enterprise](https://nextcloud.com/de/enterprise/) specific features, can be used across multiple installations until the licensed number of users is reached.
- OpenProject: Domain specific enterprise license to enable [OpenProject's Enterprise feature set](https://www.openproject.org/enterprise-edition/), domain matching can use regular expressions.
- XWiki: Deployment specific enterprise license (key pair) to activate the [XWiki Pro](https://xwiki.com/en/offerings/products/xwiki-pro) apps.
# Component overview
## CE Components
The following components are using the same codebase and artifacts for their Enterprise and Community offering:
- Cryptpad
- Jitsi
- Notes
- Nubus
- OpenProject
- XWiki
## EE Components
This section provides information about the components that have - at least partially - Enterprise specific artifacts.
If you want to check in detail which artifacts are specific to openDesk Enterprise and thereby may contain proprietary code, please check the `repository:`
values in the image ([1](./helmfile/environments/default/images.yaml.gotmpl) / [2](./helmfile/environments/default-enterprise-overrides/images.yaml.gotmpl))
and chart ([1](./helmfile/environments/default/charts.yaml.gotmpl) / [2](./helmfile/environments/default-enterprise-overrides/charts.yaml.gotmpl)) definitions.
When a repository path starts with `/zendis`, the artifact is only available in an openDesk Enterprise deployment.
### Collabora
- Collabora Online (COOL) container image: Is build from the same public source code as Collabora Development Edition (CODE), only the build configurations might differ. COOL includes a brand package that is not public and its license is not open source.
- COOL Controller container image and Helm chart: Source code and chart are using Mozilla Public License Version 2.0, but the source code is not public. It is provided to customers upon request.
openDesk updates Collabora once a COOL image based on the version pattern `<major>.<minor>.<patch>.3+.<build>` was made available. This happens usually at the same time the CODE image with `<major>.<minor>.<patch>.2+.<build>` is made available.
### Element
- AdminBot and GroupSync container image: 100% closed source
- Admin Console container image: 100% closed source, though ~65% of the total runtime code is from the [matrix-bot-sdk](https://github.com/turt2live/matrix-bot-sdk/)
### Nextcloud
- Nextcloud Enterprise: openDesk uses the Nextcloud Enterprise to the build Nextcloud container image for oD EE. The Nextcloud EE codebase might contain EE exclusive (longterm support) security patches, plus the Guard app, that is not publicly available, while it is AGPL-3.0 licensed.
openDesk updates the Nextcloud images for openDesk CE and EE in parallel, therefore we will not upgrade to a new major Nextcloud release before the related Nextcloud Enterprise release is available. When patches are released exclusively for Nextcloud Enterprise, they are made available also exclusively in oD EE.
### Open-Xchange
#### OX App Suite
- OX App Suite Core Middleware container image: The amount of code, that is not open source and has a proprietary license, is <10%.
- OX App Suite Pro Helm chart: It is not publicly available, though it is "just" an umbrella chart re-using the publicly available charts referencing the EE images, so it has <10% prorietary content.
openDesk updates OX App Suite in od CE and EE always to the same release version. Only the App Suíte Pro Helm chart has the same versioning as the actual App Suite release, the chart used in oD CE has a different versioning scheme.
#### OX Dovecot
- Dovecot Pro container image: Dovecot Pro is based on the open source components Dovecot and Pigeonhole but extended by modules providing additional functionality like obox2, cluster, cluster controller and dovecot fts. The additional modules make up about 15% of the overall Dovecot Pro code and are subject to a closed source license.
openDesk aims to keep Dovecot's shared codebases in sync between oD CE and EE, though the versioning between the releases differs (CE: 2.x, EE: 3.y).
- XWiki: Deployment specific enterprise license (key pair) to activate the [XWiki Pro](https://xwiki.com/en/offerings/products/xwiki-pro) apps. *Caution! XWiki needs these license keys as one-line strings. Multi-line strings result in installation failure*

View File

@@ -32,18 +32,18 @@ For production use, the [openDesk Enterprise Edition](./README-EE.md) is recomme
openDesk currently features the following functional main components:
| Function | Functional Component | Component<br/>Version | Upstream Documentation |
|----------------------|-----------------------------|-------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|
| Chat & collaboration | Element ft. Nordeck widgets | [1.11.89](https://github.com/element-hq/element-desktop/releases/tag/v1.11.89) | [For the most recent release](https://element.io/user-guide) |
| Collaborative notes | Notes (aka Docs) | [2.4.0](https://github.com/suitenumerique/docs/releases/tag/v2.4.0) | Online documentation/welcome document available in installed application |
| Diagram editor | CryptPad ft. diagrams.net | [2024.9.0](https://github.com/cryptpad/cryptpad/releases/tag/2024.9.0) | [For the most recent release](https://docs.cryptpad.org/en/) |
| File management | Nextcloud | [30.0.6](https://nextcloud.com/de/changelog/#30-0-6) | [Nextcloud 30](https://docs.nextcloud.com/) |
| Groupware | OX App Suite | [8.35](https://documentation.open-xchange.com/appsuite/releases/8.35/) | Online documentation available from within the installed application; [Additional resources](https://documentation.open-xchange.com/) |
| Knowledge management | XWiki | [16.10.5](https://www.xwiki.org/xwiki/bin/view/ReleaseNotes/Data/XWiki/16.10.5/) | [For the most recent release](https://www.xwiki.org/xwiki/bin/view/Documentation) |
| Portal & IAM | Nubus | [1.8.0](https://docs.software-univention.de/nubus-kubernetes-release-notes/latest/en/changelog.html#version-1-8-0-2025-04-07) | [Univention's documentation website](https://docs.software-univention.de/n/en/nubus.html) |
| Project management | OpenProject | [15.5.1](https://www.openproject.org/docs/release-notes/15-5-1/) | [For the most recent release](https://www.openproject.org/docs/user-guide/) |
| Videoconferencing | Jitsi | [2.0.9955](https://github.com/jitsi/jitsi-meet/releases/tag/stable%2Fjitsi-meet_9955) | [For the most recent release](https://jitsi.github.io/handbook/docs/category/user-guide/) |
| Weboffice | Collabora | [24.04.13](https://www.collaboraoffice.com/code-24-04-release-notes/) | Online documentation available from within the installed application; [Additional resources](https://sdk.collaboraonline.com/) |
| Function | Functional Component | License | Component<br/>Version | Upstream Documentation |
|----------------------|-----------------------------|----------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|
| Chat & collaboration | Element ft. Nordeck widgets | AGPL-3.0-or-later (Element Web), AGPL-3.0-only (Synapse), Apache-2.0 (Nordeck widgets) | [1.11.89](https://github.com/element-hq/element-web/releases/tag/v1.11.89) | [For the most recent release](https://element.io/user-guide) |
| Collaborative notes | Notes (aka Docs) | MIT | [3.2.1](https://github.com/suitenumerique/docs/releases/tag/v3.2.1) | Online documentation/welcome document available in installed application |
| Diagram editor | CryptPad ft. diagrams.net | AGPL-3.0-only | [2024.9.0](https://github.com/cryptpad/cryptpad/releases/tag/2024.9.0) | [For the most recent release](https://docs.cryptpad.org/en/) |
| File management | Nextcloud | AGPL-3.0-or-later | [31.0.6](https://nextcloud.com/de/changelog/#31-0-6) | [Nextcloud 31](https://docs.nextcloud.com/) |
| Groupware | OX App Suite | GPL-2.0-only (backend), AGPL-3.0-or-later (frontend) | [8.39](https://documentation.open-xchange.com/appsuite/releases/8.39/) | Online documentation available from within the installed application; [Additional resources](https://documentation.open-xchange.com/) |
| Knowledge management | XWiki | LGPL-2.1-or-later | [16.10.5](https://www.xwiki.org/xwiki/bin/view/ReleaseNotes/Data/XWiki/16.10.5/) | [For the most recent release](https://www.xwiki.org/xwiki/bin/view/Documentation) |
| Portal & IAM | Nubus | AGPL-3.0-or-later | [1.12.0](https://docs.software-univention.de/nubus-kubernetes-release-notes/1.x/en/1.12.html#version-1-12-0-2025-07-31) | [Univention's documentation website](https://docs.software-univention.de/n/en/nubus.html) |
| Project management | OpenProject | GPL-3.0-only | [16.2.1](https://www.openproject.org/docs/release-notes/16-2-1/) | [For the most recent release](https://www.openproject.org/docs/user-guide/) |
| Videoconferencing | Jitsi | Apache-2.0 | [2.0.9955](https://github.com/jitsi/jitsi-meet/releases/tag/stable%2Fjitsi-meet_9955) | [For the most recent release](https://jitsi.github.io/handbook/docs/category/user-guide/) |
| Weboffice | Collabora | MPL-2.0 | [25.04.3](https://www.collaboraoffice.com/code-25-04-release-notes/) | Online documentation available from within the installed application; [Additional resources](https://sdk.collaboraonline.com/) |
While not all components are perfectly designed for the execution inside containers, one of the project's objectives is to
align the applications with best practices regarding container design and operations.
@@ -93,6 +93,8 @@ Find out more about the permission system in the [roles & permissions concept](.
# Releases
openDesk implements a defined [release and patch management process](./docs/releases.md) to ensure stability and security.
All technical releases are created using [Semantic Versioning](https://semver.org/).
Gitlab provides an

View File

@@ -31,4 +31,9 @@ SPDX-License-Identifier = "CC-BY-SA-4.0"
[[annotations]]
path = ".opencode/screenshots/*"
SPDX-FileCopyrightText = "2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH"
SPDX-License-Identifier = "CC-BY-SA-4.0"
SPDX-License-Identifier = "CC-BY-SA-4.0"
[[annotations]]
path = ".gitlab/merge_request_templates/*.md"
SPDX-FileCopyrightText = "2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH"
SPDX-License-Identifier = "Apache-2.0"

View File

@@ -77,7 +77,7 @@ configured to use the aforementioned OpenLDAP.
When the user is authenticated by Keycloak, the portal shows the applications the user is permitted to access.
The user can now access applications and use the corresponding functionality without the need to authenticate
The user can now access applications and use the corresponding functionality without the need to authenticate
again. This is implemented using the OpenID Connect (OIDC) protocol.
# Nubus (IAM)
@@ -443,7 +443,7 @@ While the IAM manages users centrally, some applications come with local account
| Element | `uvs` | The account for the "User Verification Service". It is used by Jitsi integrated into Element. | `secrets.matrixUserVerificationService.password` |
| | `meeting-bot` | Used by the Nordeck Meeting-Bot to manage meeting rooms in Synapse. | `secrets.matrixNeoDateFixBot.password` |
| Nextcloud | `nextcloud` | Bootstrap the Nextcloud fileshare for OpenProject with `opendesk-openproject-bootstrap` job[^1]. | `secrets.nextcloud.adminPassword` |
| OX App Suite | `admin` | OX-Connector to provision context, users, groups etc. | `secrets.oxAppsuite.adminPassword` |
| OX App Suite | `admin` | OX Connector to provision context, users, groups etc. | `secrets.oxAppsuite.adminPassword` |
| OpenProject | set in `secrets.openproject.apiAdminUsername` | Bootstrap the Nextcloud fileshare for OpenProject with `opendesk-openproject-bootstrap` job[^1]. | `secrets.openproject.apiAdminPassword` |
| XWiki | `superadmin` | Only available with `debug.enabled: true`, can be used for interactive login using `/bin/view/Main/?oidc.skipped=true`. | `secrets.xwiki.superadminpassword` |

View File

@@ -16,9 +16,9 @@ This chapter presents APIs available in openDesk, grouped by application.
* [UDM Simple API](#udm-simple-api)
* [UDM REST API](#udm-rest-api)
* [UCR Python API](#ucr-python-api)
* [LDAP](#ldap)
* [Nubus Provisioning Service (**TBD**)](#nubus-provisioning-service-tbd)
* [Nubus Authorization Service (**TBD**)](#nubus-authorization-service-tbd)
* [Identity Store and Directory Service (LDAP)](#identity-store-and-directory-service-ldap)
* [Nubus Provisioning Service](#nubus-provisioning-service)
* [Nubus Authorization Service](#nubus-authorization-service)
* [Groupware - OX AppSuite / OX Dovecot](#groupware---ox-appsuite--ox-dovecot)
* [Usage of APIs within openDesk](#usage-of-apis-within-opendesk)
* [HTTP API](#http-api)
@@ -65,11 +65,13 @@ This chapter presents APIs available in openDesk, grouped by application.
# IAM - Nubus
![High-level architecture of Univention part withAPIs/interfaces highlighted](./apis_images/IAM-overview.png)
![Overview of functional components in Univention Nubus for Kubernetes](./apis_images/IAM-overview_functional_components_structured.svg)
[Source](https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/overview/components.html#overview-components-fig)
## UMC Python API
![Composition of UMC component with APIs highlighted](./apis_images/IAM-umc-architecture.png)
[Source](https://docs.software-univention.de/developer-reference/latest/en/umc/architecture.html#umc-api)
| Name | UMC Python API |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -88,20 +90,20 @@ This chapter presents APIs available in openDesk, grouped by application.
## UMC store API
| Name | UMC store API (also named UMC JavaScript API or Dojo/UMC JavaScript API) |
| ------------------------------ |----------------------------------------------------------------------------------------------------------|
| Purpose | Encapsulate and ease the access to JavaScript module data |
| Versioning | |
| Authentication | |
| In openDesk provided by | Nubus UMC |
| Transport protocol | |
| Usage within component | |
| Usage within openDesk | |
| Usage for external integration | |
| Parallel access | Allowed |
| Message protocol | |
| Supported standards | |
| Documentation | https://docs.software-univention.de/developer-reference/5.0/en/umc/local-system-module.html#umc-store-api |
| Name | UMC store API (also named UMC JavaScript API or Dojo/UMC JavaScript API) |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------- |
| Purpose | Encapsulate and ease the access to JavaScript module data |
| Versioning | |
| Authentication | |
| In openDesk provided by | Nubus UMC |
| Transport protocol | |
| Usage within component | |
| Usage within openDesk | |
| Usage for external integration | |
| Parallel access | Allowed |
| Message protocol | |
| Supported standards | |
| Documentation | https://docs.software-univention.de/developer-reference/latest/en/umc/local-system-module.html#umc-store-api |
## IntercomService (ICS) API
@@ -113,7 +115,7 @@ This chapter presents APIs available in openDesk, grouped by application.
| In openDesk provided by | Nubus UMC |
| Transport protocol | HTTP(S) |
| Usage within component | |
| Usage within openDesk | The ICS implements the BFF pattern for various openDesk inter-component integrations, see [components.md](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/develop/docs/components.md#component-integration) |
| Usage within openDesk | The ICS implements the BFF pattern for various openDesk inter-component integrations, see [components.md](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/develop/docs/components.md#component-integration) |
| Usage for external integration | |
| Parallel access | Allowed |
| Message protocol | Depends on the integration use case. |
@@ -135,28 +137,29 @@ This chapter presents APIs available in openDesk, grouped by application.
| Parallel access | Allowed |
| Message protocol | Depends on the integration use case. |
| Supported standards | |
| Documentation | https://docs.software-univention.de/developer-reference/5.0/en/listener/api.html |
| Documentation | https://docs.software-univention.de/developer-reference/latest/en/listener/api.html |
More details on the Nubus provisioning service can be found here: https://docs.software-univention.de/nubus-kubernetes-architecture/0.5/en/components/provisioning-service.html
More details on the Nubus provisioning service can be found here: https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/components/provisioning-service.html
## UDM Simple API
![Composition of UMC component with APIs highlighted](./apis_images/IAM-udm.png)
![Architecture of UDM](./apis_images/IAM-udm-architecture.svg)
[Source](https://docs.software-univention.de/architecture/latest/en/services/udm.html#architecture-model-udm)
| Name | UDM Simple API |
| ------------------------------ |-------------------------------------------------------------------|
| Purpose | Allows use of capability and objects directly in Python programs. |
| Versioning | |
| Authentication | |
| In openDesk provided by | Univention Directory Manager |
| Transport protocol | |
| Usage within component | |
| Usage within openDesk | |
| Usage for external integration | |
| Parallel access | Allowed |
| Message protocol | Depends on the integration use case. |
| Supported standards | |
| Documentation | |
| Name | UDM Simple API |
| ------------------------------ | ------------------------------------------------------------------- |
| Purpose | Allows use of capability and objects directly in Python programs. |
| Versioning | |
| Authentication | |
| In openDesk provided by | Univention Directory Manager |
| Transport protocol | |
| Usage within component | Allows to use UDM capability and objects directly in Python programs. UDM Simple API provides Python modules and classes below `univention.udm.*` |
| Usage within openDesk | |
| Usage for external integration | |
| Parallel access | Allowed |
| Message protocol | Depends on the integration use case. |
| Supported standards | |
| Documentation | https://docs.software-univention.de/ucs-python-api/univention.udm.html#module-univention.udm. |
## UDM REST API
@@ -166,58 +169,72 @@ More details on the Nubus provisioning service can be found here: https://docs.s
| Versioning | |
| Authentication | Basic Auth |
| In openDesk provided by | Univention Directory Manager |
| Transport protocol | HTTP(S) |
| Transport protocol | HTTP() |
| Usage within component | The Nubus bootstrapping process makes use of the API. |
| Usage within openDesk | |
| Usage for external integration | The [openDesk User Importer](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/images/user-import) utilizes the API. |
| Parallel access | Allowed |
| Message protocol | Depends on the integration use case. |
| Supported standards | |
| Documentation | https://docs.software-univention.de/developer-reference/5.0/en/udm/rest-api.html |
| Documentation | https://docs.software-univention.de/nubus-kubernetes-customization/latest/en/api/udm-rest.html |
## UCR Python API
![Composition of UCR component with APIs/interfaces highlighted](./apis_images/IAM-ucr.png)
![Architecture overview of UCR](./apis_images/IAM-ucr-architecture.svg)
[Source](https://docs.software-univention.de/architecture/latest/en/services/ucr.html#services-ucr-architecture-model)
| Name | UCR Python API |
| ------------------------------ | --------------------------------------------------------------------------------------------------- |
| Purpose | Offers a programming interface for components and other Python programs. |
| Versioning | |
| Authentication | |
| In openDesk provided by | Nubus |
| Transport protocol | |
| Usage within component | The Nubus bootstrapping process makes use of the API. |
| Usage within openDesk | |
| Usage for external integration | |
| Parallel access | Allowed |
| Message protocol | |
| Supported standards | |
| Documentation | https://docs.software-univention.de/developer-reference/5.0/en/ucr/usage.html#using-ucr-from-python |
| Name | UCR Python API |
| ------------------------------ | --------------------------------------------------------------------------------------------------- |
| Purpose | Offers a programming interface for components and other Python programs. |
| Versioning | |
| Authentication | |
| In openDesk provided by | Nubus |
| Transport protocol | |
| Usage within component | The Nubus bootstrapping process makes use of the API. |
| Usage within openDesk | |
| Usage for external integration | |
| Parallel access | Allowed |
| Message protocol | |
| Supported standards | |
| Documentation | https://docs.software-univention.de/developer-reference/latest/en/ucr/usage.html#using-ucr-from-python |
## LDAP
## Identity Store and Directory Service (LDAP)
| Name | LDAP |
| ------------------------------ |-------------------------------------------------------------------------------------------------------------------------|
| Purpose | Read access to Nubus LDAP |
| Versioning | n/a |
| Authentication | LDAP user auth |
| In openDesk provided by | Nubus openLDAP |
| Transport protocol | LDAP |
| Usage within component | Data backend for Nubus |
| Usage within openDesk | Used by multiple applications to access user/group data, e.g. Nextcloud Server, OpenProject, OX AppSuite backend, XWiki |
| Usage for external integration | Not recommended |
| Parallel access | Allowed |
| Message protocol | LDAP |
| Supported standards | LDAP |
| Documentation | https://docs.software-univention.de/manual/5.0/en/domain-ldap/ldap-directory.html |
![Overview of the Identity Store and Directory Service](./apis_images/IAM-functional_component_identity_store.svg)
[Source](https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/components/identity-store.html#component-identity-store-figure)
## Nubus Provisioning Service (**TBD**)
| Name | Identity Store and Directory Service (LDAP) |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
| Purpose | Read access to Nubus LDAP |
| Versioning | n/a |
| Authentication | LDAP user auth |
| In openDesk provided by | Nubus openLDAP |
| Transport protocol | LDAP |
| Usage within component | Data backend for Nubus |
| Usage within openDesk | Used by multiple applications to access user/group data, e.g. Nextcloud Server, OpenProject, OX AppSuite backend, XWiki |
| Usage for external integration | Not recommended |
| Parallel access | Allowed |
| Message protocol | LDAP |
| Supported standards | LDAP |
| Documentation | https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/components/identity-store.html#component-identity-store-directory-service |
To be delivered.
## Nubus Provisioning Service
## Nubus Authorization Service (**TBD**)
![Overview of the Provisioning Service and its components](./apis_images/IAM-functional_component_provisioning_service_complete.svg)
[Source](https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/components/provisioning-service.html#component-provisioning-service-complete-figure)
To be delivered.
| Name | Nubus Proisioning Service |
| ------------- | --------------------------------------------------------------------------------------------------- |
| Documentation | https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/components/provisioning-service.html |
## Nubus Authorization Service
![ArchiMate view of the interfaces and protocols of the Authorization Service](./apis_images/IAM-interfaces_authorization_service.svg)
[Source](https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/overview/interfaces-protocols.html#authorization-service)
| Name | Nubus Authorization Service |
| ------------- | --------------------------------------------------------------------------------------------------- |
| Documentation | https://docs.software-univention.de/nubus-kubernetes-architecture/latest/en/overview/interfaces-protocols.html#authorization-service |
# Groupware - OX AppSuite / OX Dovecot
@@ -271,7 +288,7 @@ The following are the APIs used by the Groupware application:
| In openDesk provided by | OX AppSuite Middleware |
| Transport protocol | HTTP(S) |
| Usage within component | none |
| Usage within openDesk | OX-Connector synchronizes the state of the objects (users, groups etc.) managed in the LDAP. |
| Usage within openDesk | OX Connector synchronizes the state of the objects (users, groups etc.) managed in the LDAP. |
| Usage for external integration | none |
| Parallel access | Allowed |
| Message protocol | XML based, exactly following the format of Java RMI. |

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 189 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 411 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 186 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 143 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 118 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 80 KiB

View File

@@ -66,8 +66,8 @@ All parts of openDesk Community Edition must be open source with source code (al
openCode provides some boundaries when it comes to open source license compliance openDesk has to adhere to:
- The components must be published under a license listed in the [openCode license allow list](https://wikijs.opencode.de/de/Hilfestellungen_und_Richtlinien/Lizenzcompliance#h-2-open-source-lizenzliste).
- Delivered artifacts (container images) must contain only components licensed under the aforementioned allow list. A container must not contain any artifact using a license from the [openCode license block list](https://wikijs.opencode.de/de/Hilfestellungen_und_Richtlinien/Lizenzcompliance#h-3-negativliste-aller-nicht-freigegebenen-lizenzen).
- The components must be published under a license listed in the [openCode license allow list](https://opencode.de/de/wissen/rechtssichere-nutzung/open-source-lizenzen).
- Delivered artifacts (container images) must contain only components licensed under the aforementioned allow list. A container must not contain any artifact using a license from the [openCode license block list](https://opencode.de/de/wissen/rechtssichere-nutzung/open-source-lizenzen#3.-Negativliste-aller-nicht-freigegebenen-Lizenzen).
Deviations from the above requirements must be documented in the openDesk license deviation report.

View File

@@ -40,7 +40,7 @@ Intercom-Service,Redis,1
Jitsi,PersistentVolume,1
Nextcloud,MariaDB,1
Nextcloud,PostgreSQL,1
Nextcloud,S3,1
Nextcloud,Redis,1
@@ -60,58 +60,64 @@ Open-Xchange,Redis,1
Postfix,PersistentVolume,1
XWiki,MariaDB,1
XWiki,PostgreSQL,1
XWiki,PersistentVolume,1
```
# Details
| Application | Data Storage | Backup | Content | Identifier | Details |
| -------------------- | ------------ | -------- | ------------------------------------------------------------------------------------------ | ---------------------------------------------- | ----------------------------------------------------- |
| **ClamAV** | PVC | No | ClamAV Database | `clamav-database-clamav-simple-0` | `/var/lib/clamav` |
| **Dovecot** | PVC | Yes | User mail directories (openDesk CE only, openDesk EE uses Dovecot Pro with Object Storage) | `dovecot` | `/srv/mail` |
| **Element/Synapse** | PostgreSQL | Yes | Application's main database | `matrix` | |
| | PVC | Yes | Attachments | `media-opendesk-synapse-0` | `/media` |
| | | Yes | Sync and state data | `matrix-neodatefix-bot` | `/app/storage` |
| **Intercom-Service** | Redis | No | Shared session data | | |
| **Jitsi** | PVC | Optional | Meeting recordings (feature not enabled in openDesk) | `prosody-data-jitsi-prosody-0` | `/config/data` |
| **Nextcloud** | MariaDB | Yes | Application's main database Meta-Data | `nextcloud` | |
| | S3 | Yes | The Nextcloud managed user files | `nextcloud` | |
| | Redis | No | Distributed caching, as well as transactional file locking | | |
| **Nubus** | PostgreSQL | Yes | Main database for Nubus' IdP Keycloak | `keycloak` | |
| | | Yes | Login actions and device-fingerprints | `keycloak_extensions` | |
| | | Optional | Store of the temporary password reset token | `selfservice` | |
| | | No | Notification features are not used in openDesk 1.1 | `notificationsapi` | |
| | | No | Guardian features are currently not used in openDesk 1.1 | `guardianmanagementapi` | |
| | S3 | No | Static files for Portal | `ums` | |
| | PVC | Yes | openLDAP database (primary R/W Pods), when restore select the one from the leader | `shared-data-ums-ldap-server-primary-0` | `/var/lib/univention-ldap` |
| | | Yes | openLDAP process data | `shared-run-ums-ldap-server-primary-0` | `/var/run/slapd` |
| | | No | openLDAP database (secondary R/O Pods), secondaries can sync from the primary | `shared-data-ums-ldap-server-secondary-0` | `/var/lib/univention-ldap` |
| | | No | openLDAP process data | `shared-run-ums-ldap-server-secondary-0` | `/var/run/slapd` |
| | | Yes | The state of the listener | `data-ums-provisioning-listener-0` | `/var/log/univention` and two others |
| | | No | Cache | `group-membership-cache-ums-portal-consumer-0` | `/usr/share/univention-group-membership-cache/caches` |
| | | Yes | Queued provisioning objects | `nats-data-ums-provisioning-nats-0` | `/data` |
| | Memcached | No | Cache for UMC Server | | |
| **OpenProject** | PostgreSQL | Yes | Application's main database | `openproject` | |
| | S3 | Yes | Attachments, custom styles | `openproject` | |
| | Memcached | No | Cache | | |
| | PVC | No | PVC backed `emptyDir` as K8s cannot set the sticky bit on standard emptyDirs | `openproject-<web/worker>-*-tmp` | `/tmp` |
| | | No | PVC backed `emptyDir` as K8s cannot set the sticky bit on standard emptyDirs | `openproject-<web/worker>-app-*-tmp` | `/app/tmp` |
| **Open-Xchange** | MariaDB | Yes | Application's control database to coordiate dynamically created ones | `configdb` | |
| | | Yes | Dynamically creates databases of schema `PRIMARYDB_n`containing multiple contexts | `PRIMARYDB_*` | |
| | | Yes | OX Guard related settings | `oxguard*` | |
| | Redis | Optional | Cache, session related data, distributed maps | | |
| | PVC | Yes | OX-Connector: OXAPI access details | `ox-connector-appcenter-ox-connector-0` | `/var/lib/univention-appcenter/apps/ox-connector` |
| | | Yes | OX-Connector: Application's meta data | `ox-connector-ox-contexts-ox-connector-0` | `/etc/ox-secrets` |
| **Postfix** | PVC | Yes | Mail spool | `postfix` | `/var/spool/postfix` |
| **XWiki** | Database | Yes | Application's main database | `xwiki` | |
| | PVC | Yes | Attachments | `xwiki-data-xwiki-0` | `/usr/local/xwiki/data` |
| Application | Data Storage | Backup | Content | (Default) Identifier | Details |
|----------------------|--------------|----------|-----------------------------------------------------------------------------------|------------------------------------------------|-----------------------------------------------------------------------------------------------------------|
| **ClamAV** | PVC | No | ClamAV Database | `clamav-database-clamav-simple-0` | `/var/lib/clamav` |
| **Dovecot** | PVC | Yes | openDesk CE only: User mail directories | `dovecot` | `/srv/mail` |
| | S3 | Yes | openDesk EE only: User mail | `dovecot` | `dovecot` |
| | Cassandra | Yes | openDesk EE only: Metadata and ACLs | `dovecot_dictmap`, `dovecot_acl` |
| **Element/Synapse** | PostgreSQL | Yes | Application's main database | `matrix` | |
| | PVC | Yes | Attachments | `media-opendesk-synapse-0` | `/media` |
| | | Yes | Sync and state data | `matrix-neodatefix-bot` | `/app/storage` |
| **Intercom-Service** | Redis | No | Shared session data | | |
| **Jitsi** | PVC | Optional | Meeting recordings (feature not enabled in openDesk) | `prosody-data-jitsi-prosody-0` | `/config/data` |
| **Nextcloud** | PostgreSQL | Yes | Application's main database Meta-Data | `nextcloud` | |
| | S3 | Yes | The Nextcloud managed user files | `nextcloud` | |
| | Redis | No | Distributed caching, as well as transactional file locking | | |
| **Nubus** | PostgreSQL | Yes | Main database for Nubus' IdP Keycloak | `keycloak` | |
| | | Yes | Login actions and device-fingerprints | `keycloak_extensions` | |
| | | Optional | Store of the temporary password reset token | `selfservice` | |
| | | No | Notification features are not used in openDesk 1.1 | `notificationsapi` | |
| | | No | Guardian features are currently not used in openDesk 1.1 | `guardianmanagementapi` | |
| | S3 | No | Static files for Portal | `ums` | |
| | PVC | Yes | openLDAP database (primary R/W Pods), when restore select the one from the leader | `shared-data-ums-ldap-server-primary-0` | `/var/lib/univention-ldap` |
| | | Yes | openLDAP process data | `shared-run-ums-ldap-server-primary-0` | `/var/run/slapd` |
| | | No | openLDAP database (secondary R/O Pods), secondaries can sync from the primary | `shared-data-ums-ldap-server-secondary-0` | `/var/lib/univention-ldap` |
| | | No | openLDAP process data | `shared-run-ums-ldap-server-secondary-0` | `/var/run/slapd` |
| | | Yes | The state of the listener | `data-ums-provisioning-udm-listener-0` | `/var/log/univention`<br>`/var/lib/univention-ldap/schema/id`<br>`/var/lib/univention-directory-listener` |
| | | No | Cache | `group-membership-cache-ums-portal-consumer-0` | `/usr/share/univention-group-membership-cache/caches` |
| | | Yes | Queued provisioning objects | `nats-data-ums-provisioning-nats-0` | `/data` |
| | Memcached | No | Cache for UMC Server | | |
| **OpenProject** | PostgreSQL | Yes | Application's main database | `openproject` | |
| | S3 | Yes | Attachments, custom styles | `openproject` | |
| | Memcached | No | Cache | | |
| | PVC | No | PVC backed `emptyDir` as K8s cannot set the sticky bit on standard emptyDirs | `openproject-<web/worker>-*-tmp` | `/tmp` |
| | | No | PVC backed `emptyDir` as K8s cannot set the sticky bit on standard emptyDirs | `openproject-<web/worker>-app-*-tmp` | `/app/tmp` |
| **Open-Xchange** | MariaDB | Yes | Application's control database to coordiate dynamically created ones | `configdb` | |
| | | Yes | Dynamically creates databases of schema `PRIMARYDB_n`containing multiple contexts | `PRIMARYDB_*` | |
| | | Yes | OX Guard related settings | `oxguard*` | |
| | S3 | Yes | Attachments of meetings, contacts and tasks | `openxchange` | |
| | Redis | Optional | Cache, session related data, distributed maps | | |
| | PVC | Yes | OX Connector: OXAPI access details | `ox-connector-appcenter-ox-connector-0` | `/var/lib/univention-appcenter/apps/ox-connector` |
| | | Yes | OX Connector: Application's meta data | `ox-connector-ox-contexts-ox-connector-0` | `/etc/ox-secrets` |
| **Postfix** | PVC | Yes | Mail spool | `postfix` | `/var/spool/postfix` |
| **XWiki** | PostgreSQL | Yes | Application's main database | `xwiki` | |
| | PVC | Yes | Attachments | `xwiki-data-xwiki-0` | `/usr/local/xwiki/data` |
Additionally, the following persistent volumes are mounted by pods that serve as a data storage for the applications mentioned above.
Additionally, the following persistent volumes are mounted by Pods that serve as a data storage for the applications mentioned above.
| Service | Pod | Volume Name | PVC | MountPath |
| ---------- | ---------------- | ------------ | --------------------------- | --------------------- |
| MariaDB | `mariadb-*` | `data` | `data-mariadb-0` | `/var/lib/mysql` |
| MinIO | `minio-*-*` | `data` | `minio` | `/bitnami/minio/data` |
| PostgreSQL | `postgresql-*` | `data` | `data-postgresql-0` | `/mnt/postgresql` |
| Redis | `redis-master-*` | `redis-data` | `redis-data-redis-master-0` | `/data` |
These services are not ment for production use, so you can ignore these as you surely backup your production services instead.
| Service | Pod | Volume Name | PVC | MountPath | Comment |
|------------|------------------|--------------|-----------------------------|-----------------------|------------------|
| MariaDB | `mariadb-*` | `data` | `data-mariadb-0` | `/var/lib/mysql` | |
| MinIO | `minio-*-*` | `data` | `minio` | `/bitnami/minio/data` | |
| PostgreSQL | `postgresql-*` | `data` | `data-postgresql-0` | `/mnt/postgresql` | |
| Redis | `redis-master-*` | `redis-data` | `redis-data-redis-master-0` | `/data` | |
| Cassandra | `cassandra-*` | `data` | `data-cassandra-*` | `/bitnami/cassandra` | openDesk EE only |

View File

@@ -355,12 +355,15 @@ Example: `tmueller/fix_jitsi_theming`.
Commit messages must adhere to the [Conventional Commit standard](https://www.conventionalcommits.org/en/v1.0.0/#summary). Commits that do not adhere to the standard get rejected by either [Gitlab push rules](https://docs.gitlab.com/ee/user/project/repository/push_rules.html) or the CI.
> **Note**<br>
> The first letter after the `: ` must be uppercase.
```text
<type>(<scope>): [path/to/issue#1] <short summary>.
<type>(<scope>): <Short summary> [path/to/issue#1]
│ │ │ │
│ │ | └─> Summary in present tense, sentence case, with no period at the end
│ │ | └─> Issue reference (optional)
│ │ |
│ │ └─> Issue reference (optional)
│ │ └─> Summary in present tense, sentence case, with no period at the end
│ │
│ └─> Commit Scope: helmfile, docs, collabora, nextcloud, open-xchange, etc.
@@ -370,7 +373,7 @@ Commit messages must adhere to the [Conventional Commit standard](https://www.co
Example: `fix(open-xchange): Bump to 8.26 to heal issue with functional mailbox provisioning.`
> **Note**<br>
> The commit messages are an essential part of the [technical releases](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/releases) as the release's notes are generated from the messages.
> The commit messages are an essential part of the [technical releases](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/releases) as the release notes are generated from these messages.
#### Verified commits

View File

@@ -77,7 +77,7 @@ With openDesk 1.0 Enterprise, you can set openDesk's email components (OX AppSui
```
secrets:
oxAppSuite:
adminPassword: "your_temporary_master_password"
migrationsMasterPassword: "your_temporary_master_password"
functional:
migration:
oxAppSuite:
@@ -89,7 +89,7 @@ functional:
To validate the master authentication mode please read the appendix section at the end of the document.
Updating your deployment with these settings will allow you to continue with the migration scenario. Once the migration is completed, you can remove `secrets.oxAppSuite.adminPassword` and need to turn off the migration mode by setting `functional.migration.oxAppSuite.enabled` to `false` or removing that setting, as `false` is the default before you update your deployment once again.
Updating your deployment with these settings will allow you to continue with the migration scenario. Once the migration is completed, you can remove `secrets.oxAppSuite.migrationsMasterPassword` and need to turn off the migration mode by setting `functional.migration.oxAppSuite.enabled` to `false` or removing that setting, as `false` is the default before you update your deployment once again.
> **Note**<br>
> For the changes to take effect, it is sufficient to re-deploy the `open-xchange` component alone. But you have to restart the Dovecot Pod(s) manually when switching to/from the master authentication mode for the changes to take effect.

View File

@@ -22,7 +22,7 @@ SPDX-License-Identifier: Apache-2.0
Most organizations already have an Identity and Access Management (IAM) system with an identity provider (IdP) for single sign-on (SSO) to internal or external web applications.
This document explains how to configure your organization's IdP and the openDesk IdP to support account federation with openDesk SSO based on your organization's login.
This document helps in setting up your organization's IdP and openDesk to enable IdP federation.
# References
@@ -33,7 +33,7 @@ We would like to list successful IdP federation scenarios:
| [EU Login](https://webgate.ec.europa.eu/cas/userdata/myAccount.cgi) | v0.9.0, v1.2.0 |
| [ProConnect](https://www.proconnect.gouv.fr/) | v0.9.0 |
>If you have successfully federated using another External IdP, please let us know so we can update the list above.
> If you have successfully federated using another External IdP, please let us know so we can update the list above.
# Prerequisites
@@ -70,6 +70,23 @@ This document focuses on the OIDC federation between an external IdP and the ope
# Example configuration
The following section explains how to configure the IdP federation manually in an example upstream IdP and in openDesk.
With openDesk 1.4.0 IdP federation has to be enabled as part of the deployment using the `functional.authentication.ssoFederation` section, see [`functional.yaml.gotmpl`](../../helmfile/environments/default/functional.yaml.gotmpl) for reference.
You can use the description below to configure and test the federation that can be exported and used as part of the deployment afterwards, e.g. with the following commands from within the Keycloak Pod:
```shell
# Set the variables according to your deployment first, below are just example values.
export FEDERATION_IDP_ALIAS=sso-federation-idp
export NAMESPACE=example_namespace
export CLUSTER_NETWORKING_DOMAIN=svc.cluster.local
# Authenticate with Keycloak
/opt/keycloak/bin/kcadm.sh config credentials --server http://ums-keycloak.${NAMESPACE}.${CLUSTER_NETWORKING_DOMAIN}:8080 --realm master --user ${KEYCLOAK_ADMIN} --password ${KEYCLOAK_ADMIN_PASSWORD}
# Request details of IdP configuration
/opt/keycloak/bin/kcadm.sh get identity-provider/instances/${FEDERATION_IDP_ALIAS} -r opendesk
```
## Versions
The example was tested with openDesk v0.7.0 using its integrated Keycloak v24.0.3. As external IdP, we also used an openDesk deployment of the same version, but created a separate realm for proper configuration separation.

View File

@@ -70,6 +70,10 @@ For your convenience, we recommend creating a `*.domain.tld` A-Record for your c
| domain.tld | TXT | `v=spf1 +a +mx +a:mail.domain.tld ~all` | Optional, use proper MTA record if present |
| _dmarc.domain.tld | TXT | `v=DMARC1; p=quarantine` | Optional |
| default._domainkey.domain.tld | TXT | `v=DKIM1; k=rsa; h=sha256; ...` | Optional, DKIM settings |
| _caldavs._tcp.domain.tld | SRV | 10 1 443 dav.domain.tld. | Optional, CalDav auto discovery |
| _caldav._tcp.domain.tld | SRV | 10 1 80 dav.domain.tld. | Optional, CalDav auto discovery |
| _carddavs._tcp.domain.tld | SRV | 10 1 443 dav.domain.tld. | Optional, CardDav auto discovery |
| _carddav._tcp.domain.tld | SRV | 10 1 80 dav.domain.tld. | Optional, CardDav auto discovery |
## Domain
@@ -222,16 +226,19 @@ cluster:
### Ingress
By default, the `ingressClassName` is empty and selects the default ingress controller in your cluster. You can customize it by
setting the following attribute to the name of the ingress controller the within your deployment you wish to use. Useful if the ingress controller you wish to use is not the default.
The default value for the `ingressClassName` in openDesk is set to `nginx`. This prevents fallback to the
clusters default ingress class, since the Helm charts used by openDesk components are not consistently aligned in
how they handle a missing or empty `ingressClassName`. In case you are using a non-standard `ingressClassName` for
your `ingress-nginx` controller you have to configure it as follows:
```yaml
ingress:
ingressClassName: "name-of-my-nginx-ingress"
ingressClassName: "nginx"
```
Currently, the only supported ingress controller is `ingress-nginx` (see
[requirements.md](./docs/requirements.md) for reference).
> **Note**<br>
> Currently, the only supported ingress controller is `ingress-nginx`
> (see [requirements.md](./docs/requirements.md) for reference).
### Container runtime
@@ -377,6 +384,18 @@ To prevent others from using your openDesk instance, you must set your individua
export MASTER_PASSWORD="your_individual_master_password"
```
> **Note**<br>
> Currently a [documented](https://docs.software-univention.de/nubus-kubernetes-operation/1.x/en/configuration/nats.html#configure-the-secrets) upstream [bug](https://forge.univention.org/bugzilla/show_bug.cgi?id=58357) causes a failure when passwords/secrets beginning with certain numbers are using for the Nubus subcomponent NATS.
> With openDesk 1.6.0 an update-aware workaround was implemented that prefixes the affected secrets in the openDesk included `secrets.yaml.gotmpl` that derives all secrets from the previously mentioned `MASTER_PASSWORD`.
> If you are using externally provided passwords/secrets make sure that none of the ones listed below are starting with a number:
>
> - `secrets.nubus.provisioning.api.natsPassword`
> - `secrets.nubus.provisioning.dispatcherNatsPassword`
> - `secrets.nubus.provisioning.prefillNatsPassword`
> - `secrets.nubus.provisioning.udmListenerNatsPassword`
> - `secrets.nubus.provisioning.udmTransformerNatsPassword`
> - `secrets.nats.natsAdminPassword`
## Install
After setting your environment-specific values in `dev` environment, you can start deployment by:

View File

@@ -7,10 +7,26 @@ SPDX-License-Identifier: Apache-2.0
<!-- TOC -->
* [Disclaimer](#disclaimer)
* [Deprecation warnings](#deprecation-warnings)
* [Automated migrations - Overview and mandatory upgrade path](#automated-migrations---overview-and-mandatory-upgrade-path)
* [Manual checks/actions](#manual-checksactions)
* [v1.7.0+](#v170)
* [Pre-upgrade to v1.7.0+](#pre-upgrade-to-v170)
* [Helmfile fix: Ensure enterprise overrides apply when deploying from project root](#helmfile-fix-ensure-enterprise-overrides-apply-when-deploying-from-project-root)
* [Replace Helm chart: New Notes Helm chart with support for self-signed deployments](#replace-helm-chart-new-notes-helm-chart-with-support-for-self-signed-deployments)
* [Post-upgrade to v1.7.0+](#post-upgrade-to-v170)
* [Upstream fix: Provisioning of functional mailboxes](#upstream-fix-provisioning-of-functional-mailboxes)
* [v1.6.0+](#v160)
* [Pre-upgrade to v1.6.0+](#pre-upgrade-to-v160)
* [Upstream constraint: Nubus' external secrets](#upstream-constraint-nubus-external-secrets)
* [Helmfile new secret: `secrets.minio.openxchangeUser`](#helmfile-new-secret-secretsminioopenxchangeuser)
* [Helmfile new object storage: `objectstores.openxchange.*`](#helmfile-new-object-storage-objectstoresopenxchange)
* [OX App Suite fix-up: Using S3 as storage for non mail attachments (pre-upgrade)](#ox-app-suite-fix-up-using-s3-as-storage-for-non-mail-attachments-pre-upgrade)
* [Post-upgrade to v1.6.0+](#post-upgrade-to-v160)
* [OX App Suite fix-up: Using S3 as storage for non mail attachments (post-upgrade)](#ox-app-suite-fix-up-using-s3-as-storage-for-non-mail-attachments-post-upgrade)
* [v1.4.0+](#v140)
* [Pre-upgrade to v1.4.0+](#pre-upgrade-to-v140)
* [Helmfile new feature: `functional.authentication.ssoFederation`](#helmfile-new-feature-functionalauthenticationssofederation)
* [Helmfile cleanup: `global.additionalMailDomains` as list](#helmfile-cleanup-globaladditionalmaildomains-as-list)
* [v1.2.0+](#v120)
* [Pre-upgrade to v1.2.0+](#pre-upgrade-to-v120)
@@ -48,15 +64,12 @@ SPDX-License-Identifier: Apache-2.0
* [Post-upgrade to v1.0.0+](#post-upgrade-to-v100)
* [Configuration Improvement: Separate user permission for using Video Conference component](#configuration-improvement-separate-user-permission-for-using-video-conference-component)
* [Optional Cleanup](#optional-cleanup)
* [v0.9.0](#v090)
* [Pre-upgrade to v0.9.0](#pre-upgrade-to-v090)
* [Updated `cluster.networking.cidr`](#updated-clusternetworkingcidr)
* [Updated customizable template attributes](#updated-customizable-template-attributes)
* [`migrations` S3 bucket](#migrations-s3-bucket)
* [Automated migrations - Details](#automated-migrations---details)
* [v1.6.0+ (automated)](#v160-automated)
* [v1.6.0+ migrations-post](#v160-migrations-post)
* [v1.2.0+ (automated)](#v120-automated)
* [migrations-pre](#migrations-pre)
* [migrations-post](#migrations-post)
* [v1.2.0+ migrations-pre](#v120-migrations-pre)
* [v1.2.0+ migrations-post](#v120-migrations-post)
* [v1.1.0+ (automated)](#v110-automated)
* [v1.0.0+ (automated)](#v100-automated)
* [Related components and artifacts](#related-components-and-artifacts)
@@ -79,6 +92,17 @@ Manual checks and possible activities are also required by openDesk updates, the
> **Known limitations**<br>
> We assume that the PV reclaim policy is set to `delete`, resulting in PVs getting deleted as soon as the related PVC is deleted; we will not address explicit deletion for PVs.
# Deprecation warnings
We cannot hold back all migrations as some are required e.g. due to a change in a specific component that we want/need to update, we try to bundle others only with major releases.
This section should provide you with an overview of what changes to expect in the next major release (openDesk 2.0) expected in September 2025.
- `functional.portal.link*` (see `functional.yaml.gotmpl` for details) are going to be moved into the `theme.*` tree, we are also going to move the icons used for the links currently found under `theme.imagery.portalEntries` in this step.
- We will explicitly set the [database schema configuration](https://www.xwiki.org/xwiki/bin/view/Documentation/AdminGuide/Configuration/#HConfigurethenamesofdatabaseschemas) for XWiki to avoid the use of the `public` schema.
- `persistance.storages.oxConnector.storageClassName` and `persistance.storages.nubusUdmListener.storageClassName` will be templated in Helmfile requiring you to template them explicitly if their current default values differs from the global value set in `persistence.storageClassNames.RWO`.
- The currently used Helm chart for Notes will be replaced requiring some config updates.
# Automated migrations - Overview and mandatory upgrade path
The following table gives an overview of the mandatory upgrade path of openDesk, required in order for the automated migrations to work as expected.
@@ -87,11 +111,12 @@ To upgrade existing deployments, you cannot skip any version mentioned in the co
| Mandatory version |
| ----------------- |
<!--| v1.2+ | add the entry to the table as soon as we get new migration requiring the set version (range) to be deployed first -->
| v1.5.0 |
| v1.1.x |
| v1.0.0 |
| v0.9.0 |
| v0.8.1 |
<!-- | 1.x.x | add the entry to the table as soon as we get new migration requiring that the former migration was executed -->
> **Note**<br>
> Be sure to check out the table in the release version you are going to install, and not the currently installed version.
@@ -100,10 +125,172 @@ If you would like more details about the automated migrations, please read secti
# Manual checks/actions
## v1.7.0+
### Pre-upgrade to v1.7.0+
### Helmfile fix: Ensure enterprise overrides apply when deploying from project root
**Target group:** All openDesk Enterprise deployments initiated from the project root using `helmfile_generic.yaml.gotmpl`
Previously, the default values referenced in `helmfile_generic.yaml.gotmpl` did not include the necessary Enterprise overrides from `helmfile/environment/default-ee-overrides/`.
As a result, when deploying openDesk Enterprise Edition from the project root, the correct Enterprise charts and images for Collabora, Nextcloud, OpenXchange, and Dovecot were not applied. This issue does not affect deployments started at the component level (e.g., `helmfile/apps/collabora`).
Please verify that your deployment uses the correct Enterprise charts and images. If not, migrate to the Enterprise versions before upgrading to openDesk EE v1.7.0.
#### Replace Helm chart: New Notes Helm chart with support for self-signed deployments
**Target group:** All deployments that set `app.notes.enabled: true` (default is `false`).
We replaced the Helm Chart used for the Notes (aka "Impress") deployment. If you have enabled Notes in your deployment, you must manually uninstall the old chart before upgrading to openDesk v1.7.0.
```shell
helm uninstall -n <your_namespace> impress
```
In case you are using `annotation.notes` they have to be moved into one of the remaining dicts, see [`annotations.yaml.gotmpl`](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/develop/helmfile/environments/default/annotations.yaml.gotmpl) for details:
```yaml
annotation:
notesBackend: {}
notesFrontend: {}
notesYProvider: {}
```
### Post-upgrade to v1.7.0+
#### Upstream fix: Provisioning of functional mailboxes
**Target group:** Deployments with OX App Suite that make use of IAM maintained functional mailboxes.
The update of OX Connector included in openDesk 1.7.0 fixes an issue with the provisioning of IAM maintained functional mailboxes. If your deployment makes use of these mailboxes it is recommended to trigger a full sync of the OX App Suite provisioning by recreating the OX Connector's provisioning subscription using calls to the provisioning API that is temporary port-forwarded in the example below:
```shell
export NAMESPACE=<your_namespace>
export SUBSCRIPTION_NAME=ox-connector
export SUBSCRIPTION_SECRET_NAME=ums-provisioning-ox-credentials
export TEMPORARY_CONSUMER_JSON=$(mktemp)
export PROVISIONING_API_POD_NAME=$(kubectl -n ${NAMESPACE} get pods --no-headers -o custom-columns=":metadata.name" | grep ums-provisioning-api | tr -d '\n')
kubectl -n ${NAMESPACE} port-forward ${PROVISIONING_API_POD_NAME} 7777:7777 &
export PROVISIONING_PORT_FORWARD_PID=$!
sleep 10
kubectl -n ${NAMESPACE} get secret ${SUBSCRIPTION_SECRET_NAME} -o json | jq '.data | map_values(@base64d)' | jq -r '."ox-connector.json"' > ${TEMPORARY_CONSUMER_JSON}.json
export PROVISIONING_ADMIN_PASSWORD=$(kubectl -n ${NAMESPACE} get secret ums-provisioning-api-admin -o jsonpath='{.data.password}' | base64 --decode)
# Delete the current subscription
curl -o - -u "admin:${PROVISIONING_ADMIN_PASSWORD}" -X DELETE http://localhost:7777/v1/subscriptions/${SUBSCRIPTION_NAME}
# Recreate the subscription
curl -u "admin:${PROVISIONING_ADMIN_PASSWORD}" -H 'Content-Type: application/json' -d @${TEMPORARY_CONSUMER_JSON}.json http://localhost:7777/v1/subscriptions
kill ${PROVISIONING_PORT_FORWARD_PID}
rm ${TEMPORARY_CONSUMER_JSON}
```
## v1.6.0+
### Pre-upgrade to v1.6.0+
#### Upstream constraint: Nubus' external secrets
**Target group:** Operators that use external secrets for Nubus.
> **Note**<br>
> External Secrets are not yet a supported feature. We are working on making it available in 2025, though it is possible to make use of the support for external secrets within single applications using the openDesk [customization](../helmfile/environments/default/customization.yaml.gotmpl) options.
Please ensure you read the [Nubus 1.10.0 "Migration steps" section](https://docs.software-univention.de/nubus-kubernetes-release-notes/1.x/en/changelog.html#v1-10-0-migration-steps) with focus on the paragraph "Operators that make use of the following UDM Listener secrets variables" and act accordingly.
#### Helmfile new secret: `secrets.minio.openxchangeUser`
**Target group:** All existing deployments that have OX App Suite enabled and that use externally defined secrets in combination with openDesk provided MinIO object storage.
For OX App Suite to access the object storage a new secret has been introduced.
It is declared in [`secrets.yaml.gotmpl`](../helmfile/environments/default/secrets.yaml.gotmpl) by the key: `secrets.minio.openxchangeUser`. If you define your own secrets, please ensure that you provide a value for this secret as well, otherwise the aforementioned secret will be derived from the `MASTER_PASSWORD`.
#### Helmfile new object storage: `objectstores.openxchange.*`
**Target group:** All deployments that use an external object storage.
For OX App Suite's newly introduced filestore you have to configure a new object storage (bucket). When you are using
an external object storage you did this already for all the entries in
[`objectstores.yaml.gotmpl`](../helmfile/environments/default/objectstores.yaml.gotmpl). Where we now introduced
`objectstores.openxchange` section that you also need to provide you external configuration for.
#### OX App Suite fix-up: Using S3 as storage for non mail attachments (pre-upgrade)
**Target group:** All existing deployments that have OX App Suite enabled.
With openDesk 1.6.0 OX App Suite persists the attachments on contact, calendar or task objects in object storage.
To enable the use of this new filestore backend existing deployments must execute the following steps.
Preparation:
- Ensure your `kubeconfig` is pointing to the cluster that is running your deployment.
- Identify/create a e.g. local temporary directory that can keep the attachments while upgrading openDesk.
- Set some environment variables to prepare running the documented commands:
```shell
export ATTACHMENT_TEMP_DIR=<your_temporary_directory_for_the_attachments>
export NAMESPACE=<your_namespace>
```
1. Copy the existing attachments from all `open-xchange-core-mw-default-*` Pods to the identified directory, example for `open-xchange-core-mw-default-0`:
```shell
kubectl cp -n ${NAMESPACE} open-xchange-core-mw-default-0:/opt/open-xchange/ox-filestore ${ATTACHMENT_TEMP_DIR}
```
2. Run the upgrade.
3. Continue with the [related post-upgrade steps](#ox-app-suite-fix-up-using-s3-as-storage-for-non-mail-attachments-post-upgrade)
### Post-upgrade to v1.6.0+
#### OX App Suite fix-up: Using S3 as storage for non mail attachments (post-upgrade)
**Target group:** All existing deployments having OX App Suite enabled.
Continued from the [related pre-upgrade section](#ox-app-suite-fix-up-using-s3-as-storage-for-non-mail-attachments-pre-upgrade).
1. Copy the attachments back from your temporary directory into `open-xchange-core-mw-default-0`.
```shell
kubectl cp -n ${NAMESPACE} ${ATTACHMENT_TEMP_DIR}/* open-xchange-core-mw-default-0:/opt/open-xchange/ox-filestore
```
2. Ideally you verify the files have been copied as expected checking the target directory in the `open-xchange-core-mw-default-0` Pod. All the following commands are for execution within the aforementioned Pod.
3. Get the `id` of the new object storage based OX filestore, using the following command in the first line of the following block. In the shown example output the `id` for the new filestore would be `10` as the filestore can be identified by its path value `s3://ox-filestore-s3`, the `id` of the existing filestore would be `3` identified by the corresponding path `/opt/open-xchange/ox-filestore`:
```shell
/opt/open-xchange/sbin/listfilestore -A $MASTER_ADMIN_USER -P $MASTER_ADMIN_PW
id path size reserved used max-entities cur-entities
3 /opt/open-xchange/ox-filestore 100000 200 5 5000 1
10 s3://ox-filestore-s3 100000 0 0 5000 0
```
4. Get the list of your OX contexts IDs (`cid` column in the output of the `listcontext` command), as the next step needs to be executed per OX context. Most installation will just have a single OX context (`1`).
```shell
/opt/open-xchange/sbin/listcontext -A $MASTER_ADMIN_USER -P $MASTER_ADMIN_PW
cid fid fname enabled qmax qused name lmappings
1 3 1_ctx_store true 5 1 1,context1
```
5. For each of your OX contexts IDs run the final filestore migration command and you will get output like this: `context 1 to filestore 10 scheduled as job 1`:
```shell
/opt/open-xchange/sbin/movecontextfilestore -A $MASTER_ADMIN_USER -P $MASTER_ADMIN_PW -f <your_s3_filestore_id_from_step_3> -c <your_context_id_from_step_4>
```
6. Depending on the size of your filestore, moving the contexts will take some time. You can check the status of a context's jobs with the command below. When the job status is `Done` you can also doublecheck that everything worked as expected by running the `listfilestore` command from step #3 and should see that the filestore is no longer used.
```shell
/opt/open-xchange/sbin/jobcontrol -A $MASTER_ADMIN_USER -P $MASTER_ADMIN_PW -c <your_context_id_from_step_4> -l
ID Type of Job Status Further Information
1 movefilestore Done move context 1 to filestore 10
```
7. Finally you can unregister the old filestore:
```shell
/opt/open-xchange/sbin/unregisterfilestore -A $MASTER_ADMIN_USER -P $MASTER_ADMIN_PW -i <your_old_filestore_id_from_step_3>
```
## v1.4.0+
### Pre-upgrade to v1.4.0+
#### Helmfile new feature: `functional.authentication.ssoFederation`
**Target group:** Deployments that make use of IdP federation as described in [`idp-federation.md`](./enhanced-configuration/idp-federation.md).
Please ensure to configure your IdP federation config details as part of `functional.authentication.ssoFederation`. You can find more details in the "Example configuration" section of [`idp-federation.md`](./enhanced-configuration/idp-federation.md).
#### Helmfile cleanup: `global.additionalMailDomains` as list
**Target group:** Installations that have set `global.additionalMailDomains`.
@@ -273,7 +460,7 @@ persistence:
#### Helmfile new secret: `secrets.nubus.masterpassword`
A not yet templated secret was discovered in the Nubus deployment. It is now declared in [`secrets.yaml.gotmpl`](../helmfile/environments/default/theme.yaml.gotmpl) and can be defined using: `secrets.nubus.masterpassword`. If you define your own secrets, please be sure this new secret is set to the same value as the `MASTER_PASSWORD` environment variable used in your deployment.
A not yet templated secret was discovered in the Nubus deployment. It is now declared in [`secrets.yaml.gotmpl`](../helmfile/environments/default/secrets.yaml.gotmpl) and can be defined using: `secrets.nubus.masterpassword`. If you define your own secrets, please be sure this new secret is set to the same value as the `MASTER_PASSWORD` environment variable used in your deployment.
## v1.1.0+
@@ -680,42 +867,31 @@ kubectl -n ${NAMESPACE} delete pvc shared-run-ums-ldap-server-0
kubectl -n ${NAMESPACE} delete pvc ox-connector-ox-contexts-ox-connector-0
```
## v0.9.0
### Pre-upgrade to v0.9.0
#### Updated `cluster.networking.cidr`
- Action: `cluster.networking.cidr` is now an array (was a string until v0.8.1); please update your setup accordingly if you explicitly set this value.
- Reference:[cluster.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/cluster.yaml)
#### Updated customizable template attributes
- Action: Please update your custom deployment values according to the updated default value structure.
- References:
- `functional.` prefix for `authentication.*`, `externalServices.*`, `admin.*` and `filestore.*`, see [functional.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/functional.yaml).
- `debug.` prefix for `cleanup.*`, see [debug.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/debug.yaml).
- `monitoring.` prefix for `prometheus.*` and `grafana.*`, see [monitoring.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/monitoring.yaml).
- `smtp.` prefix for `localpartNoReply`, see [smtp.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/smtp.yaml).
#### `migrations` S3 bucket
- Action: For self-managed/external S3/object storages, please create a bucket called `migrations` using your S3 endpoint.
- Reference: `objectstores.migrations` in [objectstores.yaml](https://gitlab.opencode.de/bmi/opendesk/deployment/opendesk/-/blob/main/helmfile/environments/default/objectstores.yaml)
# Automated migrations - Details
## v1.6.0+ (automated)
> **Note**<br>
> Details can be found in [run_5.py](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations/-/blob/main/odmigs-python/odmigs_runs/run_5.py).
### v1.6.0+ migrations-post
Restarting the StatefulSets `ums-provisioning-nats` and `ox-connector` due to a workaround applied on the NATS secrets, see the "Notes" segment of the ["Password seed" heading in getting-started.md](./docs/getting-started.md#password-seed)
> **Note**<br>
> This change aims to prevent authentication failures with NATS in some Pods, which can lead to errors such as: `wait-for-nats Unavailable, waiting 2 seconds. Error: nats: 'Authorization Violation'`.
## v1.2.0+ (automated)
> **Note**<br>
> Details can be found in [run_4.py](https://gitlab.opencode.de/bmi/opendesk/components/platform-development/images/opendesk-migrations/-/blob/main/odmigs-python/odmigs_runs/run_4.py).
### migrations-pre
### v1.2.0+ migrations-pre
- Delete PVC `group-membership-cache-ums-portal-consumer-0`: With the upgrade the Nubus Portal Consumer no longer requires to be executed with root privileges. The PVC contains files that require root permission to access them, therefore the PVC gets deleted (and re-created) during the upgrade.
- Delete StatefulSet `ums-portal-consumer`: A bug was fixed in the templating of the Portal Consumer's PVC causing the values in `persistence.storages.nubusPortalConsumer.*` to be ignored. As these values are immutable, we had to delete the whole StatefulSet.
### migrations-post
### v1.2.0+ migrations-post
- Restarting Deployment `ums-provisioning-udm-transformer` and StatefulSet `ums-provisioning-udm-listener` as well as deleting the Nubus Provisioning consumer `durable_name:incoming` on stream `stream:incoming`: Due to a bug in Nubus 1.7.0 the `incoming` stream was blocked after the upgrade, the aforementioned measures unblock the stream.

122
docs/releases.md Normal file
View File

@@ -0,0 +1,122 @@
<!--
SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
-->
<h1>Release Management</h1>
This document outlines the release and patch management strategy for **openDesk**, ensuring that all updates, patches, and new releases are systematically **planned, tested, documented**, and **reliably deployed** into production. The process is designed to align with operational planning requirements and maintain system stability and security.
<!-- TOC -->
* [Release Cycle](#release-cycle)
* [Release Types](#release-types)
* [Release Schedule](#release-schedule)
* [Upgrades](#upgrades)
* [Patch Management Process](#application-administration)
* [Patch Identification & Prioritization](#patch-identification-prioritization)
* [Patch Workflow](#patch-workflow)
* [Communication Plan](#communication-plan)
* [Announcement Channels](#announcement-channels)
* [Timing of Communications](#timing-of-communications)
* [Documentation Requirements](#documentation-requirements)
* [Compliance & Review](#compliance-review)
<!-- TOC -->
# Release Cycle
openDesk follows a structured release cycle to ensure predictability and reliability:
## Release Types
| Type | Frequency | Content |
|----------------|---------------|---------------------------------------------------------------|
| **Major** | Annually (Q3) | Large feature sets, architecture changes, breaking changes |
| **Minor** | Monthly | New features, enhancements, may contain breaking changes or refactors (clearly flagged in the notes) |
| **Patch** | On demand | Bug fixes, security updates, minor improvements, no intended breaking changes |
> **Note:** openDesk does **not** guarantee that minor releases are 100% backwardcompatible. When a breaking change is unavoidable it is announced in the release notes under a dedicated header **“Breaking Changes”** and a migration guide is provided.
## Release Schedule
- **Major releases** are scheduled for **Q3 each year**, with planning beginning in Q1.
- **Minor releases** occur **monthly on Mondays**, typically **around 10:00 AM** local time.
- Each minor release follows a **4-week cycle**.
- **Week 13**: Active development of new features and improvements.
- **End of Week 3**: **Feature freeze** is enforced to allow stabilization and testing.
- **Week 4**: Final testing, approvals, and preparation for release.
- At the **end of Week 4**, a new minor version is released, and a new cycle begins.
- **Patch releases** are created **on demand**, based on criticality and urgency.
## Upgrades
- openDesk does not guarantee an inplace upgrade between two major versions. Always consult the release notes and plan appropriate migration efforts.
- Even within the same major line, skipping multiple monthly minor versions is not guaranteed to work without intermediate upgrade steps.
- All breaking changes, including those in monthly minor releases, are highlighted in the release notes under Breaking Changes.
- Additional, nonbinding migration hints are collected in `migrations.md`
# Patch Management Process
A standardized process ensures patches are developed, prioritized, and deployed efficiently.
## Patch Identification & Prioritization
Patches are categorized by severity and urgency:
| Priority Level | Criteria |
|----------------|--------------------------------------------------------------------------|
| **Critical** | Security vulnerabilities, system outages, data loss risks |
| **High** | Major bugs affecting multiple users, performance degradation |
| **Medium** | Functional bugs with workarounds, minor usability issues |
| **Low** | Cosmetic issues, documentation updates |
## Patch Workflow
The following steps define the patch workflow from issue identification to post-deployment review. This process ensures consistent quality and minimal disruption to users:
1. **Identification**: Potential issues are detected through automated monitoring, internal testing, audits, or user reports submitted via the support ticketing system.
2. **Assessment**: The product and engineering teams triage the issue, determine severity based on business and user impact, and prioritize it within the patch queue.
3. **Development**: A fix is implemented on a dedicated feature or hotfix branch, adhering to coding standards and version control protocols.
4. **Testing**: All patches undergo automated unit and integration tests, as well as manual QA validation in a staging environment that closely mirrors production.
5. **Approval**: Once tested, the patch must be approved by the product owner or a designated release manager, with proper documentation and change control entries.
6. **Deployment**: The patch is rolled out using CI/CD pipelines during predefined deployment windows or as soon as possible for critical issues.
7. **Post-deployment review**: After deployment, the fix is verified in production, and monitoring tools are used to detect regressions or unintended side effects.
This workflow ensures that patches are handled with the same level of discipline as planned releases, supporting both reliability and agility.
# Communication Plan
A lightweight approach reduces manual effort while maintaining transparency.
## Announcement Channels
| Channel | Audience | Purpose | Owner |
|---------|----------|---------|-------|
| **openCode Changelog** | Community & EE | Primary source of truth for every release | DevOps |
| **AccountManager Mail / Ticket** | Enterprise customers | Targeted information & upgrade advice | Customer Success |
## Timing of Communications
| Release Type | What | When |
|--------------|------|------|
| **Major** | Roadmap entry + migration highlights | 4 weeks before release |
| | Final confirmation | 1 week before release |
| **Minor** | Changelog entry (draft) | Immediately after feature freeze (end of week 3) |
| | EE mail/ticket | 2 business days before deployment |
| **Patch** | Changelog entry | Right after production deploy |
| | EE mail/ticket (only if impacted) | Within 1 business day |
Community users consume information via openCode; Enterprise customers get an additional nudge via their account manager  **no mass mailings are sent manually**.
# Documentation Requirements
Each release (major, minor, or patch) must include:
- **Release notes** outlining new features, fixes, and known issues
- **Change logs** with commit references and affected components
- **Test reports** confirming QA coverage and results
- **Deployment checklist** reviewed and approved by the product owner
# Compliance & Review
- The release process is reviewed **bi-annually** to incorporate feedback and evolving requirements
- Emergency patches (e.g., zero-day security issues) may bypass the standard schedule but must be documented post-deployment

View File

@@ -29,12 +29,14 @@ openDesk is a Kubernetes-only solution and requires an existing Kubernetes (K8s)
- K8s cluster >= v1.24, [CNCF Certified Kubernetes distribution](https://www.cncf.io/certification/software-conformance/)
- Domain and DNS Service
- Ingress controller (Ingress NGINX) >= [4.11.5/1.11.5](https://github.com/kubernetes/ingress-nginx/releases)
- [Helm](https://helm.sh/) >= v3.9.0
- [Helmfile](https://helmfile.readthedocs.io/en/latest/) >= v1.0.0-rc8
- [HelmDiff](https://github.com/databus23/helm-diff) >= v3.6.0
- Volume provisioner supporting RWO (read-write-once)[^1]
- [Helm](https://helm.sh/) >= v3.17.3, but not v3.18.0[^1]
- [Helmfile](https://helmfile.readthedocs.io/en/latest/) >= v1.0.0
- [HelmDiff](https://github.com/databus23/helm-diff) >= v3.11.0
- Volume provisioner supporting RWO (read-write-once)[^2]
- Certificate handling with [cert-manager](https://cert-manager.io/)
- [OpenKruise](https://openkruise.io/)[^2] >= v1.6
**Additional openDesk Enterprise requirements**
- [OpenKruise](https://openkruise.io/)[^3] >= v1.6
# Hardware
@@ -115,7 +117,7 @@ deployments, you need to make use of your own production-grade services; see the
|----------|---------------------|---------|-----------------------|
| Cache | Memcached | `1.6.x` | Memcached |
| | Redis | `7.x.x` | Redis |
| Database | Cassandra[^2] | `5.0.x` | Cassandra |
| Database | Cassandra[^3] | `5.0.x` | Cassandra |
| | MariaDB | `10.x` | MariaDB |
| | PostgreSQL | `15.x` | PostgreSQL |
| Mail | Mail Transfer Agent | | Postfix |
@@ -135,6 +137,8 @@ Helmfile requires [HelmDiff](https://github.com/databus23/helm-diff) to compare
# Footnotes
[^1]: Due to [restrictions on Kubernetes `emptyDir`](https://github.com/kubernetes/kubernetes/pull/130277) you need a volume provisioner that has sticky bit support, otherwise the OpenProject seeder job will fail.
[^1]: Due to a [Helm bug](https://github.com/helm/helm/issues/30890) Helm 3.18.0 is not supported.
[^2]: Required for Dovecot Pro as part of openDesk Enterprise Edition.
[^2]: Due to [restrictions on Kubernetes `emptyDir`](https://github.com/kubernetes/kubernetes/pull/130277) you need a volume provisioner that has sticky bit support, otherwise the OpenProject seeder job will fail.
[^3]: Required for Dovecot Pro as part of openDesk Enterprise Edition.

View File

@@ -169,22 +169,19 @@ This list gives you an overview of templated security settings and if they compl
| **jitsi**/jitsi/jitsi/web | :x: | no | no | no | no | 0 | 0 | yes | no |
| **jitsi**/jitsi/patchJVB | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes |
| **nextcloud**/opendesk-nextcloud-management | :x: | no | no | no | yes | 101 | 101 | yes | yes |
| **nextcloud**/opendesk-nextcloud-notifypush | :white_check_mark: | no | no | yes | yes | 101 | 101 | yes | yes |
| **nextcloud**/opendesk-nextcloud/aio | :white_check_mark: | no | no | yes | yes | 101 | 101 | yes | yes |
| **nextcloud**/opendesk-nextcloud/exporter | :white_check_mark: | no | no | yes | yes | 65532 | 65532 | yes | yes |
| **notes**/impress/backend | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes |
| **notes**/impress/frontend | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes |
| **notes**/impress/yProvider | :white_check_mark: | no | no | yes | yes | 1001 | 1001 | yes | yes |
| **notes**/impress/backend | :x: | n/a | n/a | n/a | n/a | n/a | n/a | n/a | no |
| **notes**/impress/frontend | :x: | n/a | n/a | n/a | n/a | n/a | n/a | n/a | no |
| **notes**/impress/y-provider | :x: | n/a | n/a | n/a | n/a | n/a | n/a | n/a | no |
| **nubus**/intercom-service | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
| **nubus**/intercom-service/provisioning | :x: | n/a | n/a | n/a | n/a | n/a | n/a | yes | no |
| **nubus**/opendesk-keycloak-bootstrap | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
| **nubus**/ums/keycloak | :x: | no | n/a | no | yes | 1000 | 1000 | yes | yes |
| **nubus**/ums/nubusGuardian/authorizationApi | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
| **nubus**/ums/nubusGuardian/managementApi | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
| **nubus**/ums/nubusGuardian/managementUi | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
| **nubus**/ums/nubusGuardian/openPolicyAgent | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |
| **nubus**/ums/nubusKeycloakBootstrap | :x: | no | n/a | no | yes | 1000 | 1000 | yes | yes |
| **nubus**/ums/nubusKeycloakBootstrap | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes |
| **nubus**/ums/nubusKeycloakExtensions/handler | :x: | n/a | n/a | n/a | n/a | n/a | n/a | yes | no |
| **nubus**/ums/nubusKeycloakExtensions/proxy | :x: | n/a | n/a | n/a | n/a | n/a | n/a | yes | no |
| **nubus**/ums/nubusKeycloakExtensions/proxy | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes |
| **nubus**/ums/nubusLdapNotifier | :x: | no | n/a | yes | yes | 101 | 102 | yes | yes |
| **nubus**/ums/nubusNotificationsApi | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes |
| **nubus**/ums/nubusPortalConsumer | :x: | n/a | n/a | n/a | n/a | n/a | n/a | yes | no |
@@ -197,7 +194,7 @@ This list gives you an overview of templated security settings and if they compl
| **nubus**/ums/nubusUdmListener | :x: | no | n/a | yes | yes | 102 | 65534 | yes | yes |
| **nubus**/ums/nubusUdmRestApi | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes |
| **nubus**/ums/nubusUmcGateway | :x: | no | n/a | yes | yes | 1000 | 1000 | yes | yes |
| **nubus**/ums/nubusUmcServer | :x: | no | n/a | yes | no | 0 | 0 | yes | yes |
| **nubus**/ums/nubusUmcServer | :x: | no | n/a | yes | yes | 999 | 999 | yes | yes |
| **open-xchange**/dovecot | :x: | no | n/a | yes | n/a | n/a | n/a | yes | no ["CHOWN","DAC_OVERRIDE","KILL","NET_BIND_SERVICE","SETGID","SETUID","SYS_CHROOT"] |
| **open-xchange**/open-xchange/appsuite/core-documentconverter | :x: | no | no | no | yes | 987 | 1000 | yes | yes |
| **open-xchange**/open-xchange/appsuite/core-guidedtours | :white_check_mark: | no | no | yes | yes | 1000 | 1000 | yes | yes |

View File

@@ -20,6 +20,11 @@ Please review the default configuration that is applied to understand your custo
You can just update the files in [helmfile/files/theme](../helmfile/files/theme) to change logos, favicons etc. Note that the `.svg` versions of the favicons are also used for the portal tiles.
> **Note**<br>
> Theming focuses on colors, iconography and imagery. If you like to adapt the default links in the portal pointing to external
> resources (like "Support", "Legal Notice") please check the `functional.portal` section
> in [`functional.yaml.gotmpl`](../helmfile/environments/default/functional.yaml.gotmpl)
# Known limitations
- Portal and Keycloak screen styles, especially colors, must be applied in the [`portalStylesheets.css`](../helmfile/files/theme/portalStylesheet.css),

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
controller:
enableHashmapParallelization: true
@@ -34,7 +32,9 @@ imagePullSecrets:
ingress:
enabled: {{ .Values.ingress.enabled }}
annotations:
{{ .Values.annotations.coco.ingress | toYaml | nindent 4 }}
{{- with .Values.annotations.coco.ingress }}
{{ . | toYaml | nindent 4 }}
{{- end }}
className: {{ .Values.ingress.ingressClassName | quote }}
hosts:
- host: "{{ .Values.global.hosts.collabora }}.{{ .Values.global.domain }}"

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
image:
repository: "{{ coalesce .Values.repositories.image.registryOpencodeDeEnterprise .Values.global.imageRegistry .Values.images.collabora.registry }}/{{ .Values.images.collabora.repository }}"

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
autoscaling:
enabled: false
@@ -32,7 +30,7 @@ collabora:
{{- end }}
{{- if .Values.apps.collaboraController.enabled }}
--o:indirection_endpoint.url=https://{{ .Values.global.hosts.collabora }}.{{ .Values.global.domain }}/controller/routeToken
--o:monitors.monitor[0]=wss://{{ .Values.global.hosts.collabora }}.{{ .Values.global.domain }}/controller/ws
--o:monitors.monitor[0]=ws://collabora-controller-cool-controller:9000/controller/ws
--o:monitors.monitor[0][@retryInterval]=5
{{- end }}
username: "collabora-internal-admin"
@@ -79,8 +77,8 @@ ingress:
# HAProxy
haproxy.org/timeout-tunnel: "{{ .Values.ingress.parameters.bodyTimeout.collabora }}s"
haproxy.org/backend-config-snippet: |
balance url_param WOPISrc check_post
hash-type consistent
balance url_param WOPISrc check_post
hash-type consistent
# HAProxy - Community: https://haproxy-ingress.github.io/
haproxy-ingress.github.io/timeout-tunnel: "{{ .Values.ingress.parameters.bodyTimeout.collabora }}s"
haproxy-ingress.github.io/balance-algorithm: "url_param WOPISrc check_post"
@@ -91,9 +89,9 @@ ingress:
acl admin_url path_beg /cool/adminws/
acl admin_url path_beg /browser/dist/admin/admin.html
http-request deny if admin_url
{{- with .Values.annotations.collabora.ingress }}
{{ . | toYaml | nindent 4 }}
{{- end }}
{{- with .Values.annotations.collabora.ingress }}
{{ . | toYaml | nindent 4 }}
{{- end }}
enabled: {{ .Values.ingress.enabled }}
className: {{ .Values.ingress.ingressClassName | quote }}
hosts:

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
# https://github.com/cryptpad/helm/blob/main/charts/cryptpad/README.md or
# https://github.com/cryptpad/helm/blob/main/charts/cryptpad/values.yaml

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
commonAnnotations:
{{ .Values.annotations.element.common | toYaml | nindent 2 }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
additionalAnnotations:
{{ .Values.annotations.elementMatrixNeoboardWidget.additional | toYaml | nindent 2 }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
additionalAnnotations:
{{ .Values.annotations.elementMatrixNeochoiceWidget.additional | toYaml | nindent 2 }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
cleanup:
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
additionalAnnotations:
{{ .Values.annotations.elementMatrixNeodatefixBot.additional | toYaml | nindent 2 }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
additionalAnnotations:
{{ .Values.annotations.elementMatrixNeodatefixWidget.additional | toYaml | nindent 2 }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
cleanup:
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Center for Digital Sovereignty of Public Administration (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Federal Ministry of the Interior and Community, PG ZenDiS "Project group for the development of ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
additionalAnnotations:
{{ .Values.annotations.elementMatrixUserVerificationService.additional | toYaml | nindent 2 }}

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
global:
domain: {{ .Values.global.domain | quote }}

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
global:
domain: {{ .Values.global.domain | quote }}

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
global:
domain: {{ .Values.global.domain | quote }}

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
global:
domain: {{ .Values.global.domain | quote }}

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
global:
domain: {{ .Values.global.domain | quote }}

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
global:
domain: {{ .Values.global.domain | quote }}

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
global:
domain: {{ .Values.global.domain | quote }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
commonAnnotations:
{{ .Values.annotations.elementSynapseWeb.common | toYaml | nindent 2 }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
commonAnnotations:
{{ .Values.annotations.elementSynapse.common | toYaml | nindent 2 }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
commonAnnotations:
{{ .Values.annotations.elementWellKnown.common | toYaml | nindent 2 }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
global:
domain: {{ .Values.global.domain | quote }}
@@ -324,7 +322,7 @@ patchJVB:
{{ .Values.seLinuxOptions.jitsiPatchJVB | toYaml | nindent 6 }}
image:
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.jitsiPatchJVB.registry | quote }}
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.jitsiPatchJVB.registry | quote }}
repository: {{ .Values.images.jitsiPatchJVB.repository | quote }}
tag: {{ .Values.images.jitsiPatchJVB.tag | quote }}

View File

@@ -24,9 +24,9 @@ releases:
chart: "nextcloud-repo/{{ .Values.charts.nextcloudManagement.name }}"
version: "{{ .Values.charts.nextcloudManagement.version }}"
values:
- "values-nextcloud-mgmt.yaml.gotmpl"
- "values-nextcloud-management.yaml.gotmpl"
{{- if eq (env "OPENDESK_ENTERPRISE") "true" }}
- "values-nextcloud-mgmt-enterprise.yaml.gotmpl"
- "values-nextcloud-management-ee.yaml.gotmpl"
{{- end }}
{{- range .Values.customization.release.opendeskNextcloudManagement }}
- {{ . }}
@@ -34,14 +34,14 @@ releases:
waitForJobs: true
wait: true
installed: {{ .Values.apps.nextcloud.enabled }}
timeout: 900
timeout: 1800
- name: "opendesk-nextcloud"
chart: "nextcloud-repo/{{ .Values.charts.nextcloud.name }}"
version: "{{ .Values.charts.nextcloud.version }}"
values:
- "values-nextcloud.yaml.gotmpl"
{{- if eq (env "OPENDESK_ENTERPRISE") "true" }}
- "values-nextcloud-enterprise.yaml.gotmpl"
- "values-nextcloud-ee.yaml.gotmpl"
{{- end }}
{{- range .Values.customization.release.opendeskNextcloud }}
- {{ . }}
@@ -49,6 +49,23 @@ releases:
needs:
- "opendesk-nextcloud-management"
installed: {{ .Values.apps.nextcloud.enabled }}
timeout: 1800
- name: "opendesk-nextcloud-notifypush"
chart: "nextcloud-repo/{{ .Values.charts.nextcloudNotifyPush.name }}"
version: "{{ .Values.charts.nextcloudNotifyPush.version }}"
values:
- "values-nextcloud-notifypush.yaml.gotmpl"
{{- if eq (env "OPENDESK_ENTERPRISE") "true" }}
- "values-nextcloud-notifypush-ee.yaml.gotmpl"
{{- end }}
{{- range .Values.customization.release.opendeskNextcloudNotifyPush }}
- {{ . }}
{{- end }}
wait: true
needs:
- "opendesk-nextcloud"
installed: {{ and .Values.apps.nextcloud.enabled (gt .Values.replicas.nextcloudNotifyPush 0) }}
timeout: 1800
commonLabels:
deployStage: "050-components"

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
aio:
image:

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
image:
registry: {{ coalesce .Values.repositories.image.registryOpencodeDeEnterprise .Values.global.imageRegistry .Values.images.nextcloud.registry | quote }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
global:
domain: {{ .Values.global.domain | quote }}
@@ -67,6 +65,8 @@ configuration:
enabled: true
integrationOpenproject:
enabled: {{ .Values.apps.openproject.enabled }}
notifyPush:
enabled: {{ gt .Values.replicas.nextcloudNotifyPush 0 }}
spreed:
enabled: true
circles:
@@ -101,7 +101,9 @@ configuration:
{{- end }}
ldap:
base: {{ .Values.ldap.baseDn | quote }}
host: {{ .Values.ldap.host | quote }}
dn: "uid=ldapsearch_nextcloud,cn=users,{{ .Values.ldap.baseDn }}"
password:
value: {{ .Values.secrets.nubus.ldapSearch.nextcloud | quote }}
adminGroupName: "managed-by-attribute-FileshareAdmin"
@@ -173,6 +175,9 @@ configuration:
token:
value: {{ .Values.secrets.nextcloud.metricsToken | quote }}
# A sane default for windows clients would be: `* " | & ? , ; : \ / ~ < >`
forbiddenChars: "* \" | & ? , ; : \\ / ~ < >"
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
@@ -230,6 +235,33 @@ serviceAccount:
{{ .Values.annotations.nextcloudNextcloudMgmt.serviceAccount | toYaml | nindent 4 }}
theme:
{{ .Values.theme | toYaml | nindent 2 }}
background:
# Static color background
# NOTE: Not available yet because of a bug in Nextcloud 31.X
# Ref: https://github.com/nextcloud/server/commit/da51459022d21a569ab8271c5456f69c9316cdad
color: {{ .Values.theme.colors.primary | quote }}
# PNG or JPEG image background. Overwrites `theme.background.color`
imgBase64: {{ .Values.theme.imagery.files.backgroudImg | quote }}
colors:
primary: {{ .Values.theme.colors.primary | quote }}
favicon:
pngBase64: {{ .Values.theme.imagery.files.faviconPng | quote }}
logo:
svgBase64: {{ .Values.theme.imagery.logoHeaderSvgB64 | quote }}
# Overwrites the header color of Nextcloud with the value set in the `integration_swp` app
# This can *intentionally* only be adjusted via customizing
swpOverrideHeaderColor: true
texts:
slogan: {{ .Values.theme.texts.slogan | quote }}
productName: {{ .Values.theme.texts.productName | quote }}
urls:
imprint: {{ .Values.functional.portal.linkLegalNotice | quote }}
privacy: {{ .Values.functional.portal.linkPrivacyStatement | quote }}
main: {{ printf "%s.%s" .Values.global.hosts.nubus .Values.global.domain }}
...

View File

@@ -0,0 +1,6 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
image:
registry: {{ coalesce .Values.repositories.image.registryOpencodeDeEnterprise .Values.global.imageRegistry .Values.images.nextcloud.registry | quote }}
...

View File

@@ -0,0 +1,141 @@
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
global:
domain: {{ .Values.global.domain | quote }}
hosts:
{{ .Values.global.hosts | toYaml | nindent 4 }}
imagePullSecrets:
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
additionalAnnotations:
intents.otterize.com/service-name: "opendesk-nextcloud-notifypush"
{{- with .Values.annotations.nextcloudNotifyPush.additional }}
{{ . | toYaml | nindent 4 }}
{{- end }}
configuration:
cache:
auth:
enabled: true
username:
value: {{ .Values.cache.nextcloud.username }}
password:
value: {{ .Values.cache.nextcloud.password | default .Values.secrets.redis.password | quote }}
host: {{ .Values.cache.nextcloud.host | quote }}
port: {{ .Values.cache.nextcloud.port | quote }}
tls: {{ .Values.cache.nextcloud.tls }}
database:
{{ if eq .Values.databases.nextcloud.type "mariadb" }}
type: "mysql"
{{ else if eq .Values.databases.nextcloud.type "postgresql" }}
type: "postgres"
{{ else }}
{{ .Values.databases.nextcloud.type | quote }}
{{ end }}
host: {{ .Values.databases.nextcloud.host | quote }}
port: {{ .Values.databases.nextcloud.port | quote }}
name: {{ .Values.databases.nextcloud.name | quote }}
auth:
username:
value: {{ .Values.databases.nextcloud.username | quote }}
password:
{{- if or (eq .Values.databases.nextcloud.type "mariadb") (eq .Values.databases.nextcloud.type "mysql") }}
value: {{ .Values.databases.nextcloud.password | default .Values.secrets.mariadb.nextcloudUser | quote }}
{{- else if or (eq .Values.databases.nextcloud.type "postgresql") (eq .Values.databases.nextcloud.type "psql") }}
value: {{ .Values.databases.nextcloud.password | default .Values.secrets.postgresql.nextcloudUser | quote }}
{{- else }}
value: {{ .Values.databases.nextcloud.password | quote }}
{{- end }}
trustedProxy: {{ join " " .Values.cluster.networking.cidr | quote }}
# Nextcloud connection
# FIXME: Dynamically get the service name of the `opendesk-nextcloud-aio` chart
# IDEA: helmfile > service-names.yaml.gotmpl with service names (external/internal)
# So this is controller on a more "global" level
# TODO: Find a sensible default
nextcloudUrl: "http://opendesk-nextcloud-aio"
logging:
# Default value for logging is "error" we bump it to "info" for better information in logs
# NOTE: "trace", which includes "debug" might be too verbose
# https://docs.rs/env_logger/latest/env_logger/#enabling-logging
level: {{ if .Values.debug.enabled }}"debug"{{ else }}"info"{{ end }}
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- "ALL"
enabled: true
privileged: false
runAsUser: 101
runAsGroup: 101
seccompProfile:
type: "RuntimeDefault"
readOnlyRootFilesystem: true
runAsNonRoot: true
seLinuxOptions:
{{ .Values.seLinuxOptions.nextcloud | toYaml | nindent 6 }}
{{- if .Values.certificate.selfSigned }}
extraEnvVars:
- name: "FS_ENV_CA_CERTIFICATE_PATH"
value: "/etc/ssl/certs/ca-certificates.crt"
extraVolumes:
- name: "trusted-cert-secret-volume"
secret:
secretName: "opendesk-certificates-ca-tls"
items:
- key: "ca.crt"
path: "ca-certificates.crt"
extraVolumeMounts:
- name: "trusted-cert-secret-volume"
mountPath: "/etc/ssl/certs/ca-certificates.crt"
subPath: "ca-certificates.crt"
{{- end }}
image:
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.nextcloud.registry | quote }}
repository: {{ .Values.images.nextcloud.repository | quote }}
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
tag: {{ .Values.images.nextcloud.tag | quote }}
ingress:
enabled: {{ .Values.ingress.enabled }}
annotations:
{{- with .Values.annotations.nextcloudNotifyPush.ingress }}
{{ . | toYaml | nindent 6 }}
{{- end }}
ingressClassName: {{ .Values.ingress.ingressClassName | quote }}
host: "{{ .Values.global.hosts.nextcloud }}.{{ .Values.global.domain }}"
tls:
secretName: {{ .Values.ingress.tls.secretName | quote }}
metrics:
enabled: true
service:
annotations:
{{ .Values.annotations.nextcloudNotifyPush.serviceMetrics | toYaml | nindent 6 }}
podAnnotations:
{{ .Values.annotations.nextcloudNotifyPush.pod | toYaml | nindent 4 }}
podSecurityContext:
fsGroup: 101
# prometheus:
# serviceMonitor:
# enabled: { .Values.monitoring.prometheus.serviceMonitors.enabled }}
# labels:
# { .Values.monitoring.prometheus.serviceMonitors.labels | toYaml | nindent 8 }}
# prometheusRule:
# enabled: { .Values.monitoring.prometheus.prometheusRules.enabled }}
# additionalLabels:
# { .Values.monitoring.prometheus.prometheusRules.labels | toYaml | nindent 8 }}
replicaCount: {{ .Values.replicas.nextcloudNotifyPush }}
resources:
{{ .Values.resources.nextcloudNotifyPush | toYaml | nindent 4 }}
service:
annotations:
{{ .Values.annotations.nextcloudNotifyPush.service | toYaml | nindent 6 }}
serviceAccount:
annotations:
{{ .Values.annotations.nextcloudNotifyPush.serviceAccount | toYaml | nindent 6 }}
...

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
global:
imagePullSecrets:

View File

@@ -1,278 +1,197 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
image:
repository: {{ printf "%s/%s" (coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.notesBackend.registry) (.Values.images.notesBackend.repository) | quote }}
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
tag: {{ .Values.images.notesBackend.tag }}
credentials:
name: {{ .Values.global.imagePullSecrets | first | quote }}
ingress:
enabled: {{ .Values.ingress.enabled }}
className: {{ .Values.ingress.ingressClassName }}
host: "{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}"
tls:
enabled: "{{ .Values.ingress.tls.enabled }}"
secretName: {{ .Values.ingress.tls.secretName | quote }}
ingressCollaborationWS:
enabled: {{ .Values.ingress.enabled }}
className: {{ .Values.ingress.ingressClassName }}
host: "{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}"
path: "/collaboration/ws/"
tls:
enabled: "{{ .Values.ingress.tls.enabled }}"
secretName: {{ .Values.ingress.tls.secretName | quote }}
annotations:
nginx.ingress.kubernetes.io/auth-response-headers: "Authorization, X-Can-Edit, X-User-Id"
nginx.ingress.kubernetes.io/auth-url: https://{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}/api/v1.0/documents/collaboration-auth/
nginx.ingress.kubernetes.io/enable-websocket: "true"
nginx.ingress.kubernetes.io/proxy-read-timeout: "86400"
nginx.ingress.kubernetes.io/proxy-send-timeout: "86400"
nginx.ingress.kubernetes.io/upstream-hash-by: $arg_room
{{- with .Values.annotations.notes.ingressCollaborationWS }}
{{ . | toYaml | nindent 4 }}
{{- end }}
ingressAdmin:
enabled: {{ .Values.ingress.enabled }}
className: {{ .Values.ingress.ingressClassName }}
host: "{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}"
tls:
enabled: "{{ .Values.ingress.tls.enabled }}"
secretName: {{ .Values.ingress.tls.secretName | quote }}
annotations:
{{ .Values.annotations.notes.ingressAdmin | toYaml | nindent 4 }}
ingressMedia:
enabled: {{ .Values.ingress.enabled }}
className: {{ .Values.ingress.ingressClassName }}
host: "{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}"
annotations:
nginx.ingress.kubernetes.io/auth-response-headers: "Authorization, X-Amz-Date, X-Amz-Content-SHA256"
nginx.ingress.kubernetes.io/auth-url: "https://{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}/api/v1.0/documents/media-auth/"
nginx.ingress.kubernetes.io/upstream-vhost: {{ .Values.objectstores.notes.endpoint | default (printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /{{ .Values.objectstores.notes.bucket }}/$1
nginx.ingress.kubernetes.io/session-cookie-path: /media
{{- with .Values.annotations.notes.ingressMedia }}
{{ . | toYaml | nindent 4 }}
{{- end }}
tls:
enabled: "{{ .Values.ingress.tls.enabled }}"
secretName: {{ .Values.ingress.tls.secretName | quote }}
ingressCollaborationApi:
enabled: {{ .Values.ingress.enabled }}
className: {{ .Values.ingress.ingressClassName }}
host: "{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}"
path: /collaboration/api/
tls:
enabled: "{{ .Values.ingress.tls.enabled }}"
secretName: {{ .Values.ingress.tls.secretName | quote }}
annotations:
{{ .Values.annotations.notes.ingressCollaborationAPI | toYaml | nindent 4 }}
serviceMedia:
host: {{ .Values.objectstores.notes.endpoint | default (printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
port: {{ .Values.objectstores.notes.port | default 443 }}
annotations:
{{ .Values.annotations.notes.serviceMedia | toYaml | nindent 4 }}
frontend:
image:
repository: {{ printf "%s/%s" (coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.notesFrontend.registry) (.Values.images.notesFrontend.repository) | quote }}
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
tag: {{ .Values.images.notesFrontend.tag }}
envVars:
PORT: 8080
NEXT_PUBLIC_API_ORIGIN: {{ printf "https://%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
NEXT_PUBLIC_Y_PROVIDER_URL: {{ printf "wss://%s.%s/ws" .Values.global.hosts.notes .Values.global.domain | quote }}
NEXT_PUBLIC_MEDIA_URL: {{ printf "https://%s" (.Values.objectstores.notes.endpoint | default (printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain)) | quote }}
runtimeEnvs:
ICS_BASE_URL: {{ printf "https://%s.%s" .Values.global.hosts.intercomService .Values.global.domain | quote }}
PORTAL_BASE_URL: {{ printf "https://%s.%s" .Values.global.hosts.nubus .Values.global.domain | quote }}
replicas: {{ .Values.replicas.notesFrontend }}
resources:
{{ .Values.resources.notesFrontend | toYaml | nindent 4 }}
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- "ALL"
privileged: false
runAsUser: 1001
runAsGroup: 1001
seccompProfile:
type: "RuntimeDefault"
readOnlyRootFilesystem: true
runAsNonRoot: true
seLinuxOptions:
{{ .Values.seLinuxOptions.notesFrontend | toYaml | nindent 6 }}
podAnnotations:
{{ .Values.annotations.notesFrontend.pod | toYaml | nindent 4 }}
service:
annotations:
{{ .Values.annotations.notesFrontend.service | toYaml | nindent 6 }}
yProvider:
image:
repository: {{ printf "%s/%s" (coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.notesYProvider.registry) (.Values.images.notesYProvider.repository) | quote }}
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
tag: {{ .Values.images.notesYProvider.tag }}
resources:
{{ .Values.resources.notesYProvider | toYaml | nindent 4 }}
replicas: {{ .Values.replicas.notesYProvider }}
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- "ALL"
privileged: false
runAsUser: 1001
runAsGroup: 1001
seccompProfile:
type: "RuntimeDefault"
readOnlyRootFilesystem: true
runAsNonRoot: true
seLinuxOptions:
{{ .Values.seLinuxOptions.notesBackend | toYaml | nindent 6 }}
envVars:
COLLABORATION_LOGGING: {{ if .Values.debug.enabled }}"true"{{ else }}"false"{{ end }}
COLLABORATION_SERVER_ORIGIN: {{ printf "https://%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
COLLABORATION_SERVER_SECRET: {{ .Values.secrets.notes.collaborationSecret | quote }}
Y_PROVIDER_API_KEY: {{ .Values.secrets.notes.collaborationSecret | quote }}
podAnnotations:
{{ .Values.annotations.notesYProvider.pod | toYaml | nindent 4 }}
service:
annotations:
{{ .Values.annotations.notesYProvider.service | toYaml | nindent 6 }}
oidc:
clientId: "opendesk-notes"
clientSecret: {{ .Values.secrets.keycloak.clientSecret.notes | quote }}
aiApiKey: {{ .Values.ai.apiKey }}
aiBaseUrl: {{ .Values.ai.endpoint }}
djangoSuperUserEmail: "default.admin@{{ .Values.global.domain }}"
djangoSuperUserPass: {{ .Values.secrets.notes.superuser }}
djangoSecretKey: {{ .Values.secrets.notes.djangoSecretKey }}
global:
collaborationServerSecret:
value: {{ .Values.secrets.notes.collaborationSecret | quote }}
yProviderApiKey:
value: {{ .Values.secrets.notes.collaborationSecret | quote }}
fqdn: "{{ .Values.global.hosts.notes }}.{{ .Values.global.domain }}"
tlsSecretName: {{ .Values.ingress.tls.secretName | quote }}
backend:
image:
repository: {{ printf "%s/%s" (coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.notesBackend.registry) (.Values.images.notesBackend.repository) | quote }}
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
tag: {{ .Values.images.notesBackend.tag }}
replicas: {{ .Values.replicas.notesBackend }}
envVars:
DB_HOST: {{ .Values.databases.notes.host | quote }}
DB_NAME: {{ .Values.databases.notes.name | quote }}
DB_USER: {{ .Values.databases.notes.username | quote }}
DB_PASSWORD: {{ .Values.databases.notes.password | default .Values.secrets.postgresql.notesUser | quote }}
DB_PORT: {{ .Values.databases.notes.port | quote }}
POSTGRES_DB: {{ .Values.databases.notes.name | quote }}
POSTGRES_USER: {{ .Values.databases.notes.username | quote }}
POSTGRES_PASSWORD: {{ .Values.databases.notes.password | default .Values.secrets.postgresql.notesUser | quote }}
FRONTEND_THEME: "openDesk"
REDIS_URL: "redis://default:{{ .Values.cache.notes.password | default .Values.secrets.redis.password }}@{{ .Values.cache.notes.host }}:{{ .Values.cache.notes.port }}/7"
AWS_S3_ENDPOINT_URL: {{ printf "https://%s" (.Values.objectstores.notes.endpoint | default (printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain)) | quote }}
AWS_S3_ACCESS_KEY_ID: {{ .Values.objectstores.notes.username }}
AWS_S3_SECRET_ACCESS_KEY: {{ .Values.objectstores.notes.secretKey | default .Values.secrets.minio.notesUser | quote }}
AWS_STORAGE_BUCKET_NAME: {{ .Values.objectstores.notes.bucket }}
DJANGO_CSRF_TRUSTED_ORIGINS: {{ printf "https://%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
DJANGO_SITE_DOMAIN: {{ printf "%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
DJANGO_SITE_NAME: {{ printf "%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
DJANGO_CONFIGURATION: Production
DJANGO_ALLOWED_HOSTS: "*"
DJANGO_SECRET_KEY: {{ .Values.secrets.notes.djangoSecretKey }}
DJANGO_SETTINGS_MODULE: impress.settings
DJANGO_SUPERUSER_PASSWORD: {{ .Values.secrets.notes.superuser }}
DJANGO_EMAIL_BRAND_NAME: "openDesk"
DJANGO_EMAIL_LOGO_IMG: {{ printf "https://%s.%s/univention/portal/icons/entries/swp.notes.svg" .Values.global.hosts.nubus .Values.global.domain | quote }}
DJANGO_EMAIL_FROM: "{{ .Values.smtp.localpartNoReply }}@{{ .Values.global.domain }}"
DJANGO_EMAIL_HOST: "postfix"
DJANGO_EMAIL_PORT: 25
DJANGO_EMAIL_USE_SSL: False
DJANGO_EMAIL_HOST_USER: {{ printf "%s@%s" "opendesk-system" ( .Values.global.mailDomain | default .Values.global.domain ) }}
DJANGO_EMAIL_HOST_PASSWORD: {{ .Values.secrets.postfix.opendeskSystemPassword | quote }}
DJANGO_EMAIL_USE_TLS: False
OIDC_RP_CLIENT_ID: "opendesk-notes"
OIDC_RP_CLIENT_SECRET: {{ .Values.secrets.keycloak.clientSecret.notes | quote }}
OIDC_OP_JWKS_ENDPOINT: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/certs"
OIDC_OP_AUTHORIZATION_ENDPOINT: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/auth"
OIDC_OP_TOKEN_ENDPOINT: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/token"
OIDC_OP_USER_ENDPOINT: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/userinfo"
OIDC_OP_LOGOUT_ENDPOINT: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/logout"
OIDC_RP_SIGN_ALGO: RS256
OIDC_RP_SCOPES: "openid opendesk-notes-scope"
USER_OIDC_FIELD_TO_SHORTNAME: "given_name"
USER_OIDC_FIELDS_TO_FULLNAME: "given_name,family_name"
USER_OIDC_ESSENTIAL_CLAIMS: "email"
OIDC_REDIRECT_ALLOWED_HOSTS: {{ printf "https://%s.%s/*" .Values.global.hosts.notes .Values.global.domain | quote }}
OIDC_AUTH_REQUEST_EXTRA_PARAMS: "{}"
OIDC_RENEW_ID_TOKEN: "False"
LOGIN_REDIRECT_URL: {{ printf "https://%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
LOGIN_REDIRECT_URL_FAILURE: {{ printf "https://%s.%s" .Values.global.hosts.nubus .Values.global.domain | quote }}
LOGOUT_REDIRECT_URL: {{ printf "https://%s.%s" .Values.global.hosts.nubus .Values.global.domain | quote }}
AI_BASE_URL: {{ .Values.ai.endpoint | quote }}
AI_API_KEY: {{ .Values.ai.apiKey | quote }}
AI_MODEL: {{ .Values.ai.model | quote }}
Y_PROVIDER_API_KEY: {{ .Values.secrets.notes.collaborationSecret | quote }}
Y_PROVIDER_API_BASE_URL: {{ printf "https://%s.%s/api/" .Values.global.hosts.notes .Values.global.domain | quote }}
COLLABORATION_API_URL: {{ printf "https://%s.%s/collaboration/api/" .Values.global.hosts.notes .Values.global.domain | quote }}
COLLABORATION_SERVER_ORIGIN: {{ printf "https://%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
COLLABORATION_SERVER_SECRET: {{ .Values.secrets.notes.collaborationSecret | quote }}
COLLABORATION_WS_URL: {{ printf "wss://%s.%s/collaboration/ws/" .Values.global.hosts.notes .Values.global.domain | quote }}
migrate:
command:
- "/bin/sh"
- "-c"
- |
python manage.py migrate --no-input
restartPolicy: Never
migrateJobAnnotations:
{{ .Values.annotations.notesBackend.migrateJob | toYaml | nindent 4 }}
createsuperuser:
command:
- "/bin/sh"
- "-c"
- |
python manage.py createsuperuser --email default.admin@{{ .Values.global.domain }} --password {{ .Values.secrets.notes.superuser }}
restartPolicy: Never
podAnnotations:
{{ .Values.annotations.notesBackend.pod | toYaml | nindent 4 }}
resources:
{{ .Values.resources.notesBackend | toYaml | nindent 4 }}
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- "ALL"
privileged: false
runAsUser: 1001
runAsGroup: 1001
seccompProfile:
type: "RuntimeDefault"
readOnlyRootFilesystem: true
runAsNonRoot: true
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.notesBackend.registry | quote }}
repository: {{ .Values.images.notesBackend.repository | quote }}
pullPolicy: "IfNotPresent"
tag: {{ .Values.images.notesBackend.tag | quote }}
ingress:
annotations:
"nginx.ingress.kubernetes.io/proxy-body-size": "{{ .Values.ingress.parameters.bodySize.notes }}"
"nginx.ingress.kubernetes.io/proxy-read-timeout": "{{ .Values.ingress.parameters.bodyTimeout.notes }}"
"nginx.ingress.kubernetes.io/proxy-send-timeout": "{{ .Values.ingress.parameters.bodyTimeout.notes }}"
{{- if .Values.annotations.notesBackend.ingress }}
{{ .Values.annotations.notesBackend.ingress | toYaml | nindent 6 }}
{{- end }}
ingressAdmin:
enabled: true
annotations:
{{ .Values.annotations.notesBackend.ingressAdmin | toYaml | nindent 6 }}
replicaCount: {{ .Values.replicas.notesBackend }}
containerSecurityContext:
seLinuxOptions:
{{ .Values.seLinuxOptions.notesBackend | toYaml | nindent 6 }}
configuration:
ai:
apiKey:
value: {{ .Values.ai.apiKey }}
baseUrl: {{ .Values.ai.endpoint }}
model: {{ .Values.ai.model | quote }}
aws:
endpointUrl: {{ printf "https://%s" (.Values.objectstores.notes.endpoint | default (printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain)) | quote }}
s3AccessKeyId:
value: {{ .Values.objectstores.notes.username }}
s3SecretAccessKey:
value: {{ .Values.objectstores.notes.secretKey | default .Values.secrets.minio.notesUser | quote }}
storageBucketName: {{ .Values.objectstores.notes.bucket }}
collaboration:
apiUrl: {{ printf "https://%s.%s/collaboration/api/" .Values.global.hosts.notes .Values.global.domain | quote }}
wsUrl: {{ printf "wss://%s.%s/collaboration/ws/" .Values.global.hosts.notes .Values.global.domain | quote }}
database:
host: {{ .Values.databases.notes.host | quote }}
name: {{ .Values.databases.notes.name | quote }}
password:
value: {{ .Values.databases.notes.password | default .Values.secrets.postgresql.notesUser | quote }}
port: {{ .Values.databases.notes.port | quote }}
user:
value: {{ .Values.databases.notes.username | quote }}
email:
brandName: "openDesk"
from: "{{ .Values.smtp.localpartNoReply }}@{{ .Values.global.domain }}"
host: "postfix"
port: "25"
logoImage: {{ printf "https://%s.%s/univention/portal/icons/entries/swp.notes.svg" .Values.global.hosts.nubus .Values.global.domain | quote }}
user:
value: {{ printf "%s@%s" "opendesk-system" ( .Values.global.mailDomain | default .Values.global.domain ) }}
password:
value: {{ .Values.secrets.postfix.opendeskSystemPassword | quote }}
oidc:
enabled: true
rpClientId:
value: "opendesk-notes"
rpClientSecret:
value: {{ .Values.secrets.keycloak.clientSecret.notes | quote }}
opJWKSEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/certs"
opAuthorizationEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/auth"
opTokenEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/token"
opUserEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/userinfo"
opLogoutEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/logout"
rpScopes: "openid opendesk-notes-scope"
loginRedirectUrl: {{ printf "https://%s.%s" .Values.global.hosts.notes .Values.global.domain | quote }}
loginRedirectUrlFailure: {{ printf "https://%s.%s" .Values.global.hosts.nubus .Values.global.domain | quote }}
logoutRedirectUrl: {{ printf "https://%s.%s" .Values.global.hosts.nubus .Values.global.domain | quote }}
redirectAllowedHosts: {{ printf "https://%s.%s/*" .Values.global.hosts.notes .Values.global.domain | quote }}
essentialClaims: "email"
fullnameFields: "given_name,family_name"
shortnameField: "given_name"
django:
secretKey:
value: {{ .Values.secrets.notes.djangoSecretKey }}
createSuperuser: true
superuserEmail:
value: {{ printf "default.admin@%s" .Values.global.domain | quote }}
superuserPassword:
value: {{ .Values.secrets.notes.superuser }}
frontendTheme: "openDesk"
redisUrl:
value: "redis://default:{{ .Values.cache.notes.password | default .Values.secrets.redis.password }}@{{ .Values.cache.notes.host }}:{{ .Values.cache.notes.port }}/7"
extraEnvVars:
- name: "FRONTEND_HOMEPAGE_FEATURE_ENABLED"
value: "False"
- name: "FRONTEND_FOOTER_FEATURE_ENABLED"
value: "False"
podAnnotations:
{{ .Values.annotations.notesBackend.pod | toYaml | nindent 4 }}
podAnnotationsCreateUser:
{{ .Values.annotations.notesBackend.createUserJob | toYaml | nindent 4 }}
podAnnotationsMigrate:
{{ .Values.annotations.notesBackend.migrateJob | toYaml | nindent 4 }}
resources:
{{ .Values.resources.notesBackend | toYaml | nindent 4 }}
service:
annotations:
{{ .Values.annotations.notesBackend.service | toYaml | nindent 6 }}
{{- if .Values.certificate.selfSigned }}
extraVolumes:
- name: "trusted-cert-secret-volume"
secret:
secretName: "opendesk-certificates-ca-tls"
items:
- key: "ca.crt"
path: "ca-certificates.crt"
extraVolumeMounts:
- name: "trusted-cert-secret-volume"
mountPath: "/usr/local/lib/python3.12/site-packages/certifi/cacert.pem"
subPath: "ca-certificates.crt"
{{- end }}
frontend:
image:
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.notesFrontend.registry | quote }}
repository: {{ .Values.images.notesFrontend.repository | quote }}
pullPolicy: "IfNotPresent"
tag: {{ .Values.images.notesFrontend.tag | quote }}
ingressMedia:
enabled: true
annotations:
{{ .Values.annotations.notesFrontend.ingressMedia | toYaml | nindent 6 }}
extraEnvVars:
- name: "ICS_BASE_URL"
value: {{ printf "https://%s.%s" .Values.global.hosts.intercomService .Values.global.domain | quote }}
- name: "PORTAL_BASE_URL"
value: {{ printf "https://%s.%s" .Values.global.hosts.nubus .Values.global.domain | quote }}
configuration:
objectStoreHost: {{ printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain | quote }}
resources:
{{ .Values.resources.notesFrontend | toYaml | nindent 4 }}
containerSecurityContext:
seLinuxOptions:
{{ .Values.seLinuxOptions.notesFrontend | toYaml | nindent 6 }}
podAnnotations:
{{ .Values.annotations.notesFrontend.pod | toYaml | nindent 4 }}
service:
annotations:
{{ .Values.annotations.notesFrontend.service | toYaml | nindent 6 }}
serviceMedia:
annotations:
{{ .Values.annotations.notesFrontend.service | toYaml | nindent 6 }}
y-provider:
image:
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.notesYProvider.registry | quote }}
repository: {{ .Values.images.notesYProvider.repository | quote }}
pullPolicy: "IfNotPresent"
tag: {{ .Values.images.notesYProvider.tag }}
replicaCount: 1
debug: true
{{- if .Values.certificate.selfSigned }}
extraEnvVars:
- name: "NODE_EXTRA_CA_CERTS"
value: "/etc/ssl/certs/cacert.pem"
extraVolumes:
- name: "trusted-cert-secret-volume"
secret:
secretName: "opendesk-certificates-ca-tls"
items:
- key: "ca.crt"
path: "ca-certificates.crt"
extraVolumeMounts:
- name: "trusted-cert-secret-volume"
mountPath: "/etc/ssl/certs/cacert.pem"
subPath: "ca-certificates.crt"
{{- end }}
containerSecurityContext:
seLinuxOptions:
{{ .Values.seLinuxOptions.notesBackend | toYaml | nindent 6 }}
ingressCollaborationApi:
annotations:
{{ .Values.annotations.notesYProvider.ingressCollaborationAPI | toYaml | nindent 6 }}
ingressCollaborationWs:
annotations:
{{ .Values.annotations.notesYProvider.ingressCollaborationWS | toYaml | nindent 6 }}
podAnnotations:
{{ .Values.annotations.notesYProvider.pod | toYaml | nindent 4 }}
service:
annotations:
{{ .Values.annotations.notesYProvider.service | toYaml | nindent 6 }}
...

View File

@@ -10,7 +10,7 @@ repositories:
password: {{ env "OD_PRIVATE_REGISTRY_PASSWORD" | quote }}
oci: true
url:
"{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.nubus.registry }}/{{ .Values.charts.nubus.repository }}"
"{{ coalesce .Values.repositories.helm.registryOpencodeDe .Values.global.helmRegistry | default .Values.charts.nubus.registry }}/{{ .Values.charts.nubus.repository }}"
# Intercom Service
# Source: https://gitlab.souvap-univention.de/souvap/tooling/charts/intercom-service
- name: "intercom-service-repo"

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
additionalAnnotations:
{{ .Values.annotations.nubusIntercomService.additional | toYaml | nindent 2 }}
@@ -53,31 +51,36 @@ global:
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
ics:
secret: {{ .Values.secrets.intercom.secret | quote }}
session:
secret: {{ .Values.secrets.intercom.secret | quote }}
issuerBaseUrl: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}"
originRegex: "{{ .Values.global.domain }}"
enableSessionCookie: true
userUniqueMapper: {{ if .Values.functional.chat.matrix.profile.useImmutableIdentifierForLocalpart }}"opendesk_useruuid"{{ else }}"opendesk_username"{{ end }}
usernameClaim: "opendesk_username"
logLevel: {{ if .Values.debug.enabled }}"DEBUG"{{ else }}"INFO"{{ end }}
keycloak:
realm: {{ .Values.platform.realm | quote }}
default:
domain: {{ .Values.global.domain | quote }}
oidc:
id: "opendesk-intercom"
secret: {{ .Values.secrets.keycloak.clientSecret.intercom | quote }}
clientSecret: {{ .Values.secrets.keycloak.clientSecret.intercom | quote }}
matrix:
asSecret: {{ .Values.secrets.intercom.synapseAsToken | quote }}
subdomain: {{ .Values.global.hosts.synapse | quote }}
serverName: "{{ .Values.global.hosts.synapse }}.{{ .Values.global.domain }}"
auth:
applicationServiceSecret: {{ .Values.secrets.intercom.synapseAsToken | quote }}
nordeck:
subdomain: {{ .Values.global.hosts.matrixNeoDateFixBot | quote }}
portal:
apiKey: {{ .Values.secrets.centralnavigation.apiKey | quote }}
auth:
sharedSecret: {{ .Values.secrets.centralnavigation.apiKey | quote }}
redis:
host: {{ .Values.cache.intercomService.host | quote }}
port: {{ .Values.cache.intercomService.port }}
password: {{ .Values.cache.intercomService.password | default .Values.secrets.redis.password | quote }}
auth:
password: {{ .Values.cache.intercomService.password | default .Values.secrets.redis.password | quote }}
openxchange:
oci: true
url: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
@@ -118,21 +121,20 @@ provisioning:
# client's claims this way.
enabled: false
config:
nubusBaseUrl: "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}"
clientBaseUrl: "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}"
keycloak:
url: "http://ums-keycloak:8080/realms/{{ .Values.platform.realm }}/"
username: "kcadmin"
realm: {{ .Values.platform.realm | quote }}
connection:
host: "{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}"
baseUrl: "http://ums-keycloak:8080"
credentialSecret:
name: "ums-opendesk-keycloak-credentials"
protocol: "http"
host: "ums-keycloak"
port: 8080
auth:
username: "kcadmin"
existingSecret:
name: "ums-opendesk-keycloak-credentials"
keyMapping:
password: "admin_password"
key: "admin_password"
ics_client:
clientSecret: {{ .Values.secrets.keycloak.clientSecret.intercom | quote }}
credentialSecret:
key: "ics_secret"
image:
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.nubusWaitForDependency.registry | quote }}

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
global:
imagePullSecrets:

View File

@@ -0,0 +1,233 @@
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
#
# This file is currently optional for customizing purposes only. It will be a mandatory part of Nubus in a later release.
#
nubusGuardian:
authorizationApi:
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seccompProfile:
type: RuntimeDefault
seLinuxOptions:
{{ .Values.seLinuxOptions.umsGuardianAuthorizationApi | toYaml | nindent 8 }}
image:
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.nubusGuardianAuthorizationApi.registry | quote }}
repository: {{ .Values.images.nubusGuardianAuthorizationApi.repository }}
tag: {{ .Values.images.nubusGuardianAuthorizationApi.tag }}
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
imagePullSecrets:
{{ .Values.global.imagePullSecrets | toYaml | nindent 6 }}
podAnnotations:
intents.otterize.com/service-name: "ums-guardian-authorization-api"
{{- with .Values.annotations.nubusGuardian.authorizationApiPod }}
{{ . | toYaml | nindent 6 }}
{{- end }}
podSecurityContext:
fsGroup: 1000
fsGroupChangePolicy: "Always"
replicaCount: {{ .Values.replicas.umsGuardianAuthorizationApi }}
resources:
{{ .Values.resources.umsGuardianAuthorizationApi | toYaml | nindent 6 }}
global:
podAnnotations:
{{ .Values.annotations.nubusGuardian.globalPod | toYaml | nindent 6 }}
ingress:
annotations:
{{ .Values.annotations.nubusGuardian.ingressIngress | toYaml | nindent 6 }}
certManager:
enabled: false
tls:
enabled: {{ .Values.ingress.tls.enabled }}
secretName: {{ .Values.ingress.tls.secretName | quote }}
items:
- name: management-ui
host: ""
# -- Define the Ingress paths.
paths:
- path: /univention/guardian/management-ui
pathType: Prefix
backend:
service:
name: guardian-management-ui
port:
number: 80
ingressClassName: ""
annotations:
{{ .Values.annotations.nubusGuardian.ingressManagementUi | toYaml | nindent 10 }}
tls:
# enabled: true
secretName: ""
- name: management-api
host: ""
paths:
- path: /guardian/management
pathType: Prefix
backend:
service:
name: guardian-management-api
port:
number: 80
ingressClassName: ""
annotations:
{{ .Values.annotations.nubusGuardian.ingressManagementApi | toYaml | nindent 10 }}
tls:
# enabled: true
secretName: ""
- name: authorization-api
host: ""
paths:
- path: /guardian/authorization
pathType: Prefix
backend:
service:
name: guardian-authorization-api
port:
number: 80
ingressClassName: ""
annotations:
{{ .Values.annotations.nubusGuardian.ingressAuthorizationApi | toYaml | nindent 10 }}
tls:
# enabled: true
secretName: ""
managementApi:
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seccompProfile:
type: RuntimeDefault
seLinuxOptions:
{{ .Values.seLinuxOptions.umsGuardianManagementApi | toYaml | nindent 8 }}
image:
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.nubusGuardianManagementApi.registry | quote }}
repository: {{ .Values.images.nubusGuardianManagementApi.repository }}
tag: {{ .Values.images.nubusGuardianManagementApi.tag }}
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
imagePullSecrets:
{{ .Values.global.imagePullSecrets | toYaml | nindent 6 }}
podAnnotations:
intents.otterize.com/service-name: "ums-guardian-management-api"
{{- with .Values.annotations.nubusGuardian.managementApiPod }}
{{ . | toYaml | nindent 6 }}
{{- end }}
podSecurityContext:
fsGroup: 1000
fsGroupChangePolicy: "Always"
replicaCount: {{ .Values.replicas.umsGuardianManagementApi }}
resources:
{{ .Values.resources.umsGuardianManagementApi | toYaml | nindent 6 }}
managementUi:
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seccompProfile:
type: RuntimeDefault
seLinuxOptions:
{{ .Values.seLinuxOptions.umsGuardianManagementUi | toYaml | nindent 8 }}
image:
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.nubusGuardianManagementUi.registry | quote }}
repository: {{ .Values.images.nubusGuardianManagementUi.repository }}
tag: {{ .Values.images.nubusGuardianManagementUi.tag }}
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
imagePullSecrets:
{{ .Values.global.imagePullSecrets | toYaml | nindent 6 }}
podAnnotations:
intents.otterize.com/service-name: "ums-guardian-management-ui"
{{- with .Values.annotations.nubusGuardian.managementUiPod }}
{{ . | toYaml | nindent 6 }}
{{- end }}
replicaCount: {{ .Values.replicas.umsGuardianManagementUi }}
resources:
{{ .Values.resources.umsGuardianManagementUi | toYaml | nindent 6 }}
openPolicyAgent:
containerSecurityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsGroup: 1000
runAsNonRoot: true
runAsUser: 1000
seccompProfile:
type: RuntimeDefault
seLinuxOptions:
{{ .Values.seLinuxOptions.umsGuardianOpenPolicyAgent | toYaml | nindent 8 }}
image:
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.nubusOpenPolicyAgent.registry | quote }}
repository: {{ .Values.images.nubusOpenPolicyAgent.repository }}
tag: {{ .Values.images.nubusOpenPolicyAgent.tag }}
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
imagePullSecrets:
{{ .Values.global.imagePullSecrets | toYaml | nindent 6 }}
podSecurityContext:
fsGroup: 1000
fsGroupChangePolicy: "Always"
podAnnotations:
intents.otterize.com/service-name: "ums-ums-open-policy-agent"
replicaCount: {{ .Values.replicas.umsGuardianOpenPolicyAgent }}
resources:
{{ .Values.resources.umsOpenPolicyAgent | toYaml | nindent 6 }}
postgresql:
connection:
host: {{ .Values.databases.umsGuardianManagementApi.host | quote }}
port: {{ .Values.databases.umsGuardianManagementApi.port | quote }}
auth:
username: {{ .Values.databases.umsGuardianManagementApi.username | quote }}
database: {{ .Values.databases.umsGuardianManagementApi.name | quote }}
existingSecret:
name: "ums-guardian-postgresql-opendesk-credentials"
keyMapping:
password: "guardianDatabasePassword"
provisioning:
enabled: false
config:
nubusBaseUrl: {{ printf "https://%s.%s" .Values.global.hosts.nubus .Values.global.domain }}
keycloak:
credentialSecret:
name: "ums-opendesk-keycloak-credentials"
key: "admin_password"
realm: {{ .Values.platform.realm | quote }}
username: "kcadmin"
keycloak:
auth:
existingSecret:
name: "ums-opendesk-guardian-client-secret"
keyMapping:
password: "managementApiClientSecret"
connection:
host: "{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}"
baseUrl: "http://ums-keycloak:8080"
image:
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.nubusGuardianProvisioning.registry | quote }}
repository: {{ .Values.images.nubusGuardianProvisioning.repository }}
tag: {{ .Values.images.nubusGuardianProvisioning.tag }}
imagePullPolicy: {{ .Values.global.imagePullPolicy | quote }}
serviceAccount:
annotations:
{{ .Values.annotations.nubusGuardian.serviceAccount | toYaml | nindent 6 }}
---

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
global:
domain: "{{ .Values.global.domain }}"
@@ -529,7 +527,10 @@ config:
publicClient: false
authorizationServicesEnabled: false
attributes:
use.refresh.tokens: true
backchannel.logout.session.required: true
standard.token.exchange.enabled: true
standard.token.exchange.enableRefreshRequestedTokenType: "SAME_SESSION"
backchannel.logout.revoke.offline.tokens: true
backchannel.logout.url: "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}/backchannel-logout"
protocolMappers:

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
image:
registry: {{ coalesce .Values.repositories.image.registryOpencodeDeEnterprise .Values.global.imageRegistry .Values.images.dovecot.registry | quote }}
@@ -10,7 +8,7 @@ image:
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
imageInitCassandra:
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.cassandra.registry | quote }}
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.cassandra.registry | quote }}
repository: {{ .Values.images.cassandra.repository | quote }}
tag: {{ .Values.images.cassandra.tag | quote }}
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
@@ -26,23 +24,39 @@ dovecot:
username: {{ .Values.databases.dovecotDictmap.username | quote }}
password:
value: {{ .Values.secrets.cassandra.dovecotDictmapUser | quote }}
existingSecret:
name: {{ .Values.externalSecrets.dovecot.dictmapUser.name | quote }}
key: {{ .Values.externalSecrets.dovecot.dictmapUser.key | quote }}
keyspace: {{ .Values.databases.dovecotDictmap.name | quote }}
sharedMailboxes:
enabled: false
enabled: true
host: {{ .Values.databases.dovecotACL.host | quote }}
port: {{ .Values.databases.dovecotACL.port }}
username: {{ .Values.databases.dovecotACL.username | quote }}
password:
value: {{ .Values.secrets.cassandra.dovecotACLUser | quote }}
existingSecret:
name: {{ .Values.externalSecrets.dovecot.aclUser.name | quote }}
key: {{ .Values.externalSecrets.dovecot.aclUser.key | quote }}
keyspace: {{ .Values.databases.dovecotACL.name | quote }}
objectStorage:
bucket: {{ .Values.objectstores.dovecot.bucket | quote }}
encryption:
privateKey:
value: {{ env "DOVECOT_CRYPT_PRIVATE_KEY" | quote }}
value: {{ requiredEnv "DOVECOT_CRYPT_PRIVATE_KEY" | quote }}
existingSecret:
name: {{ .Values.externalSecrets.dovecot.objectStorage.encryption.privateKey.name | quote }}
key: {{ .Values.externalSecrets.dovecot.objectStorage.encryption.privateKey.key | quote }}
publicKey:
value: {{ env "DOVECOT_CRYPT_PUBLIC_KEY" | quote }}
value: {{ requiredEnv "DOVECOT_CRYPT_PUBLIC_KEY" | quote }}
existingSecret:
name: {{ .Values.externalSecrets.dovecot.objectStorage.encryption.publicKey.name | quote }}
key: {{ .Values.externalSecrets.dovecot.objectStorage.encryption.publicKey.key | quote }}
fqdn: {{ .Values.objectstores.dovecot.endpoint | default (printf "%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
username: {{ .Values.objectstores.dovecot.username | quote }}
password:
value: {{ .Values.secrets.minio.dovecotUser | quote }}
value: {{ .Values.objectstores.dovecot.secretKey | default .Values.secrets.minio.dovecotUser | quote }}
existingSecret:
name: {{ .Values.externalSecrets.objectstores.dovecotUser.name | quote }}
key: {{ .Values.externalSecrets.objectstores.dovecotUser.key | quote }}
...

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
commonAnnotations:
{{ .Values.annotations.openxchangeDovecot.common | toYaml | nindent 2 }}
@@ -27,10 +25,16 @@ dovecot:
defaultMailDomain: {{ .Values.global.mailDomain | default .Values.global.domain | quote }}
password:
value: {{ .Values.secrets.dovecot.doveadm | quote }}
existingSecret:
name: {{ .Values.externalSecrets.dovecot.doveadm.name | quote }}
key: {{ .Values.externalSecrets.dovecot.doveadm.key | quote }}
migration:
enabled: {{ .Values.functional.migration.oxAppSuite.enabled }}
masterPassword:
value: {{ .Values.secrets.oxAppSuite.migrationsMasterPassword | quote }}
existingSecret:
name: {{ .Values.externalSecrets.oxAppSuite.migrationsMasterPassword.name | quote }}
key: {{ .Values.externalSecrets.oxAppSuite.migrationsMasterPassword.key | quote }}
ldap:
enabled: true
host: {{ .Values.ldap.host | quote }}
@@ -39,12 +43,18 @@ dovecot:
dn: "uid=ldapsearch_dovecot,cn=users,{{ .Values.ldap.baseDn }}"
password:
value: {{ .Values.secrets.nubus.ldapSearch.dovecot | quote }}
existingSecret:
name: {{ .Values.externalSecrets.nubus.ldapSearch.dovecot.name | quote }}
key: {{ .Values.externalSecrets.nubus.ldapSearch.dovecot.key | quote }}
oidc:
enabled: true
clientID:
value: "opendesk-dovecot"
clientSecret:
value: {{ .Values.secrets.keycloak.clientSecret.dovecot | quote }}
existingSecret:
name: {{ .Values.externalSecrets.keycloak.clientSecret.dovecot.name | quote }}
key: {{ .Values.externalSecrets.keycloak.clientSecret.dovecot.key | quote }}
introspectionHost: {{ printf "%s.%s" .Values.global.hosts.keycloak .Values.global.domain | quote }}
introspectionPath: "/realms/{{ .Values.platform.realm }}/protocol/openid-connect/token/introspect"
usernameAttribute: "opendesk_username"
@@ -83,6 +93,10 @@ containerSecurityContext:
seLinuxOptions:
{{ .Values.seLinuxOptions.dovecot | toYaml | nindent 4 }}
{{- if .Values.debug.enabled }}
debug: true
{{- end }}
{{- if .Values.certificate.selfSigned }}
extraVolumes:
- name: "trusted-cert-secret-volume"

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
additionalAnnotations:
argocd.argoproj.io/hook: "Sync"
@@ -42,4 +40,8 @@ serviceAccount:
annotations:
{{ .Values.annotations.openxchangeBootstrap.serviceAccount | toYaml | nindent 4 }}
filestore:
# identifier must match identifier in /opt/open-xchange/etc/filestore-s3.properties
identifier: "ox-filestore-s3"
size: {{ .Values.objectstores.openxchange.maxSize }}
...

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
appsuite:
core-mw:
@@ -39,6 +37,7 @@ appsuite:
uiSettings:
# Enterprise contact picker
io.ox/core//features/enterprisePicker/enabled: "true"
io.ox/contacts//search/fields: 'email1,email2'
yamlFiles:
contacts-provider-ldap.yml:
@@ -286,6 +285,7 @@ appsuite:
givenname: "givenName"
surname: "sn"
email1: "mailPrimaryAddress"
email2: "mailAlternativeAddress"
department: "oxDepartment,department"
company: "oxCompany,o"
branches: "oxBranches"
@@ -297,8 +297,6 @@ appsuite:
city_home: "oxCityHome"
commercial_register: "oxCommercialRegister"
country_home: "oxCountryHome"
email2: "oxEmail2"
email3: "oxEmail3"
employeetype: "employeeType"
fax_business: "oxFaxBusiness,facsimileTelehoneNumber"
fax_home: "oxFaxHome"

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
appsuite:
plugins-ui:

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
global:
hostname: "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
@@ -108,8 +106,9 @@ appsuite:
hosts:
- "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
dav:
enabled: {{ .Values.functional.groupware.davSupport.enabled }}
hosts:
- "{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
- "{{ .Values.global.hosts.openxchangeDav }}.{{ .Values.global.domain }}"
routes:
appsuite-base:
annotations:
@@ -121,6 +120,9 @@ appsuite:
annotations:
{{ .Values.annotations.openxchangeAppsuiteIngress.trailslash | toYaml | nindent 10 }}
rest-routes-admin:
{{- if .Values.technical.oxAppSuite.provisioning.dedicatedCoreMwPod }}
enabled: false
{{- end }}
annotations:
{{ .Values.annotations.openxchangeAppsuiteIngress.restRoutesAdmin | toYaml | nindent 10 }}
rest-routes-advertisement:
@@ -215,7 +217,79 @@ appsuite:
host: "all"
productName: {{ .Values.theme.texts.productName | quote }}
oidcLogin: true
oidcPath: "/oidc"
oidcPath: "/oidc/"
defaultScaling:
nodes:
default:
roles:
- http-api
- sync
- admin
- businessmobility
- request-analyzer
roles:
admin:
values:
features:
status:
admin: "enabled"
packages:
status:
open-xchange-admin-contextrestore: "enabled"
open-xchange-admin-oauth-provider: "enabled"
open-xchange-admin-soap: "enabled"
open-xchange-admin-soap-usercopy: "enabled"
open-xchange-admin-user-copy: "enabled"
{{- if .Values.functional.migration.oxAppSuite.enabled }}
migration:
values:
packages:
status:
open-xchange-oidc: "disabled"
open-xchange-authentication-masterpassword: "enabled"
properties:
com.openexchange.calendar.allowOrganizerPartStatChanges: "true"
propertiesFiles:
/opt/open-xchange/etc/masterpassword-authentication.properties:
com.openexchange.authentication.masterpassword.password: {{ .Values.secrets.oxAppSuite.migrationsMasterPassword | quote }}
services:
- type: ClusterIP
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
{{- end }}
scaling:
nodes:
{{- if .Values.functional.migration.oxAppSuite.enabled }}
migration:
replicas: 1
roles:
- "migration"
{{- end }}
{{- if .Values.technical.oxAppSuite.provisioning.dedicatedCoreMwPod }}
groupware:
replicas: {{ .Values.replicas.openxchangeCoreMW }}
roles:
- "http-api"
- "sync"
- "businessmobility"
- "request-analyzer"
admin:
replicas: 1
roles:
- "admin"
{{- else }}
groupware:
replicas: {{ .Values.replicas.openxchangeCoreMW }}
roles:
- "http-api"
- "sync"
- "businessmobility"
- "request-analyzer"
- "admin"
{{- end }}
masterAdmin: "admin"
masterPassword: {{ .Values.secrets.oxAppSuite.adminPassword | quote }}
hzGroupName: "hzgroup"
@@ -237,6 +311,10 @@ appsuite:
# admin: enabled
documents: "disabled"
guard: "enabled"
# disabling admin role breaks webmail
# {{- if .Values.technical.oxAppSuite.provisioning.dedicatedCoreMwPod }}
# admin: "disabled"
# {{- end }}
gotenberg:
enabled: true
imagePullSecrets:
@@ -276,24 +354,34 @@ appsuite:
chown open-xchange:open-xchange /opt/open-xchange/guard-files
packages:
status:
{{- if .Values.functional.migration.oxAppSuite.enabled }}
open-xchange-oidc: "disabled"
open-xchange-authentication-oauth: "disabled"
open-xchange-authentication-masterpassword: "enabled"
open-xchange-authentication-database: "disabled"
open-xchange-authentication-ldap: "disabled"
{{- else }}
open-xchange-oidc: "enabled"
open-xchange-authentication-oauth: "enabled"
open-xchange-authentication-masterpassword: "disabled"
open-xchange-authentication-oauth: "disabled"
open-xchange-authentication-database: "disabled"
open-xchange-authentication-ldap: "disabled"
{{- end }}
# OX Documents (office-web) is not used in openDesk
open-xchange-documents-backend: "disabled"
open-xchange-documents-monitoring: "disabled"
open-xchange-documents-templates: "disabled"
# Required for the central contacts integration
open-xchange-oauth-provider: "enabled"
# Needed to set com.openexchange.hostname
open-xchange-hostname-config-cascade: "enabled"
# Enable s3 storage
open-xchange-filestore-s3: "enabled"
{{- if .Values.technical.oxAppSuite.provisioning.dedicatedCoreMwPod }}
# disabling admin feature breaks webmail, so only sub packages are disabled:
open-xchange-admin-contextrestore: "disabled"
open-xchange-admin-oauth-provider: "disabled"
open-xchange-admin-soap: "disabled"
open-xchange-admin-soap-usercopy: "disabled"
open-xchange-admin-user-copy: "disabled"
{{- end }}
{{- if .Values.functional.groupware.davSupport.enabled }}
open-xchange-authentication-application-storage-rdb: "enabled"
{{- end }}
properties:
com.openexchange.hostname: {{ printf "%s.%s" .Values.global.hosts.openxchange .Values.global.domain }}
com.openexchange.UIWebPath: "/appsuite/"
com.openexchange.showAdmin: "false"
# PDF Export
@@ -323,6 +411,8 @@ appsuite:
com.openexchange.oidc.startDefaultBackend: "true"
com.openexchange.oidc.userLookupClaim: "opendesk_username"
com.openexchange.oidc.userLookupNamePart: "full"
com.openexchange.oidc.enablePasswordGrant: "true"
com.openexchange.oidc.passwordGrantUserNamePart: "local-part"
# OAUTH
com.openexchange.oauth.provider.enabled: "true"
com.openexchange.oauth.provider.allowedIssuer: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}"
@@ -332,18 +422,24 @@ appsuite:
com.openexchange.oauth.provider.mode: "expect_jwt"
com.openexchange.oauth.provider.userLookupNamePart: "full"
com.openexchange.oauth.provider.userLookupClaim: "opendesk_username"
com.openexchange.authentication.oauth.clientId: "opendesk-oxappsuite"
com.openexchange.authentication.oauth.tokenEndpoint: "https://{{ .Values.global.hosts.keycloak }}.{{ .Values.global.domain }}/realms/{{ .Values.platform.realm }}/protocol/openid-connect/token"
com.openexchange.authentication.oauth.clientSecret: {{ .Values.secrets.keycloak.clientSecret.as8oidc | quote }}
# MAIL
com.openexchange.mail.authType: "xoauth2"
com.openexchange.mail.loginSource: "mail"
com.openexchange.mail.loginSource: "name"
com.openexchange.mail.mailServer: "dovecot"
com.openexchange.mail.mailServerSource: "global"
com.openexchange.mail.transport.authType: "xoauth2"
com.openexchange.mail.transportServer: "postfix-ox"
com.openexchange.mail.transportServerSource: "global"
# Requirements for OX-Connector
# Mail Login Resolver
com.openexchange.mail.login.resolver.enabled: "true"
com.openexchange.mail.login.resolver.ldap.enabled: "true"
com.openexchange.mail.login.resolver.ldap.clientId: "contactsLdapClient"
com.openexchange.mail.login.resolver.ldap.mailLoginSearchFilter: "(entryUUID=[mailLogin])"
com.openexchange.mail.login.resolver.ldap.userNameAttribute: "uid"
com.openexchange.mail.login.resolver.ldap.contextNameAttribute: "oxContextIDNum"
com.openexchange.mail.login.resolver.ldap.entitySearchFilter: "(&(oxContextIDNum=[cid])(uid=[uname]))"
com.openexchange.mail.login.resolver.ldap.mailLoginAttribute: "entryUUID"
# Requirements for OX Connector
com.openexchange.user.enforceUniqueDisplayName: "false"
com.openexchange.folderstorage.database.preferDisplayName: "false"
# Mailfilter
@@ -397,7 +493,16 @@ appsuite:
# Usage (in browser console after login):
# http = (await import('./io.ox/core/http.js')).default
# await http.POST({ module: 'oxguard/smime', params: { action: 'test' } })
com.openexchange.smime.test: "true"
com.openexchange.smime.test: {{ .Values.debug.enabled | quote }}
# DAV
{{- if .Values.functional.groupware.davSupport.enabled }}
com.openexchange.caldav.enabled: "true"
com.openexchange.caldav.url: {{ printf "https://%s.%s/caldav/[folderId]" .Values.global.hosts.openxchangeDav .Values.global.domain }}
com.openexchange.carddav.enabled: "true"
com.openexchange.carddav.url: {{ printf "https://%s.%s/carddav/[folderId]" .Values.global.hosts.openxchangeDav .Values.global.domain }}
com.openexchange.client.onboarding.caldav.url: {{ printf "https://%s.%s/" .Values.global.hosts.openxchangeDav .Values.global.domain }}
com.openexchange.client.onboarding.carddav.url: {{ printf "https://%s.%s/" .Values.global.hosts.openxchangeDav .Values.global.domain }}
{{- end }}
# Other
com.openexchange.secret.secretSource: "\"<user-id> + '@' + <context-id> + '/' + <random>\""
{{- if .Values.certificate.selfSigned }}
@@ -407,6 +512,12 @@ appsuite:
com.openexchange.net.ssl.custom.truststore.path: "/etc/ssl/certs/truststore.jks"
com.openexchange.net.ssl.custom.truststore.password: {{ .Values.secrets.certificates.password | quote }}
{{- end }}
{{- if .Values.functional.groupware.davSupport.enabled }}
com.openexchange.authentication.application.appTypes: "caldav,carddav"
com.openexchange.authentication.application.enabled: "true"
com.openexchange.authentication.application.storage.rdb.loginNameSource: "mail"
com.openexchange.authentication.application.storage.rdb.contextLookupNamePart: "full"
{{- end }}
{{- if .Values.certificate.selfSigned }}
extraEnv:
- name: "JAVA_OPTS_APPEND"
@@ -430,10 +541,6 @@ appsuite:
com.openexchange.share.cryptKey: {{ .Values.secrets.oxAppSuite.shareCryptKey | quote }}
com.openexchange.conference.element.authToken: {{ .Values.secrets.oxAppSuite.synapseAsToken | quote }}
propertiesFiles:
{{- if .Values.functional.migration.oxAppSuite.enabled }}
/opt/open-xchange/etc/masterpassword-authentication.properties:
com.openexchange.authentication.masterpassword.password: {{ .Values.secrets.oxAppSuite.migrationsMasterPassword | quote }}
{{- end }}
/opt/open-xchange/etc/AdminDaemon.properties:
MASTER_ACCOUNT_OVERRIDE: "true"
/opt/open-xchange/etc/AdminUser.properties:
@@ -459,6 +566,11 @@ appsuite:
com.openexchange.antivirus.port: "1344"
{{- end }}
com.openexchange.antivirus.maxFileSize: "1024"
/opt/open-xchange/etc/filestore-s3.properties:
com.openexchange.filestore.s3.ox-filestore-s3.endpoint: {{ .Values.objectstores.openxchange.endpoint | default (printf "https://%s.%s" .Values.global.hosts.minioApi .Values.global.domain) | quote }}
com.openexchange.filestore.s3.ox-filestore-s3.bucketName: {{ .Values.objectstores.openxchange.bucket | quote }}
com.openexchange.filestore.s3.ox-filestore-s3.accessKey: {{ .Values.objectstores.openxchange.username | quote }}
com.openexchange.filestore.s3.ox-filestore-s3.secretKey: {{ .Values.objectstores.openxchange.secretKey | default .Values.secrets.minio.openxchangeUser | quote }}
uiSettings:
io.ox.nextcloud//server: "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}/fs/"
io.ox.public-sector//ics/url: "https://{{ .Values.global.hosts.intercomService }}.{{ .Values.global.domain }}/"
@@ -538,6 +650,20 @@ appsuite:
initContainer:
resources:
{{ .Values.resources.openxchangeCoreMW | toYaml | nindent 8 }}
{{- if .Values.functional.groupware.davSupport.enabled }}
yamlFiles:
app-password-apps.yml:
caldav:
displayName_t10e: "Calendar Client (CalDAV)"
restrictedScopes: [dav,read_caldav,write_caldav]
requiredCapabilities: [caldav]
sortOrder: 30
carddav:
displayName_t10e: "Addressbook Client (CardDAV)"
restrictedScopes: [dav,read_carddav,write_carddav]
requiredCapabilities: [carddav]
sortOrder: 40
{{- end }}
core-ui:
enabled: true
@@ -627,6 +753,10 @@ appsuite:
cache:
remoteCache:
enabled: false
imagePullSecrets:
{{- range .Values.global.imagePullSecrets }}
- name: {{ . | quote }}
{{- end }}
image:
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.openxchangeDocumentConverter.registry | quote }}
repository: {{ .Values.images.openxchangeDocumentConverter.repository | quote }}
@@ -713,6 +843,10 @@ appsuite:
adminPassword: {{ .Values.secrets.oxAppSuite.adminPassword | quote }}
basicAuthLogin: "oxlogin"
basicAuthPassword: {{ .Values.secrets.oxAppSuite.basicAuthPassword | quote }}
imagePullSecrets:
{{- range .Values.global.imagePullSecrets }}
- name: {{ . | quote }}
{{- end }}
image:
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.openxchangeImageConverter.registry | quote }}
repository: {{ .Values.images.openxchangeImageConverter.repository | quote }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
{{- if .Values.certificate.selfSigned }}
extraVolumes:
@@ -51,7 +49,7 @@ oxConnector:
oxMasterAdmin: "admin"
oxMasterPassword: {{ .Values.secrets.oxAppSuite.adminPassword | quote }}
oxSmtpServer: "smtp://127.0.0.1:587"
oxSoapServer: "https://{{ .Values.global.hosts.openxchange }}.{{ .Values.global.domain }}"
oxSoapServer: "http://open-xchange-core-mw-admin"
provisioningApi:
connection:
@@ -67,7 +65,7 @@ resourcesWaitForDependency:
persistence:
size: {{ .Values.persistence.storages.oxConnector.size | quote }}
storageClass: {{ coalesce .Values.persistence.storages.oxConnector.storageClassName .Values.persistence.storageClassNames.RWO | quote }}
#storageClass: {{ coalesce .Values.persistence.storages.oxConnector.storageClassName .Values.persistence.storageClassNames.RWO | quote }}
podAnnotations:
{{ .Values.annotations.nubusOxConnector.pod | toYaml | nindent 2 }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
certificate:
secretName: {{ .Values.ingress.tls.secretName | quote }}
@@ -48,15 +46,31 @@ postfix:
hostname: "postfix"
inetProtocols: "ipv4"
milterDefaultAction: "tempfail"
overrides:
- fileName: "sasl_passwd.map"
content:
- {{ printf "%s %s:%s" .Values.smtp.host .Values.smtp.username .Values.smtp.password | quote }}
{{- if .Values.apps.dkimpy.enabled }}
dkimpyHost: "opendesk-dkimpy-milter.{{ .Release.Namespace }}.svc.{{.Values.cluster.networking.domain }}:8892"
{{- end }}
minTLSVersion: "TLSv1.3"
smtpdTLSMandatoryCiphers: "high"
rspamdHost: ""
relayHost: {{ if .Values.smtp.host }}{{ printf "[%s]:%d" .Values.smtp.host .Values.smtp.port | quote }}{{ else }}""{{ end }}
{{- if .Values.smtp.host }}
relayHost:
enabled: true
host: {{ .Values.smtp.host }}
port: {{ .Values.smtp.port }}
authentication:
username:
value: {{ .Values.smtp.username }}
existingSecret:
name: {{ .Values.externalSecrets.smtp.username.name | quote }}
key: {{ .Values.externalSecrets.smtp.username.key | quote }}
password:
value: {{ .Values.smtp.password }}
existingSecret:
name: {{ .Values.externalSecrets.smtp.password.name | quote }}
key: {{ .Values.externalSecrets.smtp.password.key | quote }}
{{- end }}
allowRelayNets: false
smtpSASLAuthEnable: "yes"
smtpSASLPasswordMaps: "lmdb:/etc/postfix/sasl_passwd.map"

View File

@@ -1,7 +1,5 @@
{{/*
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-License-Identifier: Apache-2.0
---
additionalAnnotations:
{{ .Values.annotations.opendeskMigrationsPost.additional | toYaml | nindent 2 }}

View File

@@ -1,7 +1,5 @@
{{/*
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-License-Identifier: Apache-2.0
---
additionalAnnotations:
{{ .Values.annotations.opendeskMigrationsPre.additional | toYaml | nindent 2 }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
global:
domain: {{ .Values.global.domain | quote }}
@@ -25,7 +23,7 @@ config:
openproject:
fileshareName: "Nextcloud at {{ .Values.global.domain }}"
admin:
username:
username:
value: {{ .Values.secrets.openproject.apiAdminUsername | quote }}
password:
value: {{ .Values.secrets.openproject.apiAdminPassword | quote }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
global:
domain: {{ .Values.global.domain | quote }}
@@ -23,8 +21,9 @@ global:
synapseFederation: {{ .Values.global.hosts.synapseFederation }}
whiteboard: {{ .Values.global.hosts.whiteboard }}
{{- end }}
{{- if .Values.apps.nubus.enabled }}
intercomService: {{ .Values.global.hosts.intercomService }}
{{- if .Values.apps.elementAdmin.enabled }}
adminBot: {{ .Values.global.hosts.adminBot }}
synapseAdmin: {{ .Values.global.hosts.synapseAdmin }}
{{- end }}
{{- if .Values.apps.jitsi.enabled }}
jitsi: {{ .Values.global.hosts.jitsi }}
@@ -36,23 +35,27 @@ global:
{{- if .Values.apps.nextcloud.enabled }}
nextcloud: {{ .Values.global.hosts.nextcloud }}
{{- end }}
{{- if .Values.apps.notes.enabled }}
notes: {{ .Values.global.hosts.notes }}
{{- end }}
{{- if .Values.apps.nubus.enabled }}
intercomService: {{ .Values.global.hosts.intercomService }}
keycloak: {{ .Values.global.hosts.keycloak }}
nubus: {{ .Values.global.hosts.nubus }}
{{- end }}
{{- if .Values.apps.openproject.enabled }}
openproject: {{ .Values.global.hosts.openproject }}
{{- end }}
{{- if .Values.apps.oxAppSuite.enabled }}
openxchange: {{ .Values.global.hosts.openxchange }}
openxchangeDav: {{ .Values.global.hosts.openxchangeDav }}
{{- end }}
{{- if .Values.apps.nubus.enabled }}
keycloak: {{ .Values.global.hosts.keycloak }}
nubus: {{ .Values.global.hosts.nubus }}
{{- if .Values.apps.staticFiles.enabled }}
static: {{ .Values.global.hosts.static }}
{{- end }}
{{- if .Values.apps.xwiki.enabled }}
xwiki: {{ .Values.global.hosts.xwiki }}
{{- end }}
{{- if .Values.apps.notes.enabled }}
notes: {{ .Values.global.hosts.notes }}
{{- end }}
issuerRef:
name: {{ .Values.certificate.issuerRef.name | quote }}

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
additionalAnnotations:
{{ .Values.annotations.opendeskServicesHome.additional | toYaml | nindent 2 }}

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
additionalAnnotations:
{{ .Values.monitoring.prometheus.prometheusRules.annotations | toYaml | nindent 2 }}
@@ -9,44 +7,5 @@ additionalLabels:
{{ .Values.monitoring.prometheus.prometheusRules.labels | toYaml | nindent 2 }}
config:
collabora:
enable: {{ .Values.apps.collabora.enabled }}
selectors:
namespace: {{ .Values.apps.collabora.namespace | quote }}
matrix:
enable: {{ .Values.apps.element.enabled }}
selectors:
namespace: {{ .Values.apps.element.namespace | quote }}
diagrams:
enable: {{ .Values.apps.cryptpad.enabled }}
selectors:
namespace: {{ .Values.apps.cryptpad.namespace | quote }}
nextcloud:
enable: {{ .Values.apps.nextcloud.enabled }}
selectors:
namespace: {{ .Values.apps.nextcloud.namespace | quote }}
openXChange:
enable: {{ .Values.apps.oxAppSuite.enabled }}
selectors:
namespace: {{ .Values.apps.oxAppSuite.namespace | quote }}
xwiki:
enable: {{ .Values.apps.xwiki.enabled }}
selectors:
namespace: {{ .Values.apps.xwiki.namespace | quote }}
nubus:
enable: {{ .Values.apps.nubus.enabled }}
selectors:
namespace: {{ .Values.apps.nubus.namespace | quote }}
openProject:
enable: {{ .Values.apps.openproject.enabled }}
selectors:
namespace: {{ .Values.apps.openproject.namespace | quote }}
jitsi:
enable: {{ .Values.apps.jitsi.enabled }}
selectors:
namespace: {{ .Values.apps.jitsi.namespace | quote }}
collabora:
enable: {{ .Values.apps.collabora.enabled }}
selectors:
namespace: {{ .Values.apps.collabora.namespace | quote }}
{{ .Values.apps | toYaml | nindent 2 }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
additionalAnnotations:
{{ .Values.monitoring.grafana.dashboards.annotations | toYaml | nindent 2 }}
@@ -10,45 +8,5 @@ additionalLabels:
{{ .Values.monitoring.grafana.dashboards.labels | toYaml | nindent 2 }}
config:
apps:
collabora:
enable: {{ .Values.apps.collabora.enabled }}
selectors:
namespace: {{ .Values.apps.collabora.namespace | quote }}
matrixElement:
enable: {{ .Values.apps.element.enabled }}
selectors:
namespace: {{ .Values.apps.element.namespace | quote }}
diagrams:
enable: {{ .Values.apps.cryptpad.enabled }}
selectors:
namespace: {{ .Values.apps.cryptpad.namespace | quote }}
nextcloud:
enable: {{ .Values.apps.nextcloud.enabled }}
selectors:
namespace: {{ .Values.apps.nextcloud.namespace | quote }}
openxchange:
enable: {{ .Values.apps.oxAppSuite.enabled }}
selectors:
namespace: {{ .Values.apps.oxAppSuite.namespace | quote }}
xwiki:
enable: {{ .Values.apps.xwiki.enabled }}
selectors:
namespace: {{ .Values.apps.xwiki.namespace | quote }}
nubus:
enable: {{ .Values.apps.nubus.enabled }}
selectors:
namespace: {{ .Values.apps.nubus.namespace | quote }}
openproject:
enable: {{ .Values.apps.openproject.enabled }}
selectors:
namespace: {{ .Values.apps.openproject.namespace | quote }}
jitsi:
enable: {{ .Values.apps.jitsi.enabled }}
selectors:
namespace: {{ .Values.apps.jitsi.namespace | quote }}
collabora:
enable: {{ .Values.apps.collabora.enabled }}
selectors:
namespace: {{ .Values.apps.collabora.namespace | quote }}
{{ .Values.apps | toYaml | nindent 2 }}
...

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
global:
domain: {{ .Values.global.domain | quote }}

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
global:
domain: {{ .Values.global.domain | quote }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
global:
imagePullSecrets:

View File

@@ -1,7 +1,5 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-License-Identifier: Apache-2.0
---
containerSecurityContext:
enabled: true
@@ -28,7 +26,7 @@ global:
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
image:
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.cassandra.registry | quote }}
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.cassandra.registry | quote }}
repository: {{ .Values.images.cassandra.repository | quote }}
tag: {{ .Values.images.cassandra.tag | quote }}
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
@@ -64,7 +62,7 @@ livenessProbe:
metrics:
enabled: false
image:
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.cassandraExporter.registry | quote }}
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.cassandraExporter.registry | quote }}
repository: {{ .Values.images.cassandraExporter.repository | quote }}
tag: {{ .Values.images.cassandraExporter.tag | quote }}
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
clamd:
commonAnnotations:

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
commonAnnotations:
{{ .Values.annotations.servicesExternalClamavSimple.common | toYaml | nindent 2 }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
additionalAnnotations:
{{ .Values.annotations.servicesExternalDkimpy.additional | toYaml | nindent 2 }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
cleanup:
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
architecture: {{ if gt .Values.replicas.memcached 1 }}"high-availability"{{ else }}"standalone"{{ end }}
@@ -30,7 +28,7 @@ global:
{{ .Values.global.imagePullSecrets | toYaml | nindent 4 }}
image:
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.memcached.registry | quote }}
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.memcached.registry | quote }}
repository: {{ .Values.images.memcached.repository | quote }}
tag: {{ .Values.images.memcached.tag | quote }}
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
apiIngress:
enabled: {{ .Values.ingress.enabled }}
@@ -48,7 +46,7 @@ global:
allowInsecureImages: true
image:
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.minio.registry | quote }}
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.minio.registry | quote }}
repository: {{ .Values.images.minio.repository | quote }}
tag: {{ .Values.images.minio.tag | quote }}
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
@@ -56,7 +54,7 @@ image:
volumePermissions:
enabled: true
image:
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.minio.registry | quote }}
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.minio.registry | quote }}
repository: {{ .Values.images.bitnamiOSShell.repository | quote }}
tag: {{ .Values.images.bitnamiOSShell.tag | quote }}
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}
@@ -124,6 +122,9 @@ provisioning:
- name: {{ .Values.objectstores.openproject.bucket | quote }}
versioning: "Suspended"
withLock: false
- name: {{ .Values.objectstores.openxchange.bucket | quote }}
versioning: "Suspended"
withLock: false
- name: {{ .Values.objectstores.nubus.bucket | quote }}
versioning: "Suspended"
withLock: false
@@ -183,6 +184,18 @@ provisioning:
effect: "Allow"
actions:
- "s3:*"
- name: "openxchange-bucket-policy"
statements:
- resources:
- "arn:aws:s3:::openxchange"
effect: "Allow"
actions:
- "s3:*"
- resources:
- "arn:aws:s3:::openxchange/*"
effect: "Allow"
actions:
- "s3:*"
- name: "ums-bucket-policy"
statements:
- resources:
@@ -234,6 +247,12 @@ provisioning:
policies:
- "openproject-bucket-policy"
setPolicies: true
- username: {{ .Values.objectstores.openxchange.username | quote }}
password: {{ .Values.secrets.minio.openxchangeUser | quote }}
disabled: false
policies:
- "openxchange-bucket-policy"
setPolicies: true
- username: {{ .Values.objectstores.nubus.username | quote }}
password: {{ .Values.secrets.minio.umsUser | quote }}
disabled: false

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024-2025 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
certificate:
secretName: {{ .Values.ingress.tls.secretName | quote }}
@@ -56,17 +54,34 @@ postfix:
hostname: "postfix"
inetProtocols: "ipv4"
milterDefaultAction: "accept"
overrides:
- fileName: "sasl_passwd.map"
content:
- {{ printf "%s %s:%s" .Values.smtp.host .Values.smtp.username .Values.smtp.password | quote }}
{{- if .Values.apps.dkimpy.enabled }}
dkimpyHost: "opendesk-dkimpy-milter.{{ .Release.Namespace }}.svc.{{.Values.cluster.networking.domain }}:8892"
{{- end }}
rspamdHost: ""
relayHost: {{ if .Values.smtp.host }}{{ printf "[%s]:%d" .Values.smtp.host .Values.smtp.port | quote }}{{ else }}""{{ end }}
relayNets: {{ join " " .Values.cluster.networking.cidr | quote }}
{{- if .Values.smtp.host }}
relayHost:
enabled: true
host: {{ .Values.smtp.host }}
port: {{ .Values.smtp.port }}
authentication:
username:
value: {{ .Values.smtp.username }}
existingSecret:
name: {{ .Values.externalSecrets.smtp.username.name | quote }}
key: {{ .Values.externalSecrets.smtp.username.key | quote }}
password:
value: {{ .Values.smtp.password }}
existingSecret:
name: {{ .Values.externalSecrets.smtp.password.name | quote }}
key: {{ .Values.externalSecrets.smtp.password.key | quote }}
{{- end }}
# Warning: This setting allows unauthenticated mail relay from relayNets!
allowRelayNets: true
relayNets: {{ join " " .Values.cluster.networking.cidr | quote }}
minTLSVersion: "TLSv1.3"
smtpdTLSMandatoryCiphers: "high"
smtpSASLAuthEnable: "yes"
smtpSASLPasswordMaps: "lmdb:/etc/postfix/sasl_passwd.map"
smtpTLSSecurityLevel: "encrypt"
@@ -82,8 +97,14 @@ postfix:
enabled: true
username:
value: "opendesk-system"
existingSecret:
name: {{ .Values.externalSecrets.postfix.opendeskSystemUsername.name | quote }}
key: {{ .Values.externalSecrets.postfix.opendeskSystemUsername.key | quote }}
password:
value: {{ .Values.secrets.postfix.opendeskSystemPassword | quote }}
existingSecret:
name: {{ .Values.externalSecrets.postfix.opendeskSystemPassword.name | quote }}
key: {{ .Values.externalSecrets.postfix.opendeskSystemPassword.key | quote }}
{{- if .Values.antivirus.milter.host }}
smtpdMilters: "inet:{{ .Values.antivirus.milter.host }}:{{ .Values.antivirus.milter.port }}"

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
cleanup:
deletePodsOnSuccess: {{ .Values.debug.cleanup.deletePodsOnSuccess }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
architecture: "standalone"
@@ -18,7 +16,7 @@ global:
storageClass: {{ coalesce .Values.persistence.storages.redis.storageClassName .Values.persistence.storageClassNames.RWO | quote }}
image:
registry: {{ coalesce .Values.repositories.image.dockerHub .Values.global.imageRegistry .Values.images.redis.registry | quote }}
registry: {{ coalesce .Values.repositories.image.registryOpencodeDe .Values.global.imageRegistry .Values.images.redis.registry | quote }}
repository: {{ .Values.images.redis.repository | quote }}
tag: {{ .Values.images.redis.tag | quote }}
pullPolicy: {{ .Values.global.imagePullPolicy | quote }}

View File

@@ -1,8 +1,6 @@
{{/*
SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
SPDX-License-Identifier: Apache-2.0
*/}}
# SPDX-FileCopyrightText: 2024 Zentrum für Digitale Souveränität der Öffentlichen Verwaltung (ZenDiS) GmbH
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
---
commonAnnotations:
{{ .Values.annotations.xwiki.common | toYaml | nindent 2 }}

View File

@@ -6,12 +6,12 @@ charts:
registry: "registry.opencode.de"
repository: "zendis/opendesk-enterprise/components/product-development/charts/opendesk-dovecot-pro"
name: "dovecot"
version: "3.0.0"
version: "3.1.1"
verify: true
oxAppSuite:
registry: "registry.opencode.de"
repository: "zendis/opendesk-enterprise/components/supplier/open-xchange/charts-mirror"
name: "appsuite-public-sector-pro-chart"
version: "1.15.236"
version: "1.19.197"
verify: false
...

View File

@@ -5,17 +5,18 @@ images:
collabora:
registry: "registry.opencode.de"
repository: "zendis/opendesk-enterprise/components/supplier/collabora/images/collabora-online-for-opendesk"
tag: "24.04.13.3.1@sha256:7e9b63972415a5a8006ec6b7e904c2d78d9af467218ead7e578d0c8a5691f0bc"
tag: "25.04.3.4.1@sha256:929ce210bb1ff46275af64e94ce02ab0a0470572eba8251ad35b8b4296c3a171"
dovecot:
registry: "registry.opencode.de"
repository: "zendis/opendesk-enterprise/components/supplier/open-xchange/images-mirror/dovecot-pro"
tag: "3.0.1-rev3@sha256:b87f16562dd486c0f97e8147a797af16a54f25f1ac64826f4f53bd8177ec9a33"
tag: "3.0.2-rev7@sha256:4330240bfeda4dd8b6aa32a6b7f03382126d47caf4f37a5578ad17746101c88b"
nextcloud:
registry: "registry.opencode.de"
repository: "zendis/opendesk-enterprise/components/supplier/nextcloud/images/opendesk-nextcloud"
tag: "1.2.0@sha256:ddd2bec74a22a713967f62fcdcf18fa8d53d730c1db296d570143754c93d20a5"
tag: "31.0.6@sha256:07cd284179654739c8e6aea05e960ee7d3e3eb4cd09bd9a3e3747c69b9e2ec22"
openxchangeCoreMW:
registry: "registry.opencode.de"
repository: "zendis/opendesk-enterprise/components/supplier/open-xchange/images-mirror/middleware-public-sector-pro"
tag: "8.35.85@sha256:54d01a16ea29a3ae8f1857e5bdf6d2e34046b8a3fa3d6179bb3ad3d047e1318f"
tag: "8.39.70@sha256:94b6e9325dfa4c91587b761946151987dd49000727ab81d10a41fdc7c17ae2cb"
...

View File

@@ -1,5 +1,12 @@
# SPDX-FileCopyrightText: 2023 Bundesministerium des Innern und für Heimat, PG ZenDiS "Projektgruppe für Aufbau ZenDiS"
# SPDX-License-Identifier: Apache-2.0
#
# DISCLAIMER:
#
# The values in this file are exposed because they are used in multiple components and it does make sense to define
# them centrally, but we do not support changing these values, please leave them as they are.
#
---
ldap:
host: "ums-ldap-server"

View File

@@ -117,21 +117,30 @@ annotations:
nextcloudNextcloudMgmt:
additional: ~
pod: ~
service: ~
serviceAccount: ~
nextcloudNotifyPush:
additional: ~
ingress: ~
pod: ~
service: ~
serviceMetrics: ~
serviceAccount: ~
notes:
ingressAdmin: ~
ingressCollaborationWS: ~
ingressCollaborationAPI: ~
ingressMedia: ~
serviceMedia: ~
notesBackend:
createUserJob: ~
ingress: ~
ingressAdmin: ~
migrateJob: ~
pod: ~
service: ~
notesFrontend:
ingressMedia: ~
pod: ~
service: ~
serviceMedia: ~
notesYProvider:
ingressCollaborationAPI: ~
ingressCollaborationWS: ~
pod: ~
service: ~
nubus:

View File

@@ -24,7 +24,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-certificates"
name: "opendesk-certificates"
version: "3.1.1"
version: "3.1.2"
verify: true
clamav:
# providerCategory: "Platform"
@@ -56,7 +56,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/collabora/charts-mirror"
name: "collabora-online"
version: "1.1.37"
version: "1.1.45"
verify: true
collaboraController:
# Enterprise Component
@@ -65,7 +65,7 @@ charts:
registry: "registry.opencode.de"
repository: "zendis/opendesk-enterprise/components/supplier/collabora/charts-mirror"
name: "cool-controller"
version: "1.1.2"
version: "1.1.6"
verify: false
cryptpad:
# providerCategory: "Supplier"
@@ -84,8 +84,6 @@ charts:
# providerResponsible: "openDesk"
# upstreamRegistry: "https://registry.opencode.de"
# upstreamRepository: "bmi/opendesk/components/platform-development/charts/opendesk-dkimpy-milter/opendesk-dkimpy-milter"
# upstreamMirrorTagFilterRegEx: '^(\d+)\.(\d+)\.(\d+)$'
# upstreamMirrorStartFrom: ["1", "0", "0"]
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-dkimpy-milter"
name: "opendesk-dkimpy-milter"
@@ -99,7 +97,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-dovecot"
name: "dovecot"
version: "3.0.0"
version: "3.1.1"
verify: true
element:
# providerCategory: "Platform"
@@ -141,7 +139,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/univention/charts-mirror"
name: "intercom-service"
version: "2.12.0"
version: "2.19.0"
verify: true
jitsi:
# providerCategory: "Platform"
@@ -231,7 +229,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-migrations"
name: "opendesk-migrations"
version: "1.6.0"
version: "1.7.4"
verify: true
minio:
# providerCategory: "Community"
@@ -241,7 +239,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/external/charts/bitnami-charts"
name: "minio"
version: "14.10.1"
version: "16.0.10"
verify: true
nextcloud:
# providerCategory: "Platform"
@@ -251,7 +249,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-nextcloud"
name: "opendesk-nextcloud"
version: "4.1.0"
version: "4.4.0"
verify: true
nextcloudManagement:
# providerCategory: "Platform"
@@ -261,7 +259,17 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-nextcloud"
name: "opendesk-nextcloud-management"
version: "4.1.0"
version: "4.4.0"
verify: true
nextcloudNotifyPush:
# providerCategory: "Platform"
# providerResponsible: "openDesk"
# upstreamRegistry: "https://registry.opencode.de"
# packageName=bmi/opendesk/components/platform-development/charts/opendesk-nextcloud/opendesk-nextcloud-notifypush
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-nextcloud"
name: "opendesk-nextcloud-notifypush"
version: "4.4.0"
verify: true
nginx:
# providerCategory: "Community"
@@ -284,14 +292,14 @@ charts:
version: "1.0.1"
verify: true
notes:
# providerCategory: "Supplier"
# providerCategory: "Platform"
# providerResponsible: "openDesk"
# upstreamRegistry: "https://gitlab.opencode.de"
# packageName=bmi/opendesk/components/supplier/dinum/charts/notes
# upstreamRegistry: "https://registry.opencode.de"
# packageName=bmi/opendesk/components/platform-development/charts/opendesk-impress
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/dinum/charts/notes"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-impress"
name: "impress"
version: "2.0.0"
version: "1.0.1"
verify: true
nubus:
# providerCategory: "Supplier"
@@ -303,7 +311,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/univention/charts-mirror"
name: "nubus"
version: "1.8.0"
version: "1.12.0"
verify: true
opendeskAlerts:
# providerCategory: "Platform"
@@ -313,7 +321,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-alerts"
name: "opendesk-alerts"
version: "1.1.1"
version: "1.1.2"
verify: true
opendeskDashboards:
# providerCategory: "Platform"
@@ -323,7 +331,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-dashboards"
name: "opendesk-dashboards"
version: "1.1.1"
version: "1.1.2"
verify: true
opendeskKeycloakBootstrap:
# providerCategory: "Platform"
@@ -355,7 +363,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/openproject/charts-mirror"
name: "openproject"
version: "9.10.1"
version: "10.1.0"
verify: true
openprojectBootstrap:
# providerCategory: "Platform"
@@ -387,7 +395,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/open-xchange/charts-mirror"
name: "appsuite-public-sector"
version: "2.17.164"
version: "2.21.167"
verify: false
oxAppSuiteBootstrap:
# providerCategory: "Platform"
@@ -397,7 +405,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-open-xchange-bootstrap"
name: "opendesk-open-xchange-bootstrap"
version: "2.1.2"
version: "4.0.1"
verify: true
oxConnector:
# providerCategory: "Supplier"
@@ -409,7 +417,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/supplier/univention/charts-mirror"
name: "ox-connector"
version: "0.19.0"
version: "0.27.2"
verify: true
postfix:
# providerCategory: "Platform"
@@ -419,7 +427,7 @@ charts:
registry: "registry.opencode.de"
repository: "bmi/opendesk/components/platform-development/charts/opendesk-postfix"
name: "postfix"
version: "4.0.0"
version: "5.0.0"
verify: true
postgresql:
# providerCategory: "Platform"

Some files were not shown because too many files have changed in this diff Show More