- Added debug mode, structured ConfigMap pattern, and README to all charts - Migrated all flat-structure charts to hierarchical values under chartname key - Fixed templates to use correct hierarchical paths - Renamed helm-rustical key to rustical, added HPA support - Fixed ingress YAML parsing (oxicloud), nested env vars (rustical) - Pushed all normalized charts to OCI registry as 1.0.0+ and updated ArgoCD apps |
||
|---|---|---|
| .. | ||
| templates | ||
| .helmignore | ||
| Chart.yaml | ||
| README.md | ||
| values.yaml | ||
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
Secretcontaining: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.debug.enabled |
bool | false |
Enable debug mode (adds init container for troubleshooting) |
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
Debug Mode
Enable debug mode to troubleshoot issues by adding an init container with a shell:
oxicloud:
debug:
enabled: true
This adds an alpine:3.19 init container with sleep infinity that mounts all volumes and inherits env vars. You can exec into it to inspect the environment:
kubectl exec -it <pod-name> -c debug -- sh
When debug mode is enabled, liveness and readiness probes are disabled to prevent restarts.
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