aboutsummaryrefslogtreecommitdiff
path: root/deploy.sh
diff options
context:
space:
mode:
authorKaran Jayachandra <mail@karanjayachandra.com>2026-07-26 19:13:32 +0200
committerKaran Jayachandra <mail@karanjayachandra.com>2026-07-26 19:13:32 +0200
commitd263d7c4ff0397fa421802446e00badf69bd44e5 (patch)
treee7353a754f459754ed45b55c22e9695f656fe2aa /deploy.sh
parenta092b9462094afc74798466a9d6fef53ff3d17d3 (diff)
Added the changes for automatic deploy
Diffstat (limited to 'deploy.sh')
-rwxr-xr-xdeploy.sh33
1 files changed, 33 insertions, 0 deletions
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."