This repository has been archived on 2026-07-15. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
drive/deployment.md
Elijah 724d70e58b
Some checks failed
Automated Container Build / build-and-push (push) Failing after 12s
Inital build
2026-05-22 12:29:43 -07:00

3.4 KiB

Drive Deployment Documentation

This document covers everything you need to know to deploy and manage the Drive application. The stack consists of a high-performance Go + SQLite backend and a Next.js frontend, bundled together into a single, lightweight Docker container.

Architecture & System Requirements

  • Backend: Go (Fiber) running in WAL mode with SQLite for exceptional concurrency.
  • Frontend: Next.js compiled into static assets served directly by the Go binary for optimal performance.
  • Media Support: Built-in FFmpeg processing for video thumbnails and fast image resizing.
  • Data Persistence: A single /app/data volume containing both your raw files and the SQLite metadata database (drive.db).
  • CPU: 1-2 Cores (More cores significantly accelerate FFmpeg video thumbnailing)
  • RAM: 512MB minimum (1GB+ recommended for large concurrent video uploads)
  • Storage: Sufficient space for your files.

Deploying on Unraid

The application is heavily optimized for Unraid and native folder structures.

  1. Port Configuration: The default internal port is 5827. You can easily map this to any available port on your Unraid host using the Docker template or Compose file.
  2. Volume Mapping: Map your Unraid array (e.g., /mnt/user/Drive) to the /app/data container path.

Docker Compose Example

services:
  drive:
    build: .
    container_name: drive
    ports:
      - "5827:5827"
    volumes:
      # Map your Unraid array path here
      - /mnt/user/Drive:/app/data
    restart: unless-stopped
    environment:
      - PORT=5827

First-Run Setup

  1. Start the container: docker-compose up -d
  2. Open your browser to http://<your-unraid-ip>:5827.
  3. You will be greeted by the First-Run Wizard.
  4. Create your initial admin account (username and password).
  5. (Recommended) Enable 2FA in the Settings menu once logged in for additional security against brute-force attacks.

Core Features & Maintenance

File Versioning

When enabled in Settings, any time a file is overwritten (via web UI, WebDAV, or Tus upload), the older version is automatically moved to the hidden .versions/ directory. Older versions are pruned automatically based on your Settings configuration.

WebDAV Access

Drive supports native OS mounting via WebDAV (Windows Explorer, macOS Finder).

  • URL: http://<your-unraid-ip>:5827/webdav/
  • Authentication: Use your standard Drive username and password.

Automated Backups

The container runs a daily background worker that safely executes a sqlite3 .backup command to create drive.db.backup in your /app/data folder. This ensures your metadata (share links, settings, users) is protected even if the live database encounters an issue during a power loss.


Security Features

  • Path Jailing: All file operations are rigorously sanitized and jailed to the /app/data directory to prevent directory traversal attacks (../ exploits).
  • Brute-Force Protection: The login API employs an exponential backoff mechanism.
  • JWT Authentication: Short-lived access tokens with secure refresh token rotation.
  • Rate Limiting: Public share endpoints are rate-limited to prevent abuse and denial-of-service against the backend.
  • Zip Slip Prevention: The background archive extraction worker explicitly sanitizes all incoming archive paths before writing them to the disk.