diff options
| author | Karan Jayachandra <mail@karanjayachandra.com> | 2026-07-26 19:13:32 +0200 |
|---|---|---|
| committer | Karan Jayachandra <mail@karanjayachandra.com> | 2026-07-26 19:13:32 +0200 |
| commit | d263d7c4ff0397fa421802446e00badf69bd44e5 (patch) | |
| tree | e7353a754f459754ed45b55c22e9695f656fe2aa /deploy.sh | |
| parent | a092b9462094afc74798466a9d6fef53ff3d17d3 (diff) | |
Added the changes for automatic deploy
Diffstat (limited to 'deploy.sh')
| -rwxr-xr-x | deploy.sh | 33 |
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." |
