Skip to content

Quick Start

bash
git clone https://github.com/DioCrafts/OxiCloud.git
cd OxiCloud
cp example.env .env
docker compose up -d

Open http://localhost:8086. That's it.

Docker Compose

yaml
services:
  postgres:
    image: postgres:18.2-alpine3.23
    environment:
      POSTGRES_DB: oxicloud
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    ports:
      - "5432:5432"
    volumes:
      - pg_data:/var/lib/postgresql/
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

  oxicloud:
    image: diocrafts/oxicloud:latest
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8086:8086"
    env_file:
      - .env
    volumes:
      - storage_data:/app/storage
    depends_on:
      postgres:
        condition: service_healthy

volumes:
  pg_data:
  storage_data:

From Source

Requires Rust 1.93+ and PostgreSQL 13+.

bash
git clone https://github.com/DioCrafts/OxiCloud.git
cd OxiCloud
cp example.env .env

# Edit .env and set OXICLOUD_DB_CONNECTION_STRING for runtime
export DATABASE_URL=postgres://user:pass@localhost:5432/oxicloud

cargo build --release
cargo run --release

OXICLOUD_DB_CONNECTION_STRING is the runtime setting read by OxiCloud. DATABASE_URL is only needed for SQLx build-time checks.

Kubernetes (Helm)

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

Client Setup

ClientProtocolURL
Windows ExplorerWebDAVhttps://host/webdav/
macOS FinderWebDAVhttps://host/webdav/
Nautilus / DolphinWebDAVdavs://host/webdav/
Thunderbird (calendar)CalDAVhttps://host/caldav/
Thunderbird (contacts)CardDAVhttps://host/carddav/
DAVx⁵ (Android)CalDAV + CardDAVhttps://host/
GNOME CalendarCalDAVhttps://host/caldav/
GNOME ContactsCardDAVhttps://host/carddav/
Collabora / OnlyOfficeWOPISee WOPI configuration

What's Next?

Released under the MIT License.