Files
Synapsis/docker/update-local.sh
T
2026-03-07 22:29:49 -08:00

82 lines
2.3 KiB
Bash
Executable File

#!/bin/sh
set -eu
REPO="${REPO:-GnosysLabs/Synapsis}"
REF="${REF:-main}"
INSTALL_DIR="${1:-${INSTALL_DIR:-/opt/synapsis}}"
RAW_BASE="https://raw.githubusercontent.com/${REPO}/${REF}"
require_command() {
if ! command -v "$1" >/dev/null 2>&1; then
echo "❌ Required command not found: $1" >&2
exit 1
fi
}
download_file() {
source_path="$1"
target_path="$2"
echo "⬇️ Downloading ${source_path}"
curl -fsSL "${RAW_BASE}/${source_path}" -o "${target_path}"
}
detect_proxy_mode() {
if [ -f "${INSTALL_DIR}/Caddyfile" ] || [ -f "${INSTALL_DIR}/caddy-entrypoint.sh" ]; then
printf 'caddy\n'
return
fi
printf 'none\n'
}
compose_cmd() {
if [ -f "${INSTALL_DIR}/.env" ]; then
docker compose --env-file "${INSTALL_DIR}/.env" -f "${INSTALL_DIR}/docker-compose.yml" "$@"
else
docker compose -f "${INSTALL_DIR}/docker-compose.yml" "$@"
fi
}
require_command curl
require_command docker
require_command chmod
require_command mkdir
if [ ! -d "${INSTALL_DIR}" ]; then
echo "❌ ${INSTALL_DIR} does not exist." >&2
exit 1
fi
ACTIVE_PROXY="$(detect_proxy_mode)"
case "${ACTIVE_PROXY}" in
caddy)
download_file "docker-compose.yml" "${INSTALL_DIR}/docker-compose.yml"
download_file "docker/Caddyfile" "${INSTALL_DIR}/Caddyfile"
download_file "docker/caddy-entrypoint.sh" "${INSTALL_DIR}/caddy-entrypoint.sh"
chmod 755 "${INSTALL_DIR}/caddy-entrypoint.sh"
;;
none)
download_file "docker-compose.proxyless.yml" "${INSTALL_DIR}/docker-compose.yml"
rm -f "${INSTALL_DIR}/Caddyfile" "${INSTALL_DIR}/caddy-entrypoint.sh"
;;
esac
download_file "docker/host-updater.py" "${INSTALL_DIR}/host-updater.py"
download_file "docker/update-local.sh" "${INSTALL_DIR}/update-local.sh"
chmod 755 "${INSTALL_DIR}/host-updater.py" "${INSTALL_DIR}/update-local.sh"
echo "🐳 Pulling latest Synapsis image"
compose_cmd pull
echo "🚀 Restarting Synapsis"
compose_cmd up -d --remove-orphans
if command -v systemctl >/dev/null 2>&1 && systemctl list-unit-files synapsis-updater.service >/dev/null 2>&1; then
systemctl restart synapsis-updater.service >/dev/null 2>&1 || true
fi
echo ""
echo "✅ Synapsis has been updated to the latest published image."