pilarj/lftp FTPS Deploy

Incremental FTPS deploy via lftp for servers requiring TLS session reuse, with certificate verification kept enabled.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Jun 6, 2026
License
MIT

Pinned Snippet

workflow.ymlSHA-pinned
uses: pilarj/lftp-ftps-deploy@5eb9adb9c7d827697c229204523bd4f47966f122 # v1.1.0

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
serverFTP host, no protocol prefix (e.g. ftp.example.com)yes
usernameFTP loginyes
passwordFTP passwordyes
server-dirRemote target directory, MUST end with a slash (e.g. /www/)yes
local-dirLocal directory to mirror (default = repo root)no.
cert-hostHostname the server certificate actually covers, if different from `server`. Example: the cert is a one-level wildcard *.hosting.tld while the FTP host is ftp.srv1.hosting.tld (RFC 6125 — the wildcard cannot match two levels). The server's IP is aliased to this name in /etc/hosts and the connection targets it, so hostname verification stays ENABLED instead of being switched off.no""
ca-fileCA bundle for chain verification. Defaults to the bundled Let's Encrypt bundle (ISRG Root X1 + intermediates R10–R14), which also fixes servers that send a leaf-only certificate chain.no""
excludeNewline-separated lftp mirror -x regexes, matched against paths relative to local-dir.no^\.git ^\.github/
restore-mtimeRestore per-file commit times before mirroring so --only-newer uploads only really-changed files (CI checkouts stamp everything with checkout time). Requires actions/checkout with fetch-depth: 0.notrue
parallelNumber of parallel transfersno4
max-retrieslftp net:max-retries — per-operation retry limit. When the mirror still dies with "Fatal error: max-retries exceeded", the whole (incremental) mirror is restarted, up to 3 attempts total.no2
insecure-tlsDANGER: disable TLS certificate verification (MITM risk). Last resort only.nofalse
debugVerbose lftp protocol log (debug 3) for troubleshootingnofalse

no outputs