| name | strut |
| description | Operate and manage Docker Compose stacks on VPS infrastructure with the strut CLI. Use for any strut task — deploying and releasing services, database backup and restore, debugging production issues, detecting config drift, rotating secrets and keys, setting up monitoring, configuring domains and SSL, validating stacks, or auditing and migrating existing servers. |
| license | MIT |
| metadata | {"author":"gfargo","version":"1.0"} |
strut — VPS Stack Management
strut is a Bash CLI for managing Docker Compose stacks on VPS infrastructure. Commands follow the shape:
strut <stack> <command> [--env <name>] [options]
--env <name> selects the environment file .<name>.env (e.g. --env prod reads .prod.env). Most commands run against a VPS over SSH; some run locally.
Command Quick Reference
strut <stack> release --env prod
strut <stack> deploy --env prod
strut <stack> rebuild --env prod
strut <stack> stop --env prod
strut <stack> rollback --env prod
strut <stack> status --env prod
strut <stack> health --env prod --json
strut <stack> briefing --env prod
strut <stack> preflight --env prod
strut <stack> logs <service> --follow --env prod
strut <stack> diff --env prod
strut fleet status
strut <stack> backup all --env prod
strut <stack> restore <file> --dry-run
strut <stack> db:pull --env prod
strut <stack> drift detect --env prod
strut <stack> drift images --env prod
strut <stack> secrets push --env prod
strut <stack> keys db:rotate postgres --env prod
strut <stack> domain example.com admin@example.com --env prod
strut audit <vps-host> [user] [ssh-key]
strut migrate <vps-host>
When to Read Each Reference
Load the relevant reference file for detailed, step-by-step procedures:
| Task | Reference |
|---|
| Deploying, releasing, updating, stopping services | references/deployment.md |
| Diagnosing production issues, 502s, crashes, disk/DB problems | references/debugging.md |
| Backing up or restoring databases, pulling prod data | references/backups.md |
| Detecting or fixing config drift, auto-fix, drift history | references/drift.md |
| Rotating SSH keys, API keys, DB passwords, env secrets | references/secrets.md |
| Setting up Prometheus/Grafana/Alertmanager monitoring | references/monitoring.md |
| Configuring custom domains and SSL/TLS certificates | references/domains-ssl.md |
| Validating stack structure and config before deploy | references/validation.md |
| Auditing an existing VPS and migrating to strut | references/migration.md |
Core Principles
- Always
--dry-run first for destructive commands (deploy, restore, drift fix, stop).
- Back up before major changes:
strut <stack> backup all --env prod.
- Use
release for VPS (runs remotely over SSH), not deploy (runs locally).
- Make changes in git, not on the VPS — let deployments propagate; drift detection catches manual edits.
- Health checks gate success — driven by
services.conf; keep it current.
- Assess before you act — run
briefing to triage a stack in one call, and preflight for a go/no-go before any release. Both are read-only aggregations of the checks above (--json for machine parsing).
Environment Files
Per-environment .env files live at the project root (.prod.env, .staging.env). They contain literal KEY=VALUE pairs — shell expansion ($VAR, $(cmd)) is not evaluated (strut reads them with a safe parser, not source). Files are written mode 0600.