- Created opencloud namespace with Nextcloud 29, PostgreSQL 16, and Redis 7 - Configured Pocket ID OIDC integration with opencloud_admins group - Added andreas.leinen@basicstack.de to opencloud_admins group - Used encrypted hcloud volumes for persistent storage (50Gi data, 10Gi database) - Configured SMTP with mail.basicstack.de for email notifications - Set up DNS A record for opencloud.basicstack.de - Deployed with TLS certificate from Let's Encrypt - Created backup CronJob configuration (requires S3 credentials to activate) All credentials stored as SealedSecrets for security. Co-Authored-By: Paperclip <noreply@paperclip.ing>
2.2 KiB
2.2 KiB
OpenCloud (Nextcloud) Deployment
OpenCloud is a Nextcloud-based cloud collaboration platform deployed at https://opencloud.basicstack.de
Components
- Nextcloud 29: Main application (Apache-based)
- PostgreSQL 16: Database backend
- Redis 7: Caching layer
Authentication
- Pocket ID OIDC Integration
- Client ID:
2f3c0cea-697f-4dbc-9573-6f6e8adfd4b0 - Authorized Group:
opencloud_admins - Users: andreas.leinen@basicstack.de
- Client ID:
Storage
- Database: 10Gi encrypted hcloud volume
- Nextcloud Data: 50Gi encrypted hcloud volume
SMTP Configuration
- Server: mail.basicstack.de:465 (SSL)
- Account: opencloud@basicstack.de
- Credentials stored in
opencloud-smtp-secret(SealedSecret)
Backups
Daily backup configured to Hetzner S3 bucket at 2 AM using restic.
Note: Backup secret opencloud-backup-secret needs to be created with S3 credentials:
access-key: S3 access keysecret-key: S3 secret keyrestic-password: Restic repository encryption password
Deployment Files
opencloud-deployment.yaml: Main application stack (namespace, PVCs, services, ingress)opencloud-db-sealed.yaml: Database credentialsopencloud-admin-sealed.yaml: Nextcloud admin credentialsopencloud-oidc-sealed.yaml: Pocket ID OIDC credentialsopencloud-smtp-sealed.yaml: SMTP credentialsopencloud-backup.yaml: Daily backup CronJob (requires S3 credentials)
Post-Deployment Configuration
After deploying, configure OIDC in Nextcloud:
- Install the "OpenID Connect user backend" app
- Configure the provider:
- Identifier:
PocketID - Client ID: (from sealed secret)
- Client Secret: (from sealed secret)
- Discovery URL:
https://auth.basicstack.de/.well-known/openid-configuration
- Identifier:
Deployment Commands
# Apply all manifests
kubectl apply -f opencloud-deployment.yaml
kubectl apply -f opencloud-db-sealed.yaml
kubectl apply -f opencloud-admin-sealed.yaml
kubectl apply -f opencloud-oidc-sealed.yaml
kubectl apply -f opencloud-smtp-sealed.yaml
# Optional: Apply backup (requires S3 secret first)
# kubectl apply -f opencloud-backup.yaml
DNS
- A record:
opencloud.basicstack.de→178.105.17.239 - TLS certificate managed by cert-manager (Let's Encrypt)