diff --git a/flux2/cluster/optional/nextcloud/nextcloud.yaml b/flux2/cluster/optional/nextcloud/nextcloud.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e09fbd14abbac271ed0ec945566e272a06eeaa38
--- /dev/null
+++ b/flux2/cluster/optional/nextcloud/nextcloud.yaml
@@ -0,0 +1,30 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta1
+kind: Kustomization
+metadata:
+  name: nextcloud
+  namespace: flux-system
+spec:
+  interval: 1h
+  dependsOn:
+    - name: core
+    - name: infrastructure
+  sourceRef:
+    kind: GitRepository
+    name: openappstack
+  path: ./flux2/apps/nextcloud
+  prune: true
+  validation: client
+  # healthChecks:
+  #   - apiVersion: helm.toolkit.fluxcd.io/v1beta1
+  #     kind: HelmRelease
+  #     name: podinfo
+  #     namespace: podinfo
+  postBuild:
+    substituteFrom:
+      - kind: Secret
+        name: oas-nextcloud-variables
+      - kind: Secret
+        name: oas-oauth-variables
+      - kind: Secret
+        name: oas-cluster-variables
diff --git a/flux2/cluster/optional/rocketchat/rocketchat.yaml b/flux2/cluster/optional/rocketchat/rocketchat.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c3cd0c2d68c2443921be4d9f83d7e4b2b20d0dd9
--- /dev/null
+++ b/flux2/cluster/optional/rocketchat/rocketchat.yaml
@@ -0,0 +1,30 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta1
+kind: Kustomization
+metadata:
+  name: rocketchat
+  namespace: flux-system
+spec:
+  interval: 1h
+  dependsOn:
+    - name: core
+    - name: infrastructure
+  sourceRef:
+    kind: GitRepository
+    name: openappstack
+  path: ./flux2/apps/rocketchat
+  prune: true
+  validation: client
+  # healthChecks:
+  #   - apiVersion: helm.toolkit.fluxcd.io/v1beta1
+  #     kind: HelmRelease
+  #     name: podinfo
+  #     namespace: podinfo
+  postBuild:
+    substituteFrom:
+      - kind: Secret
+        name: oas-rocketchat-variables
+      - kind: Secret
+        name: oas-oauth-variables
+      - kind: Secret
+        name: oas-cluster-variables
diff --git a/flux2/cluster/optional/velero/velero.yaml b/flux2/cluster/optional/velero/velero.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ac446403455e881b5c0a447d4c75de06a8801162
--- /dev/null
+++ b/flux2/cluster/optional/velero/velero.yaml
@@ -0,0 +1,26 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta1
+kind: Kustomization
+metadata:
+  name: velero
+  namespace: flux-system
+spec:
+  interval: 1h
+  dependsOn:
+    - name: core
+    - name: infrastructure
+  sourceRef:
+    kind: GitRepository
+    name: openappstack
+  path: ./flux2/apps/velero
+  prune: true
+  validation: client
+  # healthChecks:
+  #   - apiVersion: helm.toolkit.fluxcd.io/v1beta1
+  #     kind: HelmRelease
+  #     name: podinfo
+  #     namespace: podinfo
+  postBuild:
+    substituteFrom:
+      - kind: Secret
+        name: oas-cluster-variables
diff --git a/flux2/cluster/optional/wordpress/wordpress.yaml b/flux2/cluster/optional/wordpress/wordpress.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f6017a0999fb19a4930bbe6d98b921121ee7140e
--- /dev/null
+++ b/flux2/cluster/optional/wordpress/wordpress.yaml
@@ -0,0 +1,25 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta1
+kind: Kustomization
+metadata:
+  name: wordpress
+  namespace: flux-system
+spec:
+  interval: 1h
+  dependsOn:
+    - name: core
+    - name: infrastructure
+  sourceRef:
+    kind: GitRepository
+    name: openappstack
+  path: ./flux2/apps/wordpress
+  prune: true
+  validation: client
+  postBuild:
+    substituteFrom:
+      - kind: Secret
+        name: oas-wordpress-variables
+      - kind: Secret
+        name: oas-oauth-variables
+      - kind: Secret
+        name: oas-cluster-variables