Files
Oxicloud/docs/config/deployment.md
T
Diocrafts f08cffc0e8 feat: add VitePress docs site, music file picker modal, Dockerfile optimization, i18n keys for 14 locales
- Add docs/ with VitePress site (19 pages): guide, config, architecture, FAQ
- Add GitHub Actions workflow for auto-deploy to GitHub Pages
- Replace music 'Add Tracks' upload picker with in-app audio file browser modal
- Add music picker CSS styles with dark theme support
- Add missing i18n keys (search_audio, no_audio_files, etc.) to all 14 locales
- Optimize Dockerfile: shared base stage, COPY --chmod, consolidated RUN, HEALTHCHECK
- Improve README: docs links, updated stats (222+ tests, 14 languages), feature status
2026-04-11 20:58:34 +02:00

2.4 KiB

Deployment & Docker

Docker Image

OxiCloud uses a multi-stage Alpine build producing a ~40 MB image:

  1. Base — shared build dependencies (musl-dev, pkgconfig, openssl-dev, libpq-dev)
  2. Cacher — pre-builds the dependency layer for fast rebuilds
  3. Builder — compiles OxiCloud (rust:1.94.0-alpine3.23)
  4. Runtime — minimal Alpine (alpine:3.23.3) with libgcc, ca-certificates, libpq, tzdata, su-exec

The final image runs as non-root user oxicloud (UID/GID 1001). Exposed port: 8086.

Docker Compose

services:
  postgres:
    image: postgres:17.4-alpine
    environment:
      POSTGRES_DB: oxicloud
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres       # change in production!
    volumes:
      - pg_data:/var/lib/postgresql/data
      - ./db/schema.sql:/docker-entrypoint-initdb.d/schema.sql
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

  oxicloud:
    image: ghcr.io/diocrafts/oxicloud:latest
    ports:
      - "8086:8086"
    env_file:
      - .env
    volumes:
      - storage_data:/app/storage
    depends_on:
      postgres:
        condition: service_healthy

volumes:
  pg_data:
  storage_data:

Kubernetes (Helm)

Prerequisites

  • Kubernetes cluster
  • Default StorageClass
  • Ingress Controller
  • Helm 3+

Install

helm upgrade --install oxicloud charts/oxicloud \
  -f charts/oxicloud/values.yaml

Verify

kubectl get pods -n oxicloud
kubectl logs statefulset/oxicloud -n oxicloud

WOPI Verification

If Collabora/OnlyOffice is enabled:

kubectl logs statefulset/oxicloud -n oxicloud | grep "WOPI discovery loaded"

Feature Dependency Matrix

Feature Requires DB Requires Auth Feature Flag
File storage Yes No Always on
Authentication Yes — OXICLOUD_ENABLE_AUTH
OIDC / SSO Yes Yes OXICLOUD_OIDC_ENABLED
File sharing Yes Yes OXICLOUD_ENABLE_FILE_SHARING
Trash Yes No OXICLOUD_ENABLE_TRASH
Search Yes No OXICLOUD_ENABLE_SEARCH
Favorites Yes Yes Always on
Storage quotas Yes Yes OXICLOUD_ENABLE_USER_STORAGE_QUOTAS
WebDAV Yes Optional Always on
CalDAV / CardDAV Yes Yes Always on
Deduplication No No Always on
Thumbnails No No Always on
Chunked uploads No No Always on