v0.14.0: Per-drive backup architecture + storage path overhaul
Major refactor of backup and storage paths: - Per-drive restic repos at <drive>/backups/primary/restic/ - Per-app DB dumps at <drive>/backups/primary/<app>/db-dumps/ - Remove global BackupDir, DBDumpDir, ResticRepo config fields - Add SystemDataPath config (fallback for apps without HDD) - New backup/paths.go with pure path computation helpers - Add GetStackHDDPath to StackDataProvider interface - Restic methods now accept repoPath as parameter - Cross-drive backup uses new secondary path structure - Rename storage/ to appdata/ in scripts and compose templates - Update protected HDD paths (storage → appdata + backups) - Simplify backup UI (remove global path displays) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1280,7 +1280,7 @@ install_filebrowser() {
|
||||
# Deployed by docker-setup.sh — do NOT remove
|
||||
#
|
||||
# Mount permissions:
|
||||
# /srv/storage/ → HDD storage/ (READ-ONLY — app data)
|
||||
# /srv/appdata/ → HDD appdata/ (READ-ONLY — app data)
|
||||
# /srv/media/ → HDD media/ (read-write — user media)
|
||||
# /srv/Dokumentumok/ → HDD Dokumentumok/ (read-write — user documents)
|
||||
|
||||
@@ -1293,7 +1293,7 @@ services:
|
||||
- TZ=Europe/Budapest
|
||||
volumes:
|
||||
- filebrowser_data:/home/filebrowser/data
|
||||
- \${HDD_PATH}/storage:/srv/storage:ro
|
||||
- \${HDD_PATH}/appdata:/srv/appdata:ro
|
||||
- \${HDD_PATH}/media:/srv/media
|
||||
- \${HDD_PATH}/Dokumentumok:/srv/Dokumentumok
|
||||
networks:
|
||||
|
||||
+9
-17
@@ -61,11 +61,8 @@ declare -a MEDIA_DIRS=(
|
||||
"media/books"
|
||||
)
|
||||
|
||||
declare -a STORAGE_DIRS=(
|
||||
"storage/immich"
|
||||
"storage/nextcloud"
|
||||
"storage/backups/local"
|
||||
"storage/backups/appdata"
|
||||
declare -a BACKUP_DIRS=(
|
||||
"backups"
|
||||
)
|
||||
|
||||
declare -a USER_DIRS=(
|
||||
@@ -170,13 +167,8 @@ FOLDER STRUCTURE CREATED:
|
||||
│ ├── series/
|
||||
│ ├── music/
|
||||
│ └── books/
|
||||
├── storage/
|
||||
│ ├── immich/
|
||||
│ ├── nextcloud/
|
||||
│ └── backups/
|
||||
│ ├── local/
|
||||
│ └── appdata/
|
||||
└── appdata/
|
||||
├── appdata/ (app data — created per-app on deploy)
|
||||
└── backups/ (managed by felhom-controller)
|
||||
|
||||
SAFETY:
|
||||
- Drives with existing data require typing "YES" to format
|
||||
@@ -853,10 +845,10 @@ create_folder_structure() {
|
||||
for dir in "${MEDIA_DIRS[@]}"; do
|
||||
echo " ├── $dir/"
|
||||
done
|
||||
for dir in "${STORAGE_DIRS[@]}"; do
|
||||
for dir in "${APPDATA_DIRS[@]}"; do
|
||||
echo " ├── $dir/"
|
||||
done
|
||||
for dir in "${APPDATA_DIRS[@]}"; do
|
||||
for dir in "${BACKUP_DIRS[@]}"; do
|
||||
echo " └── $dir/"
|
||||
done
|
||||
|
||||
@@ -876,7 +868,7 @@ create_folder_structure() {
|
||||
return 0
|
||||
fi
|
||||
|
||||
for dir in "${USER_DIRS[@]}" "${MEDIA_DIRS[@]}" "${STORAGE_DIRS[@]}" "${APPDATA_DIRS[@]}"; do
|
||||
for dir in "${USER_DIRS[@]}" "${MEDIA_DIRS[@]}" "${APPDATA_DIRS[@]}" "${BACKUP_DIRS[@]}"; do
|
||||
mkdir -p "${mount_point}/${dir}"
|
||||
log_debug "Created: ${mount_point}/${dir}"
|
||||
done
|
||||
@@ -1232,11 +1224,11 @@ main() {
|
||||
echo ""
|
||||
echo " # Immich photo storage"
|
||||
echo " volumes:"
|
||||
echo " - ${mount_point}/storage/immich:/usr/src/app/upload"
|
||||
echo " - ${mount_point}/appdata/immich:/usr/src/app/upload"
|
||||
echo ""
|
||||
echo " # Nextcloud data"
|
||||
echo " volumes:"
|
||||
echo " - ${mount_point}/storage/nextcloud:/var/www/html/data"
|
||||
echo " - ${mount_point}/appdata/nextcloud:/var/www/html/data"
|
||||
echo ""
|
||||
echo -e " ${BOLD}Verify mount survives reboot:${NC}"
|
||||
echo " sudo mount -a # Test fstab now"
|
||||
|
||||
Reference in New Issue
Block a user