Interactive deploy script for web projects using git-ftp. Choose an action (push, init, status) and a target environment. Environments are auto-detected from DEPLOY_* vars in your project's .env.
- Install yeet globally:
cp yeet ~/.local/bin/yeet - Create a
.envin your project root with your deploy credentials (see below) - Create a
.git-ftp-ignorein your project root (see below) - Run
yeetfrom your project directory
Place this file in your project root to exclude files from FTP deployment:
content/
media/
.env
.deploy-status
If you use Composer (e.g. for Kirby CMS), vendor/ and kirby/ are typically git-ignored but need to be deployed. Create a .git-ftp-include in your project root:
kirby/:composer.lock
vendor/:composer.lock
This tells git-ftp to upload these directories whenever composer.lock changes.
- Connect via FTP to see your root directory:
curl --user ftp-user ftp://yourserver.com/ - If you see your project files, you're already in the project root:
HOST=ftp://yourserver.com - If your project is in a subfolder (e.g.
public_html/), add it to the path:HOST=ftp://yourserver.com/public_html - You can browse deeper with:
curl --user ftp-user ftp://yourserver.com/public_html/
Add as many environments as you need. DEPLOY_*_URL is optional — it stores the public URL where the environment is accessible and is shown during deploy and in .deploy-status.
DEPLOY_DEV_HOST=ftp://dev.yourserver.com
DEPLOY_DEV_USER=ftp-dev-user
DEPLOY_DEV_PASS=your-dev-password
DEPLOY_DEV_URL=https://dev.yourserver.com
DEPLOY_PROD_HOST=ftp://yourserver.com
DEPLOY_PROD_USER=ftp-prod-user
DEPLOY_PROD_PASS=your-prod-password
DEPLOY_PROD_URL=https://yourserver.com
DEPLOY_STAGING_HOST=ftp://staging.yourserver.com
DEPLOY_STAGING_USER=ftp-staging-user
DEPLOY_STAGING_PASS=your-staging-password
DEPLOY_STAGING_URL=https://staging.yourserver.com- git-ftp (
brew install git-ftp)