SSD cleanup plan
A staged, reversible cleanup checklist with the HDD explicitly excluded.
Hard boundary
This plan may change only SSD-backed paths and Docker state stored on /. It must not read, move, rename, delete, or rewrite files under /mnt/BackupDrive.
Phase 0: preserve the baseline
docker ps -a > /tmp/homelab-docker-ps-before.txt
docker system df > /tmp/homelab-docker-df-before.txt
df -hT / /mnt/BackupDrive > /tmp/homelab-disk-before.txtThe /tmp snapshots are disposable and do not touch the HDD.
Phase 1: review exact candidates
Current SSD pressure candidates include:
- Docker images: 23.11G reported reclaimable.
- Docker volumes: 9.17G reported reclaimable, but volumes are data and require per-volume inspection.
- Docker build cache: 7.94G reported reclaimable.
- User caches: approximately 11G under
/home/yvm/.t3, 6.4G under/home/yvm/.npm, 3.5G under/home/yvm/.cache, and 2.9G under/home/yvm/.codex.
These numbers are candidates, not permission to delete. Cache directories may be recreated; project data and Docker volumes may not.
Phase 2: safe order
- Confirm which stopped containers are historical and remove only named containers.
- Prune old build cache during a maintenance window.
- Review untagged or unused images by ID and age.
- Review each volume with
docker volume inspectand an application owner. - Clean user caches only through the owning tool or an exact path.
- Re-run the baseline commands and verify all active health checks.
Never use a global docker volume prune as a first move. Never use docker compose down -v for cleanup.
Deferred changes
Port binding, host-service shutdown, Compose consolidation, and moving project directories are intentionally deferred. They can improve the end state, but each one changes availability or data ownership and needs an explicit service-by-service decision.