Where Does Self-Hosted Plane Store Uploads?
Plane self-hosted upload volume and env file paths for Docker Compose installs, plus how to inspect them.
Last updated
Plane runs as several Docker containers with named volumes for persistence. Uploaded attachments live in a volume usually called plane_uploads, mounted at /code/uploads inside the API container. Postgres and Redis keep their own volumes beside it.
Settings come from a .env file next to docker-compose.yml. That file holds the secret key, domain, and optional S3 overrides. When S3 is configured, new uploads skip the local volume. Inspect the volume and the .env together when files seem to vanish after an upgrade.
Where Plane stores this, by platform
plane_uploads (/code/uploads in api)
Named volume for issue attachments. Confirm the real name with docker volume ls since compose prefixes vary. Mount it read only into alpine and tar it for backup.
.env (next to docker-compose.yml)
Holds SECRET_KEY, database URLs, and file storage switches. Keep a copy off the server. Rebuilding with a fresh key invalidates existing sessions.
Frequently asked questions
how do i find Plane volumes on the host
Run docker volume ls to list them, then docker volume inspect plane_uploads for the host mountpoint. Uploads, Postgres data, and Redis data each use their own named volume. Exact prefixes follow the compose project name.
what do i back up for a Plane migration
Back up the uploads volume with a Postgres dump and the .env file. The .env holds SECRET_KEY and S3 switches. Without the original key, old sessions and some encrypted values break.
Notice an outdated path? Let us know.