Best approach for media storage when scaling Umbraco with Docker (no cloud storage allowed)

Hi everyone,

We are in the planning phase of a new Umbraco 17 setup and would like advice on the best solution for our scenario before we start building.

Our requirements:

  • The site will run in Docker containers, and we must support horizontal scaling (multiple instances).

  • Backoffice will run as a single instance in Docker.

  • Frontend (headless) will run as multiple scalable containers.

  • Cloud storage (Azure Blob, AWS S3, etc.) is not allowed due to organisational restrictions.

  • Media, logs, and similar persistent assets must be stored on a dedicated on-prem VM.

  • We want the system to be stable, scalable, and compatible with Umbraco’s media cropper.

Since cloud storage is not an option, we are evaluating the idea of using a separate VM as a media server and mounting it into the containers, or implementing a custom IFileSystem that writes to this VM via SMB/UNC or an API.

Before committing, we would like guidance on:

  1. What is the recommended approach for media storage when running Umbraco in Docker with scaling, but cloud storage is not possible?

  2. Is running a dedicated Media Server VM (accessed by all containers) a practical pattern?

  3. If we implement a custom IFileSystem:

    • Are there examples for pointing Umbraco’s media to a remote VM?

    • Will Umbraco image crops still work correctly in this setup?

  4. Are there known pitfalls with shared media storage in scaled Docker environments (locking, latency, permissions)?

  5. Any alternative patterns used by others who run on-premise, Docker, and no cloud?

We want to make sure the architecture is future-proof and aligned with Umbraco best practices. Any suggestions or prior experiences would be really helpful.