OpenCloud deployment attempt - blocked on configuration complexity

- Created namespace, PVC, secrets, and ingress for OpenCloud
- Pods crash-looping due to JWT configuration requirement
- OpenCloud requires init-generated config files, not just env vars
- Official Helm charts archived, production charts require subscription
- Pocket ID client and group ready for use
- DNS configured for opencloud.basicstack.de

Deployment incomplete - awaiting guidance on whether to:
1. Deep-dive into OpenCloud config file structure
2. Use archived community Helm charts (unstable)
3. Switch to alternative like Nextcloud/ownCloud

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
CTO Agent 2026-07-04 18:59:33 +00:00
parent 4af26bf2da
commit de965ac33f
5 changed files with 339 additions and 0 deletions

53
apps/opencloud/README.md Normal file
View file

@ -0,0 +1,53 @@
# OpenCloud Deployment - INCOMPLETE
**Status:** Blocked - Configuration complexity issues
## Overview
Attempted deployment of OpenCloud (github.com/opencloud-eu/opencloud) v7.2.0, a modern Go-based file sharing platform.
## What's Deployed
- ✓ Namespace: `opencloud`
- ✓ PVC: 100Gi encrypted hcloud volume (bound)
- ✓ Sealed Secrets: OIDC, SMTP, JWT credentials
- ✓ Ingress: opencloud.basicstack.de with TLS
- ✓ Service and Deployment manifests
- ✗ Pods: Crash-looping due to configuration issues
## Configuration Challenge
OpenCloud requires proper initialization with `opencloud init` to generate configuration files. Environment variable configuration alone is insufficient for the JWT secret and other core settings.
Error: `The jwt_secret has not been set properly in your config for opencloud`
## Official Helm Charts Status
The official Helm charts repository (github.com/opencloud-eu/helm) has been **archived** due to:
- "High amount of AI generated contributions and poor maintenance"
- Production-ready charts now require a business subscription from OpenCloud GmbH
Community charts are marked as:
- Version 0.x.x (unstable)
- Not officially supported
- "Use at your own risk"
## Pocket ID Integration (Ready)
- Client ID: `2f3c0cea-697f-4dbc-9573-6f6e8adfd4b0`
- Group: `opencloud_admins`
- User: andreas.leinen@basicstack.de
## Alternative Options
1. **Nextcloud** - Previously deployed successfully with full OIDC integration
2. **ownCloud** - Similar features, better documentation
3. **FileBrowser** - Simpler alternative
4. **OpenCloud Enterprise** - Contact sales@opencloud.eu for production Helm charts
## Files
- `opencloud-deployment.yaml` - Kubernetes manifests (incomplete)
- `opencloud-oidc-sealed.yaml` - OIDC credentials
- `opencloud-smtp-sealed.yaml` - SMTP credentials
- `opencloud-jwt-sealed.yaml` - JWT secret

View file

@ -0,0 +1,239 @@
---
apiVersion: v1
kind: Namespace
metadata:
name: opencloud
---
# OpenCloud Data Storage
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: opencloud-data
namespace: opencloud
spec:
accessModes:
- ReadWriteOnce
storageClassName: hcloud-volumes-encrypted
resources:
requests:
storage: 100Gi
---
# OpenCloud Service
apiVersion: v1
kind: Service
metadata:
name: opencloud
namespace: opencloud
spec:
type: ClusterIP
selector:
app: opencloud
ports:
- name: http
port: 9200
targetPort: 9200
protocol: TCP
---
# OpenCloud Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: opencloud
namespace: opencloud
spec:
replicas: 1
selector:
matchLabels:
app: opencloud
template:
metadata:
labels:
app: opencloud
spec:
securityContext:
fsGroup: 1000
runAsUser: 1000
runAsNonRoot: true
initContainers:
- name: init-config
image: quay.io/opencloudeu/opencloud:7.2.0
command:
- sh
- -c
- |
mkdir -p /var/lib/opencloud/config
mkdir -p /var/lib/opencloud/data
cd /var/lib/opencloud
/usr/bin/opencloud init --insecure true || true
env:
- name: OPENCLOUD_BASE_DATA_PATH
value: "/var/lib/opencloud"
- name: OPENCLOUD_CONFIG_DIR
value: "/var/lib/opencloud/config"
- name: OPENCLOUD_JWT_SECRET
valueFrom:
secretKeyRef:
name: opencloud-jwt-secret
key: jwt-secret
volumeMounts:
- name: opencloud-data
mountPath: /var/lib/opencloud
securityContext:
runAsUser: 1000
runAsGroup: 1000
runAsNonRoot: true
containers:
- name: opencloud
image: quay.io/opencloudeu/opencloud:7.2.0
env:
# Basic configuration
- name: OPENCLOUD_URL
value: "https://opencloud.basicstack.de"
- name: OPENCLOUD_LOG_LEVEL
value: "info"
- name: OPENCLOUD_LOG_PRETTY
value: "false"
- name: OPENCLOUD_LOG_COLOR
value: "false"
# Data paths
- name: OPENCLOUD_BASE_DATA_PATH
value: "/var/lib/opencloud"
- name: OPENCLOUD_CONFIG_DIR
value: "/var/lib/opencloud/config"
# JWT Secret for token signing
- name: OPENCLOUD_JWT_SECRET
valueFrom:
secretKeyRef:
name: opencloud-jwt-secret
key: jwt-secret
- name: PROXY_JWT_SECRET
valueFrom:
secretKeyRef:
name: opencloud-jwt-secret
key: jwt-secret
# OIDC Configuration
- name: PROXY_OIDC_ISSUER
value: "https://auth.basicstack.de"
- name: OPENCLOUD_OIDC_ISSUER
value: "https://auth.basicstack.de"
- name: PROXY_OIDC_INSECURE
value: "false"
- name: OPENCLOUD_OIDC_INSECURE
value: "false"
- name: PROXY_USER_OIDC_CLAIM
value: "preferred_username"
- name: PROXY_USER_CS3_CLAIM
value: "username"
# OIDC Client Credentials
- name: PROXY_OIDC_CLIENT_ID
valueFrom:
secretKeyRef:
name: opencloud-oidc-secret
key: oidc-client-id
- name: PROXY_OIDC_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: opencloud-oidc-secret
key: oidc-client-secret
# SMTP Configuration
- name: NOTIFICATIONS_SMTP_HOST
value: "mail.basicstack.de"
- name: NOTIFICATIONS_SMTP_PORT
value: "465"
- name: NOTIFICATIONS_SMTP_SENDER
valueFrom:
secretKeyRef:
name: opencloud-smtp-secret
key: smtp-username
- name: NOTIFICATIONS_SMTP_USERNAME
valueFrom:
secretKeyRef:
name: opencloud-smtp-secret
key: smtp-username
- name: NOTIFICATIONS_SMTP_PASSWORD
valueFrom:
secretKeyRef:
name: opencloud-smtp-secret
key: smtp-password
- name: NOTIFICATIONS_SMTP_INSECURE
value: "false"
- name: NOTIFICATIONS_SMTP_AUTHENTICATION
value: "login"
- name: NOTIFICATIONS_SMTP_ENCRYPTION
value: "ssl"
# Demo users disabled (use OIDC only)
- name: IDM_CREATE_DEMO_USERS
value: "false"
- name: PROXY_ENABLE_BASIC_AUTH
value: "false"
# Admin user from OIDC
- name: GRAPH_ASSIGN_DEFAULT_USER_ROLE
value: "false"
- name: GRAPH_USERNAME_MATCH
value: "none"
ports:
- containerPort: 9200
name: http
volumeMounts:
- name: opencloud-data
mountPath: /var/lib/opencloud
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "2Gi"
cpu: "1000m"
livenessProbe:
httpGet:
path: /status.php
port: 9200
initialDelaySeconds: 60
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 5
readinessProbe:
httpGet:
path: /status.php
port: 9200
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
volumes:
- name: opencloud-data
persistentVolumeClaim:
claimName: opencloud-data
---
# Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: opencloud
namespace: opencloud
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
ingressClassName: traefik
tls:
- hosts:
- opencloud.basicstack.de
secretName: opencloud-tls
rules:
- host: opencloud.basicstack.de
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: opencloud
port:
number: 9200

View file

@ -0,0 +1,15 @@
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
creationTimestamp: null
name: opencloud-jwt-secret
namespace: opencloud
spec:
encryptedData:
jwt-secret: AgB80ygsfWK+rNHpD7sbqIPCPSlvPaUUv3Y+PWTOAp560BiCDtoMfyiTUYyDokiIqhJu+x02qWhHMdf3jvOQFHFJ6QmI7NB7aE6nqksEviqj3KjdznXQ84kop19kbDh/m/e85ob7N+0+U5FMNm4wCQMmZWRY1k1i1nxJd5OmMveuRHQeTuOGxtJfJ5oLZDS4Mw/llGxstvyB6BrORu3dotd53SZ56BISloRFfV47qPtGXdCajyAMFgZzjr/Rxo0ucnzseUs5B9z4wu5jAaUCVe4iIaP7XL2zFdEGsLx0GBj/4xvBCdFybebHm4oNZrgRexbfhZ4k5kO+bgfQgfzxbg/A33LVIdh8kDThzXTBJyd52KOjnGE0n/85pyeL7SFxpO+YJQkM4O8G8+b+HZmhDvEjzxFX8eu0KtkyrvFkhPNL48Zd1XcDTGnv5oVQONWq5UdMkeo0an3KzfZ8M8LdyT6Ma1jeL5VyRzk8bmjC1F5fcGNLVJiqubNIY+N4T+lrFeTIIEnQTLKMqjQViEKPJYNF678TrARHvI1h+KnQ3mM1GWmstiac4Cvyt7QIfxVh1VBg31tupPpn8z8cFMNikw9Yu4vU2dVu7GdT5sEc6LrkEQZ9RCIXDIepzTPmTk2rTn81gsKw4V1LzY26nVz0Xy1huG/xDbsWNd4Lkt6ZOKC8LKekHsnqWNSPAyCBArtBVGKoKmGn/A/v0WURbg+m13AgtpIFYo0TIUpED82SeZRFqe0iLBKI7wIjya5VFg==
template:
metadata:
creationTimestamp: null
name: opencloud-jwt-secret
namespace: opencloud
---

View file

@ -0,0 +1,16 @@
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
creationTimestamp: null
name: opencloud-oidc-secret
namespace: opencloud
spec:
encryptedData:
oidc-client-id: AgCLD/CqtD3RL+lEWbUJRcpSD8y7LYIl8XD/7Ct9PaOVNALax5xmqGCMWmz3JCrsbejlvax4uDIUn42b2MGoMo0ULauheBp857ex7rraRsTJnsG4GIhgGr9+krDkR1ptdTq5H7ocOGon0WsGbZ82U9Ub+m13WNJmBXCGFkbFOTCR1+N9/Gc5UZsSPF99mUdfnfPsRt0n7TdHwZSGtWnxfqz35aTSvt9PZrC6fysoPLV/Diiz5Y+BR0R2UJWGAQaLezB1hTe+AqSNrDnjIT1cuyfS/xEBzOQp6U0pcnZaPLo2u2LbNv+m0aN67632y7nra1LbglDKnDJpnU3O2NVvZMtVL7O5BRuIk/WdyV4e6vxhPlyWIcwkBwKwdu4xa5wyOvf3w1X0W2mOMTmtGy6tvHFK37VuAOUknY+njnpAJQAzwC/VNUXOyyUBpbc32A75rSuTsEfvekNVKjH8XLkVOnvvPIUaZnDWeQ0V3Pm1l0DMpVyJdUJz9A+xc/rltcpKj//4QS3FojAlehkhHW1m7QONAqBOXs48SfGaCb57eZKHvHRPgNLRJq7f3Zt7DoTvJTZuNYiV6xyYqSqwf5w/UfyKRq9v7y6LCQpW0U9gCFySAnqeUNrdGPLScuCnR5c6rG7u5vartQhqGH5IBdmiUNZolLazrbqOoTEwNjQGhsUi8Rqg+Lwjz0EjHeWBdAAhRL+MKerWE5VtpjeFDT7ncZEziKabTqiy0MxuWq5Z9YAG1fH0YmA=
oidc-client-secret: AgCk1mdblRMrL3LCAB8nZHjuMktMOvLBkHpt+kQbJ6saGUcMuOeJz3RQ0i5t/0f9CeuL7bb8CSXvw4dSn2AzHoS0lHDC2QhwhVxD/LmiR8+7akOR9EdQTqg2s/NdUEGBpOdBn3V+eADgMaUT0Ho7IOO3OfqX0N4MhefzTdzyGh5ilMUgJzlWvaifjfC+CNAR6US6BwvtQgWzb2bql7qUCe4zVjf8nt9vbufTPf9mshVWhHHRMMQapa/APUWj2kRx23uegAZwmheLhXTtqwWXx+HtqRXqNXOcjaSFZzmX7Qw08KUBj96YBlym4b09WGiHYcmT2ZG+993J1qf+k3Yo55IJlXeY0PGiaeWkMvOC02kdeGylnuBEyMHQkx/WUG8HhcrF+odeSKCnKu0JvGc1jA5Mm9Wvvz0TYxQ7JsULZQK3fAgoeNWM9wAWYyIGsyfoEpy3tyAfvX1YHDFPWqJZ1nxFZ+pUtwU1z0M5FGRf5OAjzHV/Y/hNZsDTd00uO9YHlSwfvLnu518JNXixWnz1tpQngwKh4iBAgRLpVH9ncOe9WwF413EoV/aVtIZmx7fS0YQ33Clw+C02Ql6SmMiHzkOlOHzhPglhJbia5wwsG90JVmYJLHYND2swghPX7dLug5ZYGqYG82Wzi2gvExsWsIxogpJTsEs6qivIAjz+qd5lrwMpwY6A/ClkAe6akZVCm6n3FVaEd8b32OwxwQLyZChlAXWNhEyXm+l4Ts9oEuP1sw==
template:
metadata:
creationTimestamp: null
name: opencloud-oidc-secret
namespace: opencloud
---

View file

@ -0,0 +1,16 @@
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
creationTimestamp: null
name: opencloud-smtp-secret
namespace: opencloud
spec:
encryptedData:
smtp-password: AgA9QxDLju4SpcndkNS0gRd+WMNti5xG25Wr/N71zd84DFF6XZmBdswfQ2ziIeAFOfdJ1UCiDgym0Zu63HFhZQtzxwtd5q4PlVT3b0nEu8cl8rFbGf29MEROd8i5dIgxsa85mZrkTFrTHuyEYm9beE8+CYufvyKMkFqJ3OkAI6A2/lBoi2y3dllRpVrCDdzBia/N+yfmOhkwUhyb3ZN/gqptM/fE/NzqXyCsuRwmeABKWB/2Dc/gck4zDPE52E25uTu2VBgMlQwQqtkTh405tPozs28subu0PJsXc7/QM0arTrUCwKLYfwtsyQfzPtUAmbTpcioYCNrL+zDl1wXtk+dfD9hVopH/hTPeTG4EWlc4sVh2GMnAbgL+mG5PTB6qBnyQh3piww57ZpTGWXvFxdfP2PpDrxhlcIIlGXda2eAWCBLheWQ2iBeXDvtqhZ+8zEkR78MHOLhaTmrSnjzoWV6BMJ2lfqVc0WSwpvV+0+1xxsvvMKHJ25SSaF7EOI+GhyQvruICHkdg5jfGtJ+Fg0pYtp5r8UeqFRsk2dBB7WgywM5fbl3ki3yAiEJygFZMzvknttdG/vXLMu1vbGjSadT9Stpy7EIzrnNS0iV2tO4Qdgt54pJKfTbNaL5l753odvXTq0Murw04OUPYWKeS4mBzCZkiHqUUz8z6tjRcUTMZCWF0Mqn/AjT1nFTWfLv6pAK1Hy9QI9RitI+lqkTOogTspNZ1tPn3z6yZaD+iaPtswYdv1hNBdX9/EjU7+CTEb1/q/hcqY9G5kSH31sXLeu4=
smtp-username: AgCaa5fp0H0Cj2RCcIEspQcif1KYNw4SZlY60cPhWb76uUiejD4Rc8+8JDr4t79I7nrcZcaPyWOKozsqzcup9WO1wgUXh7ZS8q/LQLXHJx5onAKpy+GWM81Z0hqoC8hV87nJi11FoHri2IEjGdmU9PLJ5lTal+cXa7137yEi5fvN3o+kHQ5R2py+IRmPsKemCQFQ09VSvuMVfEkPf08VnxqLZU9WFkPkUM9Nq6uVFIsrC4KezkNHBXzIJgIvaxgM3qDpW+A8x7mp32lGZpJW2Thd+0wFJLYnhOJ1PHTrFlx+AOLi0GJL/6IiFQT6B/mIUr9nW4N+okaSI70uZvDcgTRzKfC9DGtS8725MvX3gCh/y/lk+uuWFeom3xnrwjVpv+XnpiBQjhHuVA94YsQYOroskQtZb/+Wt7eQn2Vr7QhyK8ITLuXowc4dBS9zLpjC33rVMmzZ8AyodIxKB/q7zO9TH0grHQfES+UetzB1urvYHLzKsd/ppR+deoTXXKPgMX+AFUoKTGCqsvR4G+73A9voJ4oZRm02Y441+tnDAlJWj4RXKOKxQTqQpWnY56NMkdjK4bCe2LgecMa8VWad1L+ysN75+YKHzbjIj8cYXX+rFsX59Iuj4Wr9ccS5CyZvlsXY5URZv1gl6B4WPJX6LLbshGF5d8EQ3htKyQGznysZq0lky6DXw3aTpemU/hHLY7kPIKpPjxEf0VvD3Eg4/Jw+ApnhiAqIjw==
template:
metadata:
creationTimestamp: null
name: opencloud-smtp-secret
namespace: opencloud
---