Infrastructure and secrets complete, needs configuration initialization. Created: - Complete Kubernetes manifests (deployment, service, ingress, PVC) - SealedSecrets for OIDC, SMTP, JWT, and core configuration - Base opencloud.yaml ConfigMap with bash substitution - Pocket ID integration (client + opencloud_admins group) - DNS configured (opencloud.basicstack.de) Status: Blocked on OpenCloud initialization - OpenCloud requires comprehensive config from 'opencloud init' - Manual environment variable configuration insufficient - Multiple interdependent service configurations needed - See IMPLEMENTATION_STATUS.md for details and next steps Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
5.1 KiB
OpenCloud Implementation Status
Date: 2026-07-04
Status: Blocked - Initialization Required
What We've Built
Infrastructure (✓ Complete)
- Namespace:
opencloud - PersistentVolumeClaim: 100Gi encrypted hcloud volume
- Service: ClusterIP on port 9200
- Ingress: opencloud.basicstack.de with TLS (cert-manager)
- DNS: A record configured
Secrets (✓ Complete)
All credentials stored as SealedSecrets:
opencloud-oidc-secret- Pocket ID OIDC credentialsopencloud-smtp-secret- SMTP credentials for notificationsopencloud-jwt-secret- JWT token signing secretopencloud-config-secrets- Core OpenCloud secrets (machine auth, transfer secret, etc.)
Pocket ID Integration (✓ Complete)
- Client ID:
2f3c0cea-697f-4dbc-9573-6f6e8adfd4b0 - Group:
opencloud_admins - User: andreas.leinen@basicstack.de added to group
- Issuer: https://auth.basicstack.de
Configuration Progress (⚠️ Partial)
We've created:
- Base
opencloud.yamlConfigMap with bash substitution for secrets - Deployment with environment variable overrides
- Proper security contexts (runAsUser: 1000, fsGroup: 1000)
The Problem
OpenCloud requires a comprehensive initialization configuration generated by opencloud init. Manual configuration via environment variables is insufficient because:
-
Complex Service Dependencies: OpenCloud consists of multiple microservices (IDM, Storage, Gateway, OCM, Graph, Proxy, etc.) that each require:
- Service account IDs (UUIDs)
- Service account secrets
- Inter-service authentication credentials
-
Initialization Cascade: Each configuration fix reveals new required settings:
- JWT secret → Storage mount ID → IDM password → Service account ID → OCM config → ...
-
Documentation Gap: The official documentation describes the config system but doesn't provide complete examples of all required fields for a minimal working deployment.
Solutions Considered
1. Manual Environment Variables (Current Approach - Incomplete)
Status: Attempted but insufficient
Blocker: Too many interdependent configuration items
2. Use opencloud init in Init Container
Status: Not yet implemented
Challenge: Need to:
- Run
opencloud initto generate complete config - Extract the generated
opencloud.yaml - Merge it with our security secrets (from SealedSecrets)
- Mount the final config
Implementation Approach:
initContainers:
- name: generate-config
image: quay.io/opencloudeu/opencloud:7.2.0
command: ["/bin/sh", "-c"]
args:
- |
# Generate base config
opencloud init --insecure true --force-overwrite
# Apply secret overrides via sed/yq
# (JWT, machine_auth, etc. from environment)
# Copy to shared volume
cp /etc/opencloud/*.yaml /config-out/
volumeMounts:
- name: config-volume
mountPath: /config-out
3. Fork Official Helm Charts
Status: Not feasible
Reason: Official charts are archived, production versions require business subscription
4. Switch to Alternative (Not Chosen)
User explicitly wants OpenCloud, not Nextcloud or ownCloud
Recommended Next Steps
-
Complete Configuration Initialization:
# Run opencloud init locally to generate complete config docker run --rm \ -v ./config:/etc/opencloud \ quay.io/opencloudeu/opencloud:7.2.0 \ opencloud init --insecure true # Review generated opencloud.yaml # Extract all required configuration keys # Add them to our ConfigMap with bash substitution for secrets -
Update ConfigMap with complete configuration structure from
opencloud initoutput -
Test Deployment with complete configuration
-
Configure Backup to Hetzner bucket (once deployment is stable)
Current Errors
Latest pod error:
The service account id has not been configured for ocm.
Make sure your /etc/opencloud config contains the proper values
(e.g. by using 'opencloud init --diff' and applying the patch
or setting a value manually in the config/corresponding environment variable).
Previous errors (now resolved):
- ✓ JWT secret not set
- ✓ Storage users mount ID not configured
- ✓ IDM service user password not set
- ✓ Service account ID for storage-users not configured
Files Created
opencloud-deployment.yaml- Main Kubernetes deploymentopencloud-configmap.yaml- Base configuration with bash substitutionopencloud-config-sealed.yaml- Core secrets (sealed)opencloud-oidc-sealed.yaml- OIDC credentials (sealed)opencloud-smtp-sealed.yaml- SMTP credentials (sealed)opencloud-jwt-sealed.yaml- JWT secret (sealed)seal-config-secrets.sh- Helper script for sealing secretsREADME.md- Deployment documentationIMPLEMENTATION_STATUS.md- This file
References
- OpenCloud Configuration System: https://docs.opencloud.eu/docs/next/dev/server/configuration/config-system/
- Installation Guide (German): https://tech-support.koeln/de/blog/opencloud-vs-nextcloud-ersteindruck-und-installation
- GitHub Repository: https://github.com/opencloud-eu/opencloud