diff --git a/k8s/OPERATIONS.md b/k8s/OPERATIONS.md index c6eae980..9313967f 100644 --- a/k8s/OPERATIONS.md +++ b/k8s/OPERATIONS.md @@ -76,7 +76,7 @@ node-local or host-mounted data and must be recovered on its owning node. | Release | Delivery | Namespace | URL | Dependencies | Persistence | Backup / restore owner | Data-loss expectation | | ---------------- | ------------ | ----------- | ---------------------------- | ---------------------------------- | ---------------------------------------------- | ------------------------------ | --------------------------------------- | | aly-codes | Kustomize | websites | https://aly.codes | — | none | Git/site build | rebuildable | -| collabora | Kustomize | default | https://collabora.cute.haus | nextcloud | none | configuration only | rebuildable | +| collabora | Docker | Jubilife | https://collabora.cute.haus | nextcloud | none | configuration only | rebuildable | | error-pages | Kustomize | default | internal | traefik | none | Git | rebuildable | | forward-auth | forward-auth | identity | internal | Pocket ID | SOPS secret | SOPS / identity operator | reconfigure clients | | gotenberg | Kustomize | platform | internal | — | none | Git | rebuildable | diff --git a/k8s/flux/apps/collabora/deployment.yaml b/k8s/flux/apps/collabora/deployment.yaml deleted file mode 100644 index 7253ba49..00000000 --- a/k8s/flux/apps/collabora/deployment.yaml +++ /dev/null @@ -1,80 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: collabora - labels: - app: collabora -spec: - replicas: 1 - strategy: - type: Recreate - selector: - matchLabels: - app: collabora - template: - metadata: - labels: - app: collabora - spec: - automountServiceAccountToken: false - enableServiceLinks: false - terminationGracePeriodSeconds: 30 - securityContext: - seccompProfile: - type: RuntimeDefault - tolerations: - - key: node.kubernetes.io/not-ready - operator: Exists - effect: NoExecute - tolerationSeconds: 60 - - key: node.kubernetes.io/unreachable - operator: Exists - effect: NoExecute - tolerationSeconds: 60 - containers: - - name: collabora - image: docker.io/collabora/code:latest@sha256:6b70f91f0b6e9c76f75f162f58ef0a12cf9415d78e14713d33c0318ddc4a2cc0 - imagePullPolicy: IfNotPresent - # MKNOD is required for Collabora's per-document chroot jails. - securityContext: - capabilities: - add: ["MKNOD"] - env: - - name: aliasgroup1 - value: 'https://nextcloud\.cute\.haus' - - name: server_name - value: "collabora.cute.haus" - - name: extra_params - value: "--o:ssl.enable=false --o:ssl.termination=true" - - name: DONT_GEN_SSL_CERT - value: "true" - ports: - - name: http - containerPort: 9980 - resources: - requests: - cpu: "2" - memory: 2Gi - limits: - cpu: "4" - memory: 4Gi - startupProbe: - httpGet: - path: / - port: http - periodSeconds: 5 - failureThreshold: 30 - timeoutSeconds: 5 - livenessProbe: - httpGet: - path: / - port: http - periodSeconds: 60 - timeoutSeconds: 15 - readinessProbe: - httpGet: - path: / - port: http - periodSeconds: 10 - timeoutSeconds: 10 - failureThreshold: 3 diff --git a/k8s/flux/apps/collabora/ingress.yaml b/k8s/flux/apps/collabora/ingress.yaml deleted file mode 100644 index 9dd4a615..00000000 --- a/k8s/flux/apps/collabora/ingress.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: collabora - labels: - app: collabora -spec: - ingressClassName: traefik - tls: - - hosts: - - "collabora.cute.haus" - secretName: cute-haus-tls - rules: - - host: "collabora.cute.haus" - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: collabora - port: - number: 9980 diff --git a/k8s/flux/apps/collabora/kustomization.yaml b/k8s/flux/apps/collabora/kustomization.yaml deleted file mode 100644 index 90c3c573..00000000 --- a/k8s/flux/apps/collabora/kustomization.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -namespace: default -resources: - - deployment.yaml - - ingress.yaml - - service.yaml diff --git a/k8s/flux/apps/collabora/service.yaml b/k8s/flux/apps/collabora/service.yaml deleted file mode 100644 index 3f4cd225..00000000 --- a/k8s/flux/apps/collabora/service.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: collabora - labels: - app: collabora -spec: - type: ClusterIP - selector: - app: collabora - ports: - - name: http - port: 9980 - targetPort: http diff --git a/k8s/flux/apps/kustomization.yaml b/k8s/flux/apps/kustomization.yaml index f71c106b..cf429da2 100644 --- a/k8s/flux/apps/kustomization.yaml +++ b/k8s/flux/apps/kustomization.yaml @@ -2,7 +2,6 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - aly-codes - - collabora - error-pages - forward-auth.yaml - morsels.yaml diff --git a/k8s/flux/external-routes/external-routes.yaml b/k8s/flux/external-routes/external-routes.yaml index 55a7e006..08043756 100644 --- a/k8s/flux/external-routes/external-routes.yaml +++ b/k8s/flux/external-routes/external-routes.yaml @@ -49,6 +49,13 @@ spec: port: 8081 tls: secretName: cute-haus-tls + - name: collabora + host: collabora.cute.haus + target: + ip: 10.254.0.1 + port: 9980 + tls: + secretName: cute-haus-tls - name: slingshot host: slingshot.cute.haus target: diff --git a/nix/modules/hosts/nixos/jubilife/containers.nix b/nix/modules/hosts/nixos/jubilife/containers.nix index 0bc7355e..b94e5421 100644 --- a/nix/modules/hosts/nixos/jubilife/containers.nix +++ b/nix/modules/hosts/nixos/jubilife/containers.nix @@ -172,6 +172,21 @@ _: { ports = ["10.254.0.1:8765:8080"]; }; + collabora = { + image = "docker.io/collabora/code:latest@sha256:6b70f91f0b6e9c76f75f162f58ef0a12cf9415d78e14713d33c0318ddc4a2cc0"; + environment = { + DONT_GEN_SSL_CERT = "true"; + aliasgroup1 = "https://nextcloud\\.cute\\.haus"; + extra_params = "--o:ssl.enable=false --o:ssl.termination=true"; + server_name = "collabora.cute.haus"; + }; + extraOptions = [ + "--cap-add=MKNOD" + "--memory=4g" + ]; + ports = ["10.254.0.1:9980:9980"]; + }; + immich-postgres = { image = "ghcr.io/immich-app/postgres:17-vectorchord0.4.3-pgvector0.8.0@sha256:0baf4cde9b54d8d7dc6a6ad8d8c43c3c6b884f82e1c2a023d571414820e39336"; networks = ["immich"]; @@ -338,6 +353,7 @@ _: { systemd.services = { docker-dizquetv.unitConfig.RequiresMountsFor = ["/mnt/Data"]; + docker-collabora.unitConfig.RequiresMountsFor = ["/mnt/Data"]; docker-plex.unitConfig.RequiresMountsFor = [ "/mnt/Data"