Skip to content

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

yaml
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

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

Verify

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

WOPI Verification

If Collabora/OnlyOffice is enabled:

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

Feature Dependency Matrix

FeatureRequires DBRequires AuthFeature Flag
File storageYesNoAlways on
AuthenticationYesOXICLOUD_ENABLE_AUTH
OIDC / SSOYesYesOXICLOUD_OIDC_ENABLED
File sharingYesYesOXICLOUD_ENABLE_FILE_SHARING
TrashYesNoOXICLOUD_ENABLE_TRASH
SearchYesNoOXICLOUD_ENABLE_SEARCH
FavoritesYesYesAlways on
Storage quotasYesYesOXICLOUD_ENABLE_USER_STORAGE_QUOTAS
WebDAVYesOptionalAlways on
CalDAV / CardDAVYesYesAlways on
DeduplicationNoNoAlways on
ThumbnailsNoNoAlways on
Chunked uploadsNoNoAlways on

Released under the MIT License.