From c49a166e174fbd1f2e3ccd3532261be792a56a70 Mon Sep 17 00:00:00 2001 From: MickLesk Date: Fri, 20 Feb 2026 21:15:30 +0100 Subject: [PATCH] planka: migrate data paths to new v2 directory structure Planka v2.0.1 moved all uploads to a unified data directory: - public/{favicons,user-avatars,background-images} -> data/protected/ - private/attachments -> data/private/ The update script was still restoring files to the old locations, which made attachments, avatars and backgrounds disappear after updating from rc.4 to 2.0.1. Changes: - update_script: backup handles both old and new layouts - update_script: restore now uses new v2 paths - install script: create v2 data directories on fresh install Ref #12066 --- ct/planka.sh | 27 ++++++++++++++++++--------- install/planka-install.sh | 1 + 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/ct/planka.sh b/ct/planka.sh index 20e575714..bdfe5c686 100644 --- a/ct/planka.sh +++ b/ct/planka.sh @@ -37,10 +37,18 @@ function update_script() { BK="/opt/planka-backup" mkdir -p "$BK"/{favicons,user-avatars,background-images,attachments} [ -f /opt/planka/.env ] && mv /opt/planka/.env "$BK"/ - [ -d /opt/planka/public/favicons ] && cp -a /opt/planka/public/favicons/. "$BK/favicons/" - [ -d /opt/planka/public/user-avatars ] && cp -a /opt/planka/public/user-avatars/. "$BK/user-avatars/" - [ -d /opt/planka/public/background-images ] && cp -a /opt/planka/public/background-images/. "$BK/background-images/" - [ -d /opt/planka/private/attachments ] && cp -a /opt/planka/private/attachments/. "$BK/attachments/" + # Support both old (pre-v2) and new (v2) directory layouts + if [ -d /opt/planka/data/protected ]; then + [ -d /opt/planka/data/protected/favicons ] && cp -a /opt/planka/data/protected/favicons/. "$BK/favicons/" + [ -d /opt/planka/data/protected/user-avatars ] && cp -a /opt/planka/data/protected/user-avatars/. "$BK/user-avatars/" + [ -d /opt/planka/data/protected/background-images ] && cp -a /opt/planka/data/protected/background-images/. "$BK/background-images/" + [ -d /opt/planka/data/private/attachments ] && cp -a /opt/planka/data/private/attachments/. "$BK/attachments/" + else + [ -d /opt/planka/public/favicons ] && cp -a /opt/planka/public/favicons/. "$BK/favicons/" + [ -d /opt/planka/public/user-avatars ] && cp -a /opt/planka/public/user-avatars/. "$BK/user-avatars/" + [ -d /opt/planka/public/background-images ] && cp -a /opt/planka/public/background-images/. "$BK/background-images/" + [ -d /opt/planka/private/attachments ] && cp -a /opt/planka/private/attachments/. "$BK/attachments/" + fi rm -rf /opt/planka msg_ok "Backed up data" @@ -53,11 +61,12 @@ function update_script() { msg_info "Restoring data" [ -f "$BK/.env" ] && mv "$BK/.env" /opt/planka/.env - mkdir -p /opt/planka/public/{favicons,user-avatars,background-images} /opt/planka/private/attachments - [ -d "$BK/favicons" ] && cp -a "$BK/favicons/." /opt/planka/public/favicons/ - [ -d "$BK/user-avatars" ] && cp -a "$BK/user-avatars/." /opt/planka/public/user-avatars/ - [ -d "$BK/background-images" ] && cp -a "$BK/background-images/." /opt/planka/public/background-images/ - [ -d "$BK/attachments" ] && cp -a "$BK/attachments/." /opt/planka/private/attachments/ + # Planka v2 uses unified data directory structure + mkdir -p /opt/planka/data/protected/{favicons,user-avatars,background-images} /opt/planka/data/private/attachments + [ -d "$BK/favicons" ] && cp -a "$BK/favicons/." /opt/planka/data/protected/favicons/ + [ -d "$BK/user-avatars" ] && cp -a "$BK/user-avatars/." /opt/planka/data/protected/user-avatars/ + [ -d "$BK/background-images" ] && cp -a "$BK/background-images/." /opt/planka/data/protected/background-images/ + [ -d "$BK/attachments" ] && cp -a "$BK/attachments/." /opt/planka/data/private/attachments/ rm -rf "$BK" msg_ok "Restored data" diff --git a/install/planka-install.sh b/install/planka-install.sh index b5b917a25..a9fc03d90 100644 --- a/install/planka-install.sh +++ b/install/planka-install.sh @@ -50,6 +50,7 @@ cp .env.sample .env sed -i "s#http://localhost:1337#http://$LOCAL_IP:1337#g" /opt/planka/.env sed -i "s#postgres@localhost#planka:$DB_PASS@localhost#g" /opt/planka/.env sed -i "s#notsecretkey#$SECRET_KEY#g" /opt/planka/.env +mkdir -p /opt/planka/data/protected/{favicons,user-avatars,background-images} /opt/planka/data/private/attachments $STD npm run db:init msg_ok "Configured PLANKA"