Skip to content

Quick Start

Deploy a Minimal Nextcloud Instance

Create a basic Nextcloud instance with a managed database:

apiVersion: k8s.bnerd.com/v1alpha1
kind: NextcloudInstance
metadata:
  name: my-nextcloud
  namespace: default
spec:
  profile: production
  ingress:
    host: nextcloud.example.com
  database:
    managed: true
    type: postgresql
  admin:
    username: admin
    password: secure-password

Apply it:

kubectl apply -f nextcloud.yaml

Check the status:

kubectl get nci my-nextcloud -n default

# Detailed status
kubectl describe nci my-nextcloud -n default

Pool-Based Provisioning (Fast Tenant Onboarding)

For faster provisioning (~30s), use a pool-based approach.

1. Create a NextcloudPool

apiVersion: k8s.bnerd.com/v1alpha1
kind: NextcloudPool
metadata:
  name: default-pool
spec:
  replicas: 5
  instanceNamespacePattern: "*"
  template:
    metadata:
      labels:
        pool: default
    spec:
      profile: production
      database:
        managed: true
        type: postgresql

2. Create a Nextcloud (Tenant Resource)

apiVersion: k8s.bnerd.com/v1alpha1
kind: Nextcloud
metadata:
  name: tenant-cloud
  namespace: tenants
spec:
  poolSelector:
    matchLabels:
      pool: default
  ingress:
    host: tenant.example.com

The operator assigns a pre-provisioned instance from the pool, making the Nextcloud available in seconds.

Status Phases

NextcloudInstance: Pending -> Creating -> Ready | Failed | Updating

Nextcloud (logical): Pending -> Assigning -> Configuring -> Ready | Failed

What's Next