spacedrive/DOCKER.md

2.8 KiB

Spacedrive Docker Deployment

Quick guide for running Spacedrive daemon in Docker.

Quick Start

# Build the image
docker compose build

# Start daemon
docker compose up -d

# View logs
docker compose logs -f

# Check status
docker exec spacedrive-daemon sd-cli status

Supported Platforms

  • x86_64 (amd64) - Servers, TrueNAS, Intel/AMD systems
  • ARM64 (aarch64) - Raspberry Pi 3/4/5, Apple Silicon (via emulation)

Configuration

Edit docker-compose.yml to customize:

volumes:
  # Mount directories to index
  - /path/to/your/photos:/mnt/photos:ro
  - /path/to/your/documents:/mnt/docs:ro

environment:
  # Optional: Set instance name
  - SPACEDRIVE_INSTANCE=myserver

CLI Access

# Run any CLI command
docker exec spacedrive-daemon sd-cli <command>

# Examples:
docker exec spacedrive-daemon sd-cli library list
docker exec spacedrive-daemon sd-cli location add /mnt/photos
docker exec spacedrive-daemon sd-cli search "vacation"

Data Persistence

Data is stored in the spacedrive-data Docker volume. To backup:

# Backup volume
docker run --rm -v spacedrive-data:/data -v $(pwd):/backup \
  alpine tar czf /backup/spacedrive-backup.tar.gz /data

# Restore volume
docker run --rm -v spacedrive-data:/data -v $(pwd):/backup \
  alpine tar xzf /backup/spacedrive-backup.tar.gz -C /

Building for Specific Platform

# Build for ARM64 (Raspberry Pi)
docker build --platform linux/arm64 -t spacedrive:arm64 .

# Build for x86_64
docker build --platform linux/amd64 -t spacedrive:amd64 .

TrueNAS Deployment

  1. Enable Apps in TrueNAS SCALE
  2. Create custom app using the provided docker-compose.yml
  3. Mount your pools as volumes:
    volumes:
      - /mnt/pool1:/mnt/pool1:ro
      - /mnt/pool2:/mnt/pool2:ro
    

Troubleshooting

Container exits immediately

Check logs:

docker compose logs

Can't access daemon

Verify it's running:

docker ps
docker exec spacedrive-daemon sd-cli status

Out of disk space

Check Docker disk usage:

docker system df

Clean up old data:

docker system prune

Advanced

Resource Limits

Add to docker-compose.yml:

deploy:
  resources:
    limits:
      cpus: '2.0'
      memory: 2G

Custom Data Directory

volumes:
  # Use host directory instead of volume
  - /path/to/spacedrive/data:/data

Network Access (Future API)

ports:
  - "8080:8080"  # Expose API port

Full Documentation

See Linux Deployment Guide for complete documentation including:

  • Native binary installation
  • Systemd service setup
  • Raspberry Pi specific configuration
  • TrueNAS integration
  • Performance tuning

Getting Help