mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-05-22 00:24:42 +00:00
9d0c174de1
* snowshare: use mv instead of cp for uploads backup to prevent disk fill Replaces cp -a with mv when backing up and restoring /opt/snowshare/uploads during updates. cp -a duplicated the entire uploads directory on each update, which could fill the disk on instances with large uploads and left stale backup directories accumulating across failed updates. mv is atomic on the same filesystem and avoids any data duplication. Also clears any leftover backup directory before the move to prevent nesting on interrupted updates. Refs TuroYT/snowshare#258 * snowshare: use UPLOAD_DIR env to persist uploads outside install dir Set UPLOAD_DIR=/opt/snowshare_data in the env file so uploads live outside /opt/snowshare and survive CLEAN_INSTALL updates without any backup/restore step. Existing installations are migrated on first update by moving uploads to the new location and appending UPLOAD_DIR to the env file, making the change non-breaking.
75 lines
2.2 KiB
Bash
75 lines
2.2 KiB
Bash
#!/usr/bin/env bash
|
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
|
# Copyright (c) 2021-2026 community-scripts ORG
|
|
# Author: TuroYT
|
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
# Source: https://github.com/TuroYT/snowshare
|
|
|
|
APP="SnowShare"
|
|
var_tags="${var_tags:-file-sharing}"
|
|
var_cpu="${var_cpu:-2}"
|
|
var_ram="${var_ram:-2048}"
|
|
var_disk="${var_disk:-20}"
|
|
var_os="${var_os:-debian}"
|
|
var_version="${var_version:-13}"
|
|
var_unprivileged="${var_unprivileged:-1}"
|
|
|
|
header_info "$APP"
|
|
variables
|
|
color
|
|
catch_errors
|
|
|
|
function update_script() {
|
|
header_info
|
|
check_container_storage
|
|
check_container_resources
|
|
if [[ ! -d /opt/snowshare ]]; then
|
|
msg_error "No ${APP} Installation Found!"
|
|
exit
|
|
fi
|
|
|
|
NODE_VERSION="24" setup_nodejs
|
|
|
|
if check_for_gh_release "snowshare" "TuroYT/snowshare"; then
|
|
msg_info "Stopping Service"
|
|
systemctl stop snowshare
|
|
msg_ok "Stopped Service"
|
|
|
|
if ! grep -q '^UPLOAD_DIR=' /opt/snowshare.env 2>/dev/null; then
|
|
msg_info "Migrating uploads to persistent directory"
|
|
mkdir -p /opt/snowshare_data
|
|
if [ -d /opt/snowshare/uploads ] && [ -z "$(ls -A /opt/snowshare_data 2>/dev/null)" ]; then
|
|
mv /opt/snowshare/uploads/* /opt/snowshare_data/ 2>/dev/null || true
|
|
mv /opt/snowshare/uploads/.[!.]* /opt/snowshare_data/ 2>/dev/null || true
|
|
rmdir /opt/snowshare/uploads 2>/dev/null || true
|
|
fi
|
|
echo "UPLOAD_DIR=/opt/snowshare_data" >>/opt/snowshare.env
|
|
msg_ok "Migrated uploads to /opt/snowshare_data"
|
|
fi
|
|
|
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "snowshare" "TuroYT/snowshare" "tarball"
|
|
|
|
msg_info "Updating Snowshare"
|
|
cd /opt/snowshare
|
|
$STD npm ci
|
|
$STD npx prisma generate
|
|
$STD npm run build
|
|
msg_ok "Updated Snowshare"
|
|
|
|
msg_info "Starting Service"
|
|
systemctl start snowshare
|
|
msg_ok "Started Service"
|
|
msg_ok "Updated successfully!"
|
|
fi
|
|
exit
|
|
}
|
|
|
|
start
|
|
build_container
|
|
description
|
|
|
|
msg_ok "Completed successfully!\n"
|
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|