Labsco
openai logo

render-disks

✓ Official4,081

by openai · part of openai/plugins

Attaches and manages persistent disks on Render services—mount paths, sizing, snapshots, file transfers, and single-instance constraints. Use when the user needs persistent storage, file uploads, a custom database on disk, CMS media storage, or needs to understand why their service can't scale horizontally or use zero-downtime deploys. Trigger terms: persistent disk, disk, storage, mount path, sizeGB, SSD, file uploads, snapshots, disk restore, ephemeral filesystem.

🧩 One of 7 skills in the openai/plugins package — works on its own, and pairs well with its siblings.

This is the playbook your agent receives when the skill activates — you don't need to read it to use the skill, but it's here to audit before installing.

Render Persistent Disks

Persistent disks are high-performance SSDs you attach to a Render service to preserve filesystem changes across deploys and restarts. Without a disk, services have an ephemeral filesystem—all local file changes are lost on every deploy.

When to Use

  • Storing file uploads, CMS media, or user-generated content
  • Running a self-managed database (MySQL, MongoDB, ClickHouse) on Render
  • Deploying stateful infrastructure (Elasticsearch, Kafka, RabbitMQ, Mattermost)
  • Understanding why scaling is blocked or zero-downtime deploys are disabled
  • Restoring data from an automatic disk snapshot

For managed databases, prefer Render Postgres (render-postgres) or Key Value (render-keyvalue) over self-managed alternatives on disk.

Critical Constraints

These constraints affect architecture decisions. Understand them before attaching a disk:

ConstraintImpact
Single instance onlyCannot scale horizontally (numInstances must be 1, autoscaling not available)
No zero-downtime deploysOld instance stops before new instance starts (brief downtime on each deploy)
Runtime access onlyDisk is not available during buildCommand or preDeployCommand (those run on separate compute)
Not accessible from other servicesOnly the attached service can read/write the disk
Not available on cron jobsAttach to a web service, private service, or background worker instead
Not available on one-off jobsOne-off jobs run on separate compute without disk access
Can increase size, cannot decreaseStart small and grow as needed

Mount Path

Only files written under the mount path are preserved. Everything else remains ephemeral.

RuntimeSource code pathExample mount path
Node.js, Python, Ruby, Elixir, Rust/opt/render/project/src/opt/render/project/src/uploads
Go/opt/render/project/go/src/github.com/<user>/<repo>.../data
DockerDockerfile's WORKDIR (commonly /app)/app/storage

Disallowed mount paths

Cannot mount at: /, /opt, /opt/render, /opt/render/project, /opt/render/project/src, /home, /home/render, /etc, /etc/secrets.

Subdirectories of these paths are fine (e.g. /opt/render/project/src/uploads).

Snapshots

  • Render creates an automatic snapshot every 24 hours
  • Snapshots are available for at least 7 days
  • Restore from the service's Disks page in the Dashboard
  • Full restore only — you cannot restore individual files
  • Destructive — all changes after the snapshot are lost

Do not restore snapshots for custom database recovery. Use database-native backup tools (mysqldump, mongodump) instead—disk snapshots may capture a corrupted database state.

File Transfers

SCP (via SSH)

# Download from service
scp -s YOUR_SERVICE@ssh.YOUR_REGION.render.com:/mount/path/file ./local-file

# Upload to service
scp -s ./local-file YOUR_SERVICE@ssh.YOUR_REGION.render.com:/mount/path/file

Requires SSH access enabled for the service.

Magic-Wormhole

Available on all native runtimes (install manually on Docker):

# On the service shell
wormhole send /mount/path/file

# On your local machine
wormhole receive

Common Patterns

PatternService typeMount pathNotes
WordPress / Ghost / CMSWeb Service/var/data or /app/contentMedia uploads, SQLite
Self-managed MySQLPrivate Service/var/lib/mysqlUse mysqldump for backups, not disk snapshots
File upload APIWeb Service/opt/render/project/src/uploadsSingle instance constraint
ElasticsearchPrivate Service/usr/share/elasticsearch/dataStateful search infrastructure

References

DocumentContents
references/sizing-and-snapshots.mdSizing guidance, snapshot lifecycle, restore procedures, cost patterns
  • render-web-services — Deploy lifecycle, health checks (disk disables zero-downtime)
  • render-private-services — Internal services with disks (Elasticsearch, MySQL)
  • render-blueprintsdisk field reference in render.yaml
  • render-postgres — Managed database alternative (no disk management needed)