fukuops/k8s/charts/oxicloud/README.md

4.1 KiB

oxicloud

Ultra-fast, secure & lightweight self-hosted cloud storage — your files, photos, calendars & contacts, all in one place. Built in Rust.

TL;DR

helm install oxicloud oci://git.roboces.dev/catalin/fukuops/oxicloud --version 1.0.0 -n apps-roboces

Prerequisites

  • Kubernetes 1.19+
  • Helm 3+
  • A NFS storage class (default: truenas-nfs-csi)
  • An existing Secret containing:
    • OXICLOUD_JWT_SECRET (optional - generated if not provided)

Configuration

All values are nested under the oxicloud: key. Example:

oxicloud:
  persistence:
    enabled: true
    storageClass: "truenas-nfs-csi"
    accessMode: ReadWriteMany
    size: 50Gi
  service:
    type: LoadBalancer
    port: 8086
  config:
    server:
      port: 8086
      host: "0.0.0.0"
      baseUrl: "https://cloud.example.com"
    features:
      enableAuth: true
      enableSharing: true
  secret:
    existingSecretName: oxicloud
  wopi:
    enabled: false
  ingress:
    enabled: true
    className: "traefik"
    hosts:
      - host: cloud.example.com
        paths:
          - path: /
            pathType: ImplementationSpecific

Values Reference

Key Type Default Description
oxicloud.replicaCount int 1 Number of replicas
oxicloud.image.repository string diocrafts/oxicloud Image repository
oxicloud.image.pullPolicy string Always Image pull policy
oxicloud.image.tag string .Chart.AppVersion Image tag
oxicloud.service.type string LoadBalancer Service type
oxicloud.service.port int 8086 Service port
oxicloud.config.server.port int 8086 Server port
oxicloud.config.server.host string 0.0.0.0 Server host
oxicloud.config.server.baseUrl string https://cloud.example.com Public base URL
oxicloud.config.features.enableAuth bool true Enable authentication
oxicloud.config.features.enableSharing bool true Enable file sharing
oxicloud.persistence.enabled bool true Enable persistence
oxicloud.persistence.storageClass string "" Storage class
oxicloud.persistence.accessMode string ReadWriteOnce Access mode
oxicloud.persistence.size string 50Gi PVC size
oxicloud.secret.existingSecretName string "" Existing secret name
oxicloud.wopi.enabled bool false Enable WOPI/Collabora integration
oxicloud.ingress.enabled bool false Enable ingress
oxicloud.ingress.className string "" Ingress class
oxicloud.resources object {} Container resources
oxicloud.livenessProbe object (see values.yaml) Liveness probe
oxicloud.readinessProbe object (see values.yaml) Readiness probe

WOPI/Collabora

WOPI integration is disabled by default. To enable it:

oxicloud:
  wopi:
    enabled: true
    collabora:
      url: "cloud.example.com"
      domain: "cloud.example.com"
      image:
        repository: collabora/code
        tag: latest
      service:
        port: 9980
      admin:
        existingSecretName: "collabora-admin"

When enabling WOPI, you must provide an existing Secret containing WOPI_ADMIN_USERNAME and WOPI_ADMIN_PASSWORD keys.

Persistence

The chart creates a StatefulSet with a PVC named oxicloud-data. The PVC uses the truenas-nfs-csi storage class by default (when not specified).

Secret Management

The chart looks for an existing Secret with the name specified in oxicloud.secret.existingSecretName. If not provided, a chart-managed secret will be created (only if additional secrets are needed).

Required secret keys depend on configuration:

  • OXICLOUD_JWT_SECRET - JWT signing secret (recommended)
  • WOPI_ADMIN_USERNAME / WOPI_ADMIN_PASSWORD - Collabora admin credentials (when WOPI enabled)

Troubleshooting

Pod not starting

Check if the PVC is bound:

kubectl get pvc -n apps-roboces -l app.kubernetes.io/name=oxicloud

Check logs

kubectl logs oxicloud-0 -n apps-roboces

Verify configmap

kubectl get configmap oxicloud-config -n apps-roboces -o yaml