#!/usr/bin/env bash set -euo pipefail REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$REPO_ROOT" usage() { cat <<'EOF' Usage: ./scripts/deploy-frontend-standalone.sh [--restart] Arguments: remote SSH target, e.g. user@example.com remote_app_dir Remote deerflow2 root dir, e.g. /home/user/deerflow2 Options: --restart Run "make start" on the remote host after upload Example: ./scripts/deploy-frontend-standalone.sh ubuntu@1.2.3.4 /opt/deerflow2 --restart Notes: - Run this script on your local machine (build machine), not on the server. - Requires: pnpm, rsync, ssh EOF } if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then usage exit 0 fi if [ "$#" -lt 2 ] || [ "$#" -gt 3 ]; then usage exit 1 fi REMOTE="$1" REMOTE_APP_DIR="$2" RESTART="${3:-}" if [ "$RESTART" != "" ] && [ "$RESTART" != "--restart" ]; then echo "Unknown option: $RESTART" usage exit 1 fi echo "==> Building frontend (standalone)..." pnpm -C frontend build echo "==> Uploading standalone server..." rsync -azP --delete --info=progress2 \ frontend/.next/standalone/ \ "$REMOTE:$REMOTE_APP_DIR/frontend/.next/standalone/" echo "==> Uploading static assets..." rsync -azP --info=progress2 \ frontend/.next/static/ \ "$REMOTE:$REMOTE_APP_DIR/frontend/.next/standalone/.next/static/" echo "==> Uploading public assets..." rsync -azP --info=progress2 \ frontend/public/ \ "$REMOTE:$REMOTE_APP_DIR/frontend/.next/standalone/public/" if [ "$RESTART" = "--restart" ]; then echo "==> Restarting DeerFlow on remote host..." ssh "$REMOTE" "cd '$REMOTE_APP_DIR' && make start" fi echo "==> Done."