diff --git a/README.md b/README.md index 74d7859..9c9268a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # XyMediaVault public installer -Run `sudo bash install.sh` on a Linux host with Docker and Compose. The installer downloads `catalog-v1.json` and the public Generic Package assets over HTTPS, selects `linux-amd64` or `linux-arm64`, safely extracts the app archive, and stores TMM and Title archives in the local component directory. +Run `curl -fsSL https://git.keeper.work/admin/xymediavault-releases/raw/branch/main/install.sh | sudo bash` from the directory where you want XyMediaVault installed. The default install directory is the command's current directory; use `--install-dir /absolute/path` to override it. The installer downloads `catalog-v1.json` and the public Generic Package assets over HTTPS, selects `linux-amd64` or `linux-arm64`, safely extracts the app archive, and stores TMM and Title archives in the local component directory. The app archive must contain `bin/xymediavault`, `bin/xymedia-supervisor`, `web/dist`, and `release.json`. The installer rejects legacy app packages missing the supervisor and waits for the current public catalog entry containing this complete layout. diff --git a/install.sh b/install.sh index c5128ad..27750de 100644 --- a/install.sh +++ b/install.sh @@ -4,7 +4,7 @@ set -euo pipefail CATALOG_URL=${XYMEDIA_CATALOG_URL:-https://git.keeper.work/admin/xymediavault-releases/raw/branch/main/catalog-v1.json} RELEASE_BASE=${XYMEDIA_RELEASE_BASE:-https://git.keeper.work/admin/xymediavault-releases/raw/branch/main} SCRIPT_DIR=$(cd -- "$(dirname -- "$0")" && pwd -P) -INSTALL_DIR=/opt/xymediavault +INSTALL_DIR=${XYMEDIA_INSTALL_DIR:-$PWD} PG_HOST=postgres PG_PORT=5432 PG_DB=xymedia @@ -95,7 +95,11 @@ print(entry["version"] + "\t" + entry["asset_url"]) PY } download_extract() { - local component=$1 version=$2 url=$3 target=$4 archive="$INSTALL_DIR/state/$component-$version.archive" + local component=$1 + local version=$2 + local url=$3 + local target=$4 + local archive="$INSTALL_DIR/state/$component-$version.archive" curl --fail --silent --show-error --location --proto '=https' --tlsv1.2 "$url" -o "$archive" local tarball="$archive.tar" if [[ $url == *.tar.gz || $url == *.tgz ]]; then gzip -dc "$archive" >"$tarball"; else zstd -dc "$archive" >"$tarball"; fi