Files
ProxmoxVE/ct/fileflows.sh
MickLesk dc49400904 fix(fileflows): use fileflows.com header for node version check
Replace GitHub API call (repo does not exist) with a HEAD request
to the fileflows.com download URL. The Content-Disposition header
contains the versioned filename, from which the release number is
parsed and compared against the local version file.

If the header is not available the node update proceeds unconditionally,
since the user explicitly invoked the update command.
2026-05-28 07:40:37 +02:00

99 lines
3.1 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: kkroboth
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://fileflows.com/
APP="FileFlows"
var_tags="${var_tags:-media;automation}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-no}"
var_unprivileged="${var_unprivileged:-1}"
var_gpu="${var_gpu:-yes}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/fileflows ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
CURRENT=$(cat /opt/fileflows/version 2>/dev/null | tr -d '[:space:]')
# Extract latest version from the Content-Disposition header of the download URL
RELEASE=$(curl -fsI "https://fileflows.com/downloads/zip" 2>/dev/null \
| grep -i "content-disposition" \
| grep -oP '[\d]+\.[\d]+\.[\d]+\.[\d]+' \
| head -1)
if systemctl is-enabled fileflows-node &>/dev/null && ! systemctl is-enabled fileflows &>/dev/null; then
# Node-only installation: no local server API available
if [[ -n "$RELEASE" && "$CURRENT" == "$RELEASE" ]]; then
msg_ok "No update required. ${APP} Node is already at v${CURRENT}"
exit
fi
msg_info "Stopping Service"
systemctl stop fileflows-node
msg_ok "Stopped Service"
msg_info "Creating Backup"
ls /opt/*.tar.gz &>/dev/null && rm -f /opt/*.tar.gz
backup_filename="/opt/${APP}_backup_$(date +%F).tar.gz"
tar -czf "$backup_filename" -C /opt/fileflows Data
msg_ok "Backup Created"
fetch_and_deploy_from_url "https://fileflows.com/downloads/zip" "/opt/fileflows"
msg_info "Starting Service"
systemctl start fileflows-node
msg_ok "Started Service"
msg_ok "Updated successfully!"
else
# Server installation: use the local API
update_available=$(curl -fsSL -X 'GET' "http://localhost:19200/api/status/update-available" -H 'accept: application/json' | jq .UpdateAvailable)
if [[ "${update_available}" == "true" ]]; then
msg_info "Stopping Service"
systemctl stop fileflows*
msg_ok "Stopped Service"
msg_info "Creating Backup"
ls /opt/*.tar.gz &>/dev/null && rm -f /opt/*.tar.gz
backup_filename="/opt/${APP}_backup_$(date +%F).tar.gz"
tar -czf "$backup_filename" -C /opt/fileflows Data
msg_ok "Backup Created"
fetch_and_deploy_from_url "https://fileflows.com/downloads/zip" "/opt/fileflows"
msg_info "Starting Service"
systemctl start fileflows*
msg_ok "Started Service"
msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at latest version"
fi
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}:19200${CL}"