From d263d7c4ff0397fa421802446e00badf69bd44e5 Mon Sep 17 00:00:00 2001 From: Karan Jayachandra Date: Sun, 26 Jul 2026 19:13:32 +0200 Subject: Added the changes for automatic deploy --- deploy.sh | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100755 deploy.sh (limited to 'deploy.sh') diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 0000000..9c547cf --- /dev/null +++ b/deploy.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +set -euo pipefail + +NAS_HOST="karan@100.121.200.111" +NAS_PATH="/volume2/docker/goodall" +REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd "$REPO_DIR" + +echo "==> Checking SSH connectivity to ${NAS_HOST}" +if ! ssh -o ConnectTimeout=5 -o BatchMode=yes "$NAS_HOST" true; then + echo "ERROR: cannot reach ${NAS_HOST} over SSH (tailscale down?)" >&2 + exit 1 +fi + +echo "==> Clearing stale project files on ${NAS_HOST}:${NAS_PATH} (preserving config/ and .env)" +ssh "$NAS_HOST" "mkdir -p ${NAS_PATH} && find ${NAS_PATH} -mindepth 1 -maxdepth 1 ! -name 'config' ! -name '.env' -exec rm -rf {} +" + +echo "==> Syncing project files to ${NAS_HOST}:${NAS_PATH}" +COPYFILE_DISABLE=1 tar -cz \ + --exclude='.git' \ + --exclude='.claude' \ + --exclude='config' \ + --exclude='.env' \ + . | ssh "$NAS_HOST" "tar -xzf - -C ${NAS_PATH}" + +echo "==> Decrypting secrets and writing remote .env" +sops --input-type dotenv --output-type dotenv -d .env.enc \ + | ssh "$NAS_HOST" "cat > ${NAS_PATH}/.env && chmod 600 ${NAS_PATH}/.env" + +echo "==> Pulling latest images and recreating containers" +ssh "$NAS_HOST" "cd ${NAS_PATH} && docker compose pull && docker compose up -d" + +echo "==> Deploy complete." -- cgit v1.3.1