openDesk security hardening

Hardening openDesk means verifying what you deploy, locking down every bundled component on Kubernetes and keeping each one patched. This page sets out the decisions, build order, effort drivers and checks to hand over.

On this page

What openDesk security hardening covers beyond the default install

Hardening an openDesk deployment covers artifact verification, cluster and pod settings, network paths, ingress, malware scanning and patching for every bundled component. If your public sector or regulated team must run openDesk on its own Kubernetes cluster and answer security questions about it, each of these areas needs an owner, a check and evidence from your own cluster. openDesk's security documentation describes signed Helm charts, images pinned by tag and digest, and documented Kubernetes security settings and network policies. Treat those as starting points that you verify in your environment, and record which settings you have confirmed.

The work is harder than it looks for three reasons. First, openDesk bundles about a dozen components, including Element, Nextcloud, OX App Suite, XWiki, Nubus, OpenProject, Jitsi and Collabora, and each keeps its own license and release cycle. Nextcloud and Nubus are licensed AGPL-3.0, OpenProject GPL-3.0 and Collabora MPL-2.0, so your inventory of obligations and patches has several separate threads. Second, openDesk expects production-grade services that your team runs and secures, including PostgreSQL 15, MariaDB 10, Redis 7, Memcached, Cassandra, an SMTP relay, ClamAV over ICAP, object storage and a TURN server. Each of these is an attack surface that the openDesk chart does not secure for you.

The third reason is the release cycle. openDesk plans major releases annually in Q3, minor releases monthly and patch releases on demand, and only the latest minor version is supported. A hardening baseline therefore needs re-verification after every minor release, and a team that falls behind runs unsupported code. Ask how security fixes reach each bundled component: as a minor release, as a patch release or, for Nextcloud, through the Enterprise security patches and Guard app. Community Edition support comes from the community on openCode with no SLA, so confirm who will respond to a vulnerability in the version you run.

Four decisions should be made early. Decide whether you verify chart and image signatures at deploy time, using the GPG keys for most Helm charts and cosign for images openDesk builds, and who holds and rotates those trust roots. Decide which ingress controller you will run, since openDesk supports haproxy-ingress or the deprecated Ingress nginx, and record the migration plan if you choose the deprecated option. Decide the network policy scope between namespaces and toward external services. Decide where ClamAV scanning sits in the file upload path and who owns its signature updates.

Before you commit, ask for a written list of which hardening settings openDesk configures and which your team must set. Ask for the image digests in your target release, the pod security settings applied to each namespace and the evidence you will give an assessor. Confirm that your cluster meets the CNCF-certified Kubernetes requirement of v1.33 or later, and that your ingress, cert-manager and volume provisioner choices match the supported list. Those answers determine how much of the hardening work is already done and how much remains for your team to verify.

Which openDesk components and settings carry the hardening work

Hardening an openDesk deployment means working through each bundled component, the deployment layer that installs them, and the external services they depend on. Each item below holds user data, exposes an interface, or changes who may patch the software, so each needs its own check.

Files and groupware stores

Nextcloud holds files and OX App Suite holds mail, calendars and contacts, so these two components carry most of the stored user data in an openDesk deployment. Check how each one authenticates against the identity layer, which sharing and upload settings apply by default, and where attachments and mailbox data are written. Nextcloud Enterprise security patches belong to the Enterprise Edition, so confirm which patch channel your support model covers before you set a patch window.

Chat, wiki and project interfaces

Element with Nordeck widgets, CryptPad with diagrams.net, XWiki and OpenProject accept content and links from users and are reached through the ingress. Review which hosts and paths are published, which widgets and embeds are allowed, and how file uploads and external links are handled. Confirm that CryptPad and diagrams.net are reachable only at the addresses you intend to publish.

Meeting and document editing services

Jitsi carries live audio and video, and Collabora opens office documents for the web office. Jitsi media depends on the TURN server for users behind restrictive networks, so the TURN configuration is part of this surface. For Collabora, check how documents reach the editor, which hosts can call it, and how branding and load settings are configured in your edition.

Portal and identity layer with Nubus

Nubus provides the portal and identity and access management that the other components rely on, so a weak setting here affects access across the whole suite. Review administrator accounts, group mappings, and how external identity providers or directory imports are connected. Nubus is licensed under AGPL-3.0, which also governs who may modify and redistribute it.

Deployment layer and signed artifacts

Helmfile, the Helm charts and the container images form the deployment layer, and openDesk signs and validates most charts against GPG keys, pins images by tag and digest, and signs the images it builds with cosign. Your pipeline should verify these signatures before anything is deployed, and any mirror you run should keep the same digests. Confirm that verification runs in your pipeline rather than assuming it does.

External services and component licenses

Production openDesk expects PostgreSQL 15, MariaDB 10, Redis 7, Memcached, Cassandra, an SMTP relay, ClamAV over ICAP, object storage and a TURN server outside the cluster, each needing its own TLS, access control, backup and network rules. Each bundled component also keeps its own license, such as AGPL-3.0 for Nextcloud and Nubus, GPL-3.0 for OpenProject and MPL-2.0 for Collabora, while the deployment automation is Apache-2.0. These licenses decide who may patch, modify and redistribute each part, so confirm them with your legal team.

Which hardening decisions to settle before go-live

This table compares the four hardening choices that most affect an openDesk go-live: edition, ingress controller, chart and image verification, and ClamAV coverage. Read each row as an option, when it fits and the ongoing effort it creates. Settle these before the first production install, because changing them later means retesting the affected components.

OptionWhen it fitsOperational cost to plan for
Community EditionEvaluation or non-production use. Support comes from the community on openCode, with no SLA.You track and test every bundled patch yourselves, including Nextcloud security fixes.
Enterprise EditionProduction use where SLA-backed 2nd and 3rd level support and patches are required.Subscription cost to quote, a license file to manage, and Enterprise-only modules to review in each release.
haproxy-ingressNew clusters that need an ingress controller that is not deprecated.Install, tune and retest TLS and timeout settings for each openDesk release.
Ingress nginx (deprecated)Clusters that already run it and have a dated plan to move off.Migration risk to hostnames, TLS and routing, plus a later move to a supported controller.
Pipeline signature verificationTeams pulling charts and images through CI on every upgrade.Maintain key import and check steps, and document exceptions for charts that are not signed.
Manual signature checkSmall pilots with few upgrades, run by a named engineer.Repeated effort each release, and weaker evidence unless every check is logged.
ClamAV on every upload pathFiles from every entry point, including mail and web uploads, pass through the scanner.ClamAV sizing, signature update operations, and a rule for uploads when the scanner is unreachable.
ClamAV on selected pathsOnly where a documented risk decision covers the unscanned paths.Gaps that assessors will ask about, and an exception record to keep current.

How to harden openDesk in the order the checks depend on

This sequence runs from cluster prerequisites to a recorded baseline, because each control depends on the one before it. Every step closes with a check that shows the control works. The result is a hardened openDesk deployment with evidence your security and compliance teams can review.

  1. Confirm Kubernetes version and prerequisites

    The cluster must be a CNCF-certified Kubernetes at v1.33 or later, with an ingress controller (haproxy-ingress or the deprecated Ingress nginx), cert-manager, an RWO volume provisioner, Helm 3.17.3 or later below v4, and Helmfile 1.0.0 or later. The platform team runs the version checks and records the output. openDesk is tested on kubespray clusters, and OpenShift is not a tested target, so confirm your distribution first. This step is done when every tool reports a version that meets the requirements and a dry-run render completes without errors.

  2. Verify provenance and pin artifacts

    Before the first install, check the GPG signatures on the Helm charts that openDesk signs and validate the cosign signatures on the images it builds. Then pin every image by tag and digest and commit the values to version control, so a later pull cannot change what runs. Confirm the release you pin against the openDesk release page and the release management notes. Closing check: a chart with one altered byte and an image with a missing or tampered signature both fail verification, and the rendered manifests contain digests with no floating tags.

  3. Apply pod and namespace security settings

    Apply the Kubernetes security settings documented for openDesk. Set Pod Security admission labels on each namespace, run containers as non-root, drop Linux capabilities, block privilege escalation, and use read-only root filesystems where a component supports them. Some bundled components may need writable paths, so list each exception explicitly and keep it as narrow as possible. The platform team owns the manifests, and the security team reviews every exception. Closing check: a test pod that requests root or privileged mode is refused by admission in each openDesk namespace.

  4. Apply default-deny network policies

    Start each namespace with a default-deny ingress and egress policy. Then add only the flows the documented network policies require: ingress controller to web components, components to the database, cache and ICAP services, and outbound traffic to the SMTP relay and TURN server. Confirm that your CNI enforces NetworkPolicy before relying on the result. Store the allow list in version control so every change is reviewed. Closing check: a test pod in an unrelated namespace cannot open a connection to an openDesk service port, while the documented ingress path still works. Record both results.

  5. Configure ingress and TLS

    Terminate TLS at the ingress controller, with certificates issued through cert-manager, and serve only the openDesk hostnames. The requirements list haproxy-ingress first and mark Ingress nginx as deprecated, so plan around haproxy-ingress. Redirect or refuse plain HTTP, and set protocol versions and ciphers to match your policy and the controller's documentation. Closing check: an HTTP request is redirected or refused, the certificate chain validates from a client outside the cluster, and an external TLS scan shows only the protocol versions you approved.

  6. Connect ClamAV over ICAP and confirm scan path

    Point each file-handling component at the ClamAV service over ICAP. The connection settings differ by product, so take them from each component's documentation and confirm what it supports. Then test the scan path from the outside in: upload a standard antivirus test file through the user interface, and check the block, the scanner result and the log entry. The platform team leads this with the component administrators. Closing check: the test file is blocked on upload and logged, a clean file passes, and the test is repeated for every component that accepts files.

  7. Lock down external service credentials and secrets

    Production openDesk expects external services, including PostgreSQL 15, MariaDB 10, Redis 7, Memcached, Cassandra, an SMTP relay, object storage and a TURN server. Give each service its own account with the minimum privileges needed, store credentials in your secrets manager or sealed secrets, and rotate any default or shared password before go-live. Agree with each service owner how rotation will work after launch. Closing check: each account can reach only its own database or bucket, and a scan of the deployment repository finds no plaintext credentials.

  8. Record the hardened baseline

    Capture the state you have just verified: Kubernetes and tool versions, the pinned release and digests, the admission and network policy manifests, the TLS configuration, the ICAP test results and the credential inventory. Store the record with your change documentation. Upgrades and drift checks start from this record. Closing check: a fresh render from the stored configuration matches the deployed state, and the test results from the provenance, ingress and scanning steps are attached to the baseline.

How to verify chart signatures and pinned image digests for openDesk

openDesk signs and validates most of its Helm charts against GPG keys, pins every container image by tag and digest, and signs the images it builds with cosign. Those controls protect the artifacts that openDesk's pipeline handles. Your team still needs to repeat the checks inside your own environment, because the deployment is only as trustworthy as the artifacts you actually install. Start by confirming which charts fall outside signature coverage for the exact release you plan to deploy. Ask ZenDiS or check the openDesk security documentation for that list, then decide how your pipeline treats each uncovered chart: block it, or accept it only after a recorded review and a pinned hash in your own repository.

GPG verification of charts. Obtain the public signing keys through a channel your organization controls, and confirm their fingerprints against a value published separately from the download. Import them into a dedicated keyring used only for this deployment. Run the verification on each chart archive before it is rendered or pushed to your registry, and keep the fingerprint and result in the change record. Helm can read provenance files for signed charts, but only when the chart publisher ships them. Confirm with openDesk which chart artifacts include provenance files, and treat a chart without one as a gap in the verification step, not as a pass.

Confirming digest pinning in rendered manifests. Render the full deployment with Helmfile into a single file and review that file, not only the values you wrote. Every container image reference should combine a repository, a tag and a sha256 digest. Search the output for image references that have a tag but no digest, that point to registries outside your allow list, or that use a floating tag such as latest. Record the digests in the rendered output and compare a sample against the digests reported by your registry. A pinned digest shows which image bytes the manifest refers to. It does not show that those bytes are trustworthy, so pair this check with the signature check above.

Cosign verification and key control. Images that your team builds on top of openDesk, such as custom Nextcloud apps or patched components, should be signed by your own keys and verified with cosign before an admission controller or deployment step accepts them. Generate and store the private signing keys in a key management service or hardware security module that your organization administers, and keep them out of the openDesk repository and shared build agents. The trust roots, meaning the GPG keyring, the cosign public keys and the admission policy, belong to your organization too. Re-run every check after each upgrade, since new charts, new digests and possibly new keys arrive with each minor release. Confirm the key rotation process with ZenDiS before your first upgrade, and write the verification steps into the upgrade runbook.

What drives openDesk hardening effort and how to keep it down

This table lists the factors that change how much hardening work an openDesk deployment needs, with a practical way to reduce each one. Read it as a checklist for scoping: the more components, environments and network paths you carry, the more settings you must review and evidence you must keep. The main takeaway is that a single hardened baseline, a minimal component set and templated network policies usually do more to control effort than any individual setting.

DriverWhy it changes effortHow to keep it down
Number of bundled components enabledEach enabled component (for example Nextcloud, OX App Suite, XWiki or Jitsi) needs its own Kubernetes security settings, image pinning, patch tracking and antivirus coverage decisions.Enable only the components your users need in the first phase, and add others later as separate reviewed changes.
Number of environments (evaluation, test, production)Each environment has its own values, secrets and network rules, so every hardening decision can be repeated and drift between them.Reuse one hardened baseline across environments and vary only addresses, secrets and sizing in an environment-specific file.
External services to secure and monitorProduction expects PostgreSQL 15, MariaDB 10, Redis 7, Memcached, Cassandra, an SMTP relay, object storage and a TURN server, each with its own access controls, encryption and logging.Inventory every external service before hardening starts, and confirm with your platform team which ones already meet your baseline and which need changes.
Identity integration complexityFederating an existing identity provider over OIDC or syncing from LDAP or Active Directory adds trust configuration, attribute mapping and access reviews.Choose one federation pattern early, document the matched attribute, and confirm with the vendor how Entra ID or other providers are handled before you commit.
Ingress and TLS arrangementsThe ingress controller, certificate management and TLS settings apply to every externally reachable component and must be checked for each route.Standardize on one ingress controller and one certificate process, and limit the number of public hostnames to those you truly need.
Number of network paths between namespacesEach allowed path between namespaces or to external services needs a policy and a justification, and each one must be tested.Define network policies from a single template with a default-deny starting point, then add named exceptions one at a time.
ClamAV coverage for file handlingEvery component that accepts uploads or shares files needs scanning through ClamAV over ICAP, and scan failures and bypasses must be handled and logged.Scope scanning to the file paths that accept external or user uploads, and confirm the expected scan behavior for each one in a test environment.
Compliance evidence the buyer must produceAssessors usually ask for configuration records, test results, signature checks and patch history, which must be collected and kept current.Agree the evidence list at the start of the engagement and generate it from the same baseline, so each release produces the same records.

Hardening controls for pods, network paths and secrets

openDesk's security posture depends on what you configure around it: the Kubernetes workloads, the traffic allowed between them and out of the cluster, the ingress that exposes them, and the credentials and signatures that connect everything. Each card below names a control area to review, and each should be confirmed against the openDesk security documentation for the release you deploy.

Pod security context and service accounts

openDesk documents Kubernetes security settings for its workloads, including the pod security context, service accounts, privilege limits and namespace boundaries. The exact values vary by component and release, so confirm each one against the pinned version. Check that containers run as non-root where the component allows it, that privilege escalation and host access are disabled, that service account tokens are mounted only where a workload calls the Kubernetes API, and that every namespace has a clear owner.

Default deny and per-component allow lists

openDesk documents network policies for its components. Start with a default deny posture in each namespace, then add allow rules for the traffic each component needs, such as ingress from the controller, connections to its database and cache, and calls to the SMTP relay and ClamAV service. Test each rule by blocking the traffic it permits and confirming the failure, so you know the policy does what the documentation says in your cluster.

Egress to external services and the TURN server

openDesk expects several external services for production, including PostgreSQL, MariaDB, Redis, object storage, an SMTP relay, ClamAV over ICAP and a TURN server. Each of these outbound paths needs an explicit destination, port and owner in your egress policy. Record every external endpoint the release documentation names, confirm whether any component reaches the internet directly, and review the list again after each upgrade, because new components can add new outbound paths.

TLS termination and certificate management

openDesk requires an ingress controller, and its documentation lists haproxy-ingress or the deprecated Ingress nginx, so confirm which controller your cluster runs and which one the pinned release expects. Decide where TLS terminates, make sure plain HTTP is redirected, and use cert-manager to issue and renew certificates for each hostname. Check the issuer configuration, renewal alerting and how private keys are stored and accessed.

Header and access controls at ingress

The ingress is the main entry point for users and for external clients, so header and access controls belong in its configuration. Review which security headers the controller sets, which request size and timeout limits apply, and which hostnames and paths are exposed. Add any IP restrictions or authentication requirements your security policy sets. Confirm the exact annotations and defaults with the haproxy-ingress documentation and the openDesk release notes.

External service credentials and SMTP secrets

Secrets in an openDesk deployment include the credentials for the external PostgreSQL, MariaDB, Redis and object storage services, and the login for the SMTP relay. Decide where each secret is stored, who can read it and how it rotates. Keep credentials out of values files committed to version control, and confirm the secret names and mechanisms the pinned release expects before you create them.

GPG and cosign signature verification

openDesk signs and validates most Helm charts against GPG keys, pins every container image by tag and digest, and signs images it builds with cosign. Your team should verify these signatures before deployment and record the GPG key identities and cosign signing identities it accepts. Decide who may change pinned digests, and confirm which charts are not signed in the pinned release, since openDesk signs most charts but not necessarily all of them.

How hardening differs for evaluation, production and air-gapped clusters

An evaluation deployment exists to test how openDesk behaves, not to hold live user data. Hardening here focuses on getting signature checks, pinned images and network policies running so the setup reflects the intended design, while keeping the environment isolated from production identities and content.

  • Minimum hardware: The openDesk requirements call for 12 x64 CPU cores, 32 GB of RAM and more than 10 GB of disk for an evaluation deployment.
  • Architecture: ARM is not supported yet, so plan x64 nodes only.
  • Platform: openDesk is tested on kubespray clusters. OpenShift is not a tested platform, so do not treat an OpenShift test as evidence for production.
  • Baseline: The evaluation setup is not a production baseline. Its services, sizing and settings are not meant to carry production load.
  • Data: Use test accounts and synthetic content, and keep the cluster away from production directories and mail flows.

Before relying on evaluation results, confirm with ZenDiS which release and cluster versions your test matches, and keep a written list of every setting you changed so the production team can review each one.

How to prove the hardened deployment fails safely

The point of verification is to show that each hardening control refuses the things it is meant to refuse. Passing a happy-path deployment does not prove much on its own. For openDesk, start with the supply chain: attempt to deploy a chart or image that lacks a valid GPG signature, or an image referenced by tag without the pinned digest, into a test namespace. The admission path should reject it. Then confirm that the digests of the running images match the values pinned in your Helmfile release, and that images built by your team verify against their cosign signatures. Record the exact error text each rejection produces, because that text becomes the expected result for later runs.

Next, test the workload and network controls against the Kubernetes security settings and network policies documented in the openDesk security guidance. Inspect the live pod specifications and compare them with the documented restrictions, then try the disallowed actions directly from a test workload: a privileged container, a root user, host networking and a writable root filesystem. For network policies, deploy a test pod into a namespace that is not on the allow list and attempt connections to each openDesk service and external dependency. Every unlisted path should time out or be refused. Repeat the same probes from inside an allowed namespace to confirm that the intended paths still work.

For ingress, scan the cluster from outside the trusted network and confirm that only the intended hostnames answer. Check that each endpoint presents a certificate that chains to your trusted authority, is not expired, and matches the hostname. Confirm that plain HTTP either redirects or is refused. Antivirus needs its own test. Use the EICAR test string, a harmless file that antivirus engines are designed to flag, and upload it through each path that hands files to ClamAV over ICAP, including file sharing and mail. Note whether each component blocks the file or only tags it, because that behavior differs by component and you need to know which one applies to each path.

Failure modes need the same discipline. Illustrative example: stop the ClamAV service or block its ICAP port, then upload the test file again. The expected result is that uploads fail closed or are quarantined, not silently accepted. Next, deploy a test certificate that has already expired and confirm that services refuse the connection instead of falling back to unencrypted traffic. Finally, remove a network policy in a test namespace and confirm that your scan detects the open path and raises a failure. For each case, write down the behavior you observe, then compare it with the behavior openDesk documents. Where the two differ, confirm the intended behavior with the vendor or your architect before you accept the result.

Keep the evidence with the configuration baseline. Store the test commands, expected results, actual outputs, chart and image versions, digests and the date and tester for each run in the same repository as the Helmfile values. A test that is not versioned with the configuration cannot show what was true at a given time. Rerun the full suite after every upgrade and after any change to the ingress, certificates or ClamAV connection, and treat a failed test as a change that needs review. When you ask a partner for a quote, ask for the test report format, the number of test cases included in the scope, and who keeps the suite current after handover.

How to keep openDesk patched after go-live

This recurring sequence keeps an openDesk deployment on a supported release after go-live. Each monthly minor release, and each patch release when one is published, passes through the same review, test, verification and recording steps before it reaches production. The result is a deployment whose versions, signatures, network controls and external services are known and current at every point.

  1. Track monthly minor and patch releases

    The platform owner watches the openDesk release channel for monthly minor releases and on-demand patch releases. Log each release with its version, publication date and the bundled components it touches. Confirm the current Enterprise patch scope with ZenDiS before you rely on it: Enterprise includes SLA-backed 2nd and 3rd level support and patches, while the Community Edition is supported only by the community on openCode with no SLA. Done when every release since the last review has a log entry and an assigned reviewer.

  2. Review release notes for each component

    The platform engineer reads the release notes for every bundled component in the new release, along with the openDesk deployment notes. Each component keeps its own notes, covering Element with Nordeck widgets, CryptPad with diagrams.net, Nextcloud, OX App Suite, XWiki, Nubus, OpenProject, Jitsi and Collabora. Look for security fixes, database migrations, changed Helm values, removed settings and altered network or ingress requirements. Record one disposition per component: no action, configuration change or migration. Done when every component in the release has a recorded disposition signed off by its application owner.

  3. Confirm the upgrade path to the latest minor

    The platform owner checks which minor version is running and compares it with the latest minor, the only version openDesk supports. If the deployment is several minors behind, skipping versions may need intermediate steps, so ask ZenDiS for the required path before planning any change. In-place upgrades between major versions are not guaranteed, so each major release gets its own path review. The output is a written upgrade path that lists each intermediate release and its rollback point. Done when the path is agreed with the vendor or support contact and attached to the change record.

  4. Test the upgrade in a non-production environment

    The platform engineer deploys each step of the path to a non-production environment that matches production: the same Kubernetes version, the same ingress controller, the same external services and, where your policy allows it, a recent restore of production data. Run a Helmfile diff before applying, then test the flows users depend on: sign-in through the identity provider, file sync, mail, chat, documents, video and the office editor. Record failures and the rollback procedure for each step. Done when the test report shows every critical flow passing on the target version and the rollback has been run once.

  5. Re-verify signatures and digests for each release

    The security engineer verifies the new release before anything is applied. Most openDesk Helm charts are signed and validated against GPG keys, so check each chart signature against the published keys. Images are pinned by tag and digest, so confirm that each digest in the release matches the image your registry mirror holds. Verify the cosign signatures on images that openDesk builds. Where a chart or image has no signature, record the gap and the compensating check. Done when a verification record for every chart and image is attached to the change and any unsigned item has an approved exception.

  6. Re-run network policy and ingress checks

    The security engineer compares the new release's network policies and Kubernetes security settings with the baseline and confirms that only the expected flows are open. Check the ingress controller version, whether haproxy-ingress or the deprecated Ingress nginx, along with TLS settings and certificate handling through cert-manager. Then test reachability from inside the cluster to each external service: PostgreSQL, MariaDB, Redis, Memcached, Cassandra, the SMTP relay, ClamAV over ICAP, object storage and the TURN server. Done when the policy diff is reviewed and reachability results show allowed flows succeed and all other traffic is refused.

  7. Update the baseline record

    The platform owner updates the baseline record so it describes the deployment as it now runs. Include the openDesk version, chart and image versions with digests, Kubernetes security settings, network policies, ingress configuration, verification results, the test report and the approver. Store the record in version control next to the Helmfile configuration, and keep the previous baseline so a rollback has a reference point. Done when the change ticket links to the new baseline and the monitoring and backup settings have been checked against it.

  8. Monitor and back up external services after rollout

    The operations team watches monitoring for the external services after each rollout, because a new release can change their load or connection requirements. Review alerts for PostgreSQL, MariaDB, Redis, object storage, the SMTP relay, ClamAV over ICAP and the TURN server during the period after cutover. Confirm that backups of the external databases and object storage completed and that the latest restore test covers the target version. Keep ClamAV signature updates running as part of this check. Done when the post-upgrade review shows no unexplained alerts, backups have completed and the findings are recorded against the change.

Questions buyers ask about openDesk hardening effort and ownership

What does openDesk security hardening cost, and what drives the price?

DeployOpen does not publish a price list. A quote follows from the written scope, so the cost depends on what you ask us to harden. Main drivers: the number of bundled components in scope, the number of environments (test, staging, production), the external services you must configure (PostgreSQL, MariaDB, Redis, ClamAV over ICAP, object storage, SMTP relay, TURN server), how much verification and evidence you want, and the handover depth. One-time work includes the initial hardening, verification and documentation. Recurring work includes re-verifying after each release and patching. Ask any quote to itemize these parts, state its assumptions, list the environments covered, and separate one-time from recurring costs.

How long does openDesk hardening take to complete?

Duration depends on scope and environments, and no fixed timeline applies to every deployment. Hardening work runs longer when more components, environments or external services are in scope, when identity federation must be configured alongside security settings, or when your change windows are limited. Your existing Kubernetes maturity matters as well, since a cluster that lacks network policy support or admission controls adds groundwork. Ask for a written plan with milestones, dependencies on your teams (such as access to the cluster and change approvals), and the review cycles built into the schedule. Treat any single duration figure without these details as incomplete.

What skills does our team need to support hardened openDesk?

Plan for skills across five areas. Kubernetes administration covers cluster upgrades, RBAC and pod security settings. Networking covers network policies and ingress configuration. Identity covers OIDC federation and Keycloak-based user provisioning. Security engineering covers verifying Helm chart signatures (GPG), image digests and cosign signatures. Operations covers the external databases, caches and storage that openDesk expects in production. The area that often gets overlooked is signing key custody: decide who holds the keys used to sign your own built artifacts, where they are stored, how they rotate, and how you recover them. Confirm these choices against your internal key management policy before work starts.

Can a small team harden and run openDesk without outside help?

A small team can do it, but it must cover the full skill set listed above and keep enough people available for patching. The main risk is single points of knowledge. Hardening is usually a bounded project, while operations are continuous. Monthly minor releases and on-demand patch releases mean someone must read release notes, test upgrades and apply changes on a predictable schedule. Many organizations split the work: an outside partner handles the initial hardening and documentation, while the internal team owns daily operations and upgrades. Whichever model you pick, check that at least two people can perform each critical task, and ask any partner to document the configuration in a form your team can maintain.

What changes after each openDesk release, and what must we re-check?

Each release changes the artifacts you verified, so every upgrade needs a repeat of the checks. openDesk plans major releases annually in Q3, minor releases monthly and patch releases on demand. Only the latest minor version is supported, and in-place upgrades between majors are not guaranteed. Skipping several minor versions may require intermediate steps. After each upgrade, re-verify chart signatures, pinned image tags and digests, Kubernetes security settings, network policies, ingress configuration and the antivirus integration. Check release notes for changed component versions, since a new bundled component may need its own review. Record the results so each upgrade leaves evidence behind.

Does openDesk hardening make our deployment pass a compliance audit?

No. DeployOpen prepares systems, controls and evidence for compliance assessments, but it does not issue audit reports, attestations or certifications. Independent auditors and certification bodies make those determinations. Hardening helps you show how controls are implemented, such as signature verification, network segmentation, access settings and patch handling. Ask what evidence a hardening engagement produces, which control areas it maps to, and which items remain your responsibility, such as policy approval and operating records. Before work starts, confirm with your auditor which evidence they will accept and how long they expect it to cover.

Who owns the hardened configuration after the engagement ends?

Ownership should be settled in the written scope before work starts. Typically the client keeps the deployment repository, Helmfile and Helm values, documentation, cluster access and any signing keys, because the deployment runs in your infrastructure. Confirm which files and credentials you will receive, where the configuration is stored, who can change it, and how changes are reviewed. Ask for documentation that explains each setting and why it was chosen, so your team can change it safely after each release. Also confirm whether post-engagement support, upgrades or continuous testing are included, since those are available as retainers and are billed separately from the initial scope.

Which openDesk edition should we harden for production?

ZenDiS recommends openDesk Enterprise Edition for production. Enterprise Edition uses the same open-source core licenses but adds closed-source modules, an Enterprise-only registry and license file, and SLA-backed second and third level support and patches. It is sold as SaaS or for on-premises installation. Enterprise-only features include Nextcloud Enterprise security patches and the Guard app, along with other add-ons listed in the edition documentation. The Community Edition is supported only by the community on openCode with no SLA. Ask your subscription provider to confirm current terms, and make sure the hardening scope reflects which edition and patch channel you run, since patch sources differ between them.

How DeployOpen scopes, hardens and hands over openDesk security work

DeployOpen plans, implements, hardens, documents and supports self-hosted open-source platforms inside the client's own infrastructure, and openDesk security hardening follows the same arc. Work is agreed as a fixed scope in writing before it starts, and ongoing support is available as a retainer.

How we scope

  • We confirm which openDesk release and Helm charts are in use, and which bundled components are in the hardening scope.
  • We map the Kubernetes cluster, ingress controller, cert-manager and external services such as PostgreSQL, MariaDB, Redis and ClamAV over ICAP.
  • The written scope states which checks, configurations and patch processes are included, and which items the client's own team keeps.

How we build

  • We verify GPG signatures on Helm charts and confirm that container images are pinned by tag and digest in the deployment.
  • We apply Kubernetes security settings and network policies to each component, then test that the required traffic still works.
  • We configure ingress and antivirus scanning for uploads, and document each setting so the client can review and reproduce it.

How we hand over

  • The client receives a written record of configuration, verification results and any deviations from the openDesk security documentation.
  • We walk the client's operations team through the patch process for each bundled component, including which license and vendor sources apply.
  • Open findings are listed with owners, so the client knows which items remain under its own control after the engagement closes.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers once the initial hardening is complete.
  • Because openDesk supports only the latest minor version, we can plan hardening checks alongside each monthly minor release.
  • Clients should confirm with ZenDiS whether Enterprise Edition support and patches fit their production requirements before the scope is signed.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.