Files
markusgraf_ch/openspec/changes/add-ftps-deployment/proposal.md
T
gurixandClaude fcb82acc6f refactor: switch from FTPS/lftp to rsync for deployment
Replace the FTPS-based deployment approach with rsync over SSH for more
reliable and efficient mirroring of the Hugo site. This change addresses
issues with the previous approach and provides true mirror behavior.

Key changes:
- Replace lftp with rsync for file synchronization
- Add --delete flag for true mirror behavior (removes stale remote files)
- Simplify authentication to use SSH keys only (no password needed)
- Update all documentation and OpenSpec artifacts
- Add .envrc to gitignore for direnv users

Environment variables:
- SSH_USER: SSH username (required)
- SSH_HOST: server hostname (required)
- SSH_PORT: SSH port (optional, defaults to 22)
- REMOTE_ROOT: remote directory path (optional, defaults to /httpsdocs)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 16:02:35 +01:00

1.1 KiB

Change Proposal: add-ftps-deployment

Why

Currently there is no automated way to deploy the built Hugo site to the production server. Manual file transfers are error-prone and time-consuming. This change adds a deployment script to automate uploads via rsync over SSH, properly mirroring content (including deletions).

What Changes

  • Add deployment script scripts/deploy.sh that syncs public/ directory via rsync
  • Use environment variables SSH_USER, SSH_HOST, SSH_PORT, and REMOTE_ROOT for configuration
  • Implement mirror behavior with --delete flag to remove remote files not present locally
  • Implement prerequisite checks (public/ exists, rsync installed, credentials set)
  • Add error handling and progress reporting
  • Update documentation with deployment instructions

Impact

  • Affected specs: New deployment capability
  • Affected code: New file scripts/deploy.sh
  • Dependencies: Requires rsync to be installed
  • Configuration: User must set SSH_USER and SSH_HOST environment variables
    • SSH_PORT defaults to 22
    • REMOTE_ROOT defaults to /httpsdocs
  • No changes to existing Hugo templates, content, or build process