laravel/forge-cli
Command-line interface for Laravel Forge to provision and manage servers, deploy sites, and handle common tasks like SSL certificates, scheduled jobs, and queue workers—bringing Forge’s dashboard capabilities to your terminal.
Installation:
composer global require laravel/forge-cli
Ensure ~/.composer/vendor/bin is in your PATH or use the full path to forge commands.
Authentication:
forge auth login
Follow prompts to authenticate via Forge’s web interface (opens in browser).
First Command:
forge server list
Verify connection by listing existing servers.
forge create:server --name="prod-server" --server=linode --plan=1gb
forge site:create --name="myapp" --server=prod-server --repo="git@github.com:user/repo.git"
forge site:deploy --site="myapp"
CI/CD Pipeline: Use Forge CLI in GitHub Actions/GitLab CI to automate deployments:
- name: Deploy to Forge
run: forge site:deploy --site="$SITE_NAME" --branch="$CI_COMMIT_REF_NAME"
Local Development → Production:
# Local: Commit changes
git push origin main
# Remote: Trigger deployment
forge site:deploy --site="myapp" --branch="main"
Server Management:
# Provision a new server
forge server:create --name="staging" --server=digitalocean --plan=2gb
# Configure PHP version
forge server:php --version=8.2 --server="staging"
# Set up SSL
forge ssl:install --server="staging" --site="myapp"
forge site:env --site="myapp" --key="APP_ENV" --value="production"
forge database:create --name="myapp_db" --server="prod-server"
forge database:user --name="myapp_user" --password="securepass" --server="prod-server"
forge cron:add --site="myapp" --command="php artisan schedule:run >> /dev/null 2>&1" --minute="*"
Combine Forge CLI with Laravel’s artisan for post-deploy tasks:
forge site:deploy --site="myapp" && ssh user@server "cd /sites/myapp && php artisan migrate --force"
Authentication Caching:
forge auth login fails, clear cached credentials:
forge auth logout
forge auth login
forge auth:token to manually set a token if API issues arise.Server Provider Quirks:
forge server:plans --server=linode
Deployment Failures:
forge site:logs --site="myapp"
--verbose flag for detailed output:
forge site:deploy --site="myapp" --verbose
Environment Variables:
.env files directly. Use:
forge site:env --site="myapp" --key="DB_PASSWORD" --value="newpass"
APP_KEY is set via Forge or manually in .env.SSH Key Management:
--dry-run to preview changes (where supported):
forge server:php --version=8.1 --server="test-server" --dry-run
forge --debug server:list
Custom Scripts: Add post-deploy hooks via Forge’s UI under Site > Deployment Scripts or use:
forge site:script --site="myapp" --type="post-deploy" --content="php artisan optimize"
Webhooks: Trigger Forge CLI commands via Forge’s webhook events (e.g., post-deploy):
# Example: Run after a Git push
forge site:deploy --site="myapp" --branch="main" --webhook-trigger
Local Testing:
Use forge local (if supported) to mirror server configs locally:
forge local:config --server="prod-server" --output="forge-config.php"
forge server:php --extensions="redis,opcache" --server="prod-server"
forge site:nginx --site="myapp" --custom-config="path/to/custom.conf"
forge queue:worker --site="myapp" --daemon --queue="high,default"
How can I help you explore Laravel packages today?