This project now deploys with deploy.sh instead of manual FTP uploads.
Create a local env file (do not commit it):
cp .env.deploy.example .env.deployThen set your real values:
SITE5_HOST(example:yourdomain.com)SITE5_USER(your Site5/cPanel username)SITE5_REMOTE_PATH(example:public_html)SITE5_SSH_PORT(default22)SITE5_PASSWORD(only required for FTPS fallback)SITE5_FTPS_PORT(default21)SITE5_FTPS_HOST(optional FTPS endpoint host, defaults toSITE5_HOST)SITE5_FTPS_INSECURE(optional, set to1only for emergency bypass of TLS hostname/cert checks)
Load it before running deploy commands:
set -a && source .env.deploy && set +a./deploy.sh --checkIf this passes, deploys run via rsync over SSH.
If it fails, script falls back to FTPS (lftp) when SITE5_PASSWORD is set.
If FTPS fails with a hostname/certificate error (for example: subjectAltName does not match), set SITE5_FTPS_HOST to the FTPS server hostname provided by your hosting panel (often a server hostname, not your public domain):
set -a && source .env.deploy && set +a
export SITE5_FTPS_HOST=serverXX.site5.com
./deploy.sh --dry-run --target-file index.htm
./deploy.sh --target-file index.htmKeep certificate verification enabled (default). Only if you must unblock urgently, you can opt in to insecure mode temporarily:
export SITE5_FTPS_INSECURE=1
./deploy.sh --target-file index.htm
unset SITE5_FTPS_INSECURE./deploy.sh --dry-run --target-file index.htm
./deploy.sh --target-file index.htm./deploy.sh --dry-run
./deploy.sh./deploy.sh --force-ftps --dry-run --target-file index.htm
./deploy.sh --force-ftps --target-file index.htmPushes to master or main now auto-deploy via .github/workflows/deploy.yml.
The workflow runs ./deploy.sh --full-site from GitHub Actions.
Configure these repository secrets in GitHub (Settings > Secrets and variables > Actions):
SITE5_HOST(required)SITE5_USER(required)SITE5_REMOTE_PATH(required)SITE5_SSH_PORT(optional)SITE5_PASSWORD(required when FTPS fallback is used)SITE5_FTPS_PORT(optional)SITE5_FTPS_HOST(optional)SITE5_FTPS_INSECURE(optional; set to1only as temporary emergency bypass)
Rollback uses Git history plus the same deploy script:
git log --oneline
git checkout <commit-hash> -- index.htm
./deploy.sh --target-file index.htm