133 lines
4.1 KiB
Markdown
133 lines
4.1 KiB
Markdown
# oxicloud
|
|
|
|
Ultra-fast, secure & lightweight self-hosted cloud storage — your files, photos, calendars & contacts, all in one place. Built in Rust.
|
|
|
|
## TL;DR
|
|
|
|
```bash
|
|
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:
|
|
|
|
```yaml
|
|
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:
|
|
|
|
```yaml
|
|
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:
|
|
```bash
|
|
kubectl get pvc -n apps-roboces -l app.kubernetes.io/name=oxicloud
|
|
```
|
|
|
|
### Check logs
|
|
```bash
|
|
kubectl logs oxicloud-0 -n apps-roboces
|
|
```
|
|
|
|
### Verify configmap
|
|
```bash
|
|
kubectl get configmap oxicloud-config -n apps-roboces -o yaml
|
|
```
|