Docker
Quick start
Section titled “Quick start”docker run -d \ --name rustyfile \ -p 8080:80 \ -v /your/files:/data \ -v rustyfile-config:/config \ rustyfile/rustyfileVolumes
Section titled “Volumes”| Mount Point | Purpose | Recommendation |
|---|---|---|
/data | Filesystem root to browse | Bind mount to your files |
/config | Database, cache (thumbs, HLS, uploads) | Named volume for persistence |
Environment variables
Section titled “Environment variables”Override any configuration via environment:
docker run -d \ -p 3000:80 \ -e RUSTYFILE_LOG_FORMAT=json \ -e RUSTYFILE_JWT_EXPIRY_HOURS=8 \ -v /your/files:/data \ -v rustyfile-config:/config \ rustyfile/rustyfileDocker Compose
Section titled “Docker Compose”services: rustyfile: image: rustyfile/rustyfile container_name: rustyfile ports: - "8080:80" volumes: - /your/files:/data - rustyfile-config:/config environment: - RUSTYFILE_LOG_FORMAT=json restart: unless-stopped logging: driver: json-file options: max-size: "10m" max-file: "3"
volumes: rustyfile-config:Health check
Section titled “Health check”The image includes a built-in health check:
GET /api/health → {"status": "ok", "db": "connected"}Checked every 30 seconds with a 5-second timeout.
Image details
Section titled “Image details”- Base: Alpine 3.21
- Size: ~15-20 MB
- User: Runs as non-root
- FFmpeg: Included in the image for HLS transcoding support.
Building locally
Section titled “Building locally”docker build -t rustyfile .Or with the Makefile:
make docker