Skip to content

S3-compatible storage backend (keep local-disk as default) #2

Description

@Realmullens

All media (chunks, assembled tracks, exports) lives on local disk under data/, rooted in server/src/lib/storage.ts (TRIBUTARY_DATA_DIR). That's perfect for single-machine self-hosting but caps scale-out and makes backups manual.

Proposal

  1. Extract a storage interface (put/get/stream/delete/list) around the current disk paths — worth landing as its own PR.
  2. Add an S3-compatible driver (S3/R2/MinIO) selected via env, e.g. STORAGE=s3 + the usual S3_* vars.

Notes

  • The ffmpeg jobs (server/src/jobs/) read/write files directly; they'll need local scratch space with upload/download at job boundaries.
  • Chunk upload is idempotent by (track, chunk index) — the driver must preserve that.

Done when: with STORAGE=s3 against MinIO, a full session (record → upload → process → download) round-trips with no local data/ growth beyond scratch.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: serverFastify API, DB, storage, jobs

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions