feat(files): every file sits in a library folder, and keeps its own expiry
The Files library starts here. A user's every download, clip and upload now lands in a source folder made per origin (YouTube, Plex clips, uploads, one per other site), decided once in downloads/folders.py at every place a job is made. How long a file stays moves from the shared asset to the user's job: stamped from its folder when it is done, never for a file the user keeps. The GC warns each user once, then takes the expired file out of their library; the cache cap never evicts a kept file, and an evicted one leaves every holder's library. The media mount is /files now (FILES_ROOT, FILES_HOST_PATH, volume siftlode_files); docs/self-hosting.md says how to carry an old volume over. Migration 0102 places every existing job and carries each done file's expiry over from its asset. safe_abs_path takes a missing path and answers None, which drops one baselined type error.
This commit is contained in:
@@ -21,21 +21,21 @@ services:
|
||||
environment:
|
||||
# This instance owns its scheduler (its own DB, so no double-write concern).
|
||||
SCHEDULER_ENABLED: "true"
|
||||
# Plex HLS remux scratch on fast container-local storage (the /downloads bind-mount is a slow
|
||||
# Plex HLS remux scratch on fast container-local storage (the /files bind-mount is a slow
|
||||
# Windows Docker Desktop mount in dev; prod uses fast local disk so it keeps the default).
|
||||
PLEX_HLS_DIR: /var/tmp/plex-hls
|
||||
security_opt:
|
||||
- apparmor:unconfined
|
||||
volumes:
|
||||
# Downloaded media lives on the host so you can inspect the generated Plex tree. Gitignored.
|
||||
- ./downloads:/downloads
|
||||
- ./files:/files
|
||||
- plex_media:/plex-media:ro
|
||||
|
||||
worker:
|
||||
security_opt:
|
||||
- apparmor:unconfined
|
||||
volumes:
|
||||
- ./downloads:/downloads
|
||||
- ./files:/files
|
||||
- plex_media:/plex-media:ro
|
||||
|
||||
bgutil-pot:
|
||||
|
||||
Reference in New Issue
Block a user