Disk Usage
Vessl tracks how much disk space your application's persistent volumes are using and alerts you when you're approaching your plan's quota.
Where to see disk usage
Each app's Overview tab shows a Disk card with the current usage of the app's volumes. Usage is measured daily and reflects the actual on-disk size of files in the mounted volume paths.
Plan quotas
Total disk usage is measured across all app volumes on all your servers:
| Plan | Disk quota |
|---|---|
| Hobby | 2 GB |
| Starter | 5 GB |
| Pro | 20 GB |
Alerts
Vessl notifies the team owner by email and in-app notification when:
- Usage reaches 80% of the plan quota — time to review and clean up.
- Usage reaches 100% of the plan quota — all quota is consumed.
The quota is soft-enforced: apps keep running when you hit the limit, but you'll receive alerts. Upgrading your plan increases the quota immediately.
What counts toward disk usage
Only files in your app's persistent volumes count toward disk usage. Volumes are the paths you mount for permanent storage — for Laravel this is /app/storage, and for custom volumes it's whatever paths you configured.
The container's read-only image layer (your built app) does not count toward disk quota.
Reducing disk usage
Delete old log files
For Laravel apps, logs accumulate in storage/logs/. Add a cleanup step to your post-deploy command or a cron daemon:
find /app/storage/logs -name "*.log" -mtime +30 -delete
Remove unused uploaded files
Review files in storage/app/ and delete anything no longer needed.
Run Docker image cleanup on the server
Old Docker images from previous deploys can consume significant disk space on the server (not counted in the app quota, but affects server disk). Vessl runs docker image prune automatically on a weekly schedule, but you can also trigger it manually from the server's cron jobs or Console tab.
Persistent volumes vs. image size
The disk quota tracks volume data — files your app writes at runtime. It does not track:
- The Docker image size (build output)
- Add-on database data (PostgreSQL/MySQL data is stored in Docker volumes managed by Vessl, separate from your app quota)
- Build cache on the server