Storage backends
CM Box stores file content (images, documents, video, renditions) in an
external object store, while all metadata lives in Redis. The storage client
uses a strategy pattern: one generic interface with three interchangeable
backend implementations, selected by a single type value in the storage
configuration.
type |
Backend |
|---|---|
oci |
Oracle Cloud Infrastructure (OCI) Object Storage |
azure |
Azure Blob Storage |
wcc |
Oracle WebCenter Content |
Where the configuration lives
Section titled “Where the configuration lives”You normally enter storage settings once, in the Storage Configuration
section of the instance setup form. CM Box
saves them as a JSON document in the primary Redis database (key
fb:middleware:storage_config) and the storage client loads them from there
at startup. The document has this shape:
{ "storage": { "type": "oci", "oci": { "...": "OCI settings" }, "azure": { "...": "Azure settings" }, "wcc": { "...": "WCC settings" } }}Only the section matching storage.type is used. The same structure is used
by the storage_config.json file variants that ship with the source tree for
local development.
OCI Object Storage (oci)
Section titled “OCI Object Storage (oci)”| Field | Description |
|---|---|
configurationFilePath |
Path where the OCI SDK config file is written inside the container. Always ./.ociconfig — the setup form sets this for you. |
configProfile |
Profile name to use within the OCI config file. Typically DEFAULT. |
namespace |
Your OCI Object Storage namespace. |
compartmentId |
OCID of the compartment where CM Box creates its buckets. |
keyFileName |
Filename of the uploaded private key. Set automatically from the key file you upload. |
OCI authentication uses two files you upload during instance setup — the
OCI Connection Config File and the OCI Private Key File for a service
user with access to Object Storage. CM Box stores both in Redis and writes
them out inside the container at startup, so they survive container
replacement. All five fields (including keyFileName) must be present for
the OCI client to initialize.
Buckets created in OCI are named FBCMS_<repository id>_<CACHE_ROOT> and are
created with versioning enabled.
Azure Blob Storage (azure)
Section titled “Azure Blob Storage (azure)”| Field | Description |
|---|---|
AZURE_STORAGE_CONNECTION_STRING |
The full connection string for the storage account (the DefaultEndpointsProtocol=...;AccountName=...;AccountKey=... form). Required — initialization fails without it. |
Containers created in Azure are named
fbcms-<repository id>-<cache root> (lowercased; underscores in the
CACHE_ROOT become hyphens, per Azure container naming rules).
Oracle WebCenter Content (wcc)
Section titled “Oracle WebCenter Content (wcc)”| Field | Description |
|---|---|
wccUrl |
Base URL of the WebCenter Content instance, including the /_dav/cs path (for example https://wcc.example.com/_dav/cs). |
username |
Service account username used for check-ins and file retrieval. |
password |
Service account password. Sent as HTTP Basic authentication. |
With the WCC backend, files are checked in as WebCenter Content documents
(IdcService calls) rather than bucket objects; the service account is
recorded as the document author.
Per-repository buckets
Section titled “Per-repository buckets”Storage is provisioned per repository: when you create a repository, CM Box
creates a dedicated bucket (or container) for it in the active backend and
records the name in the repository config (storage.bucketName). Deleting a
repository deletes its bucket — repository deletion is blocked if the bucket
cannot be removed. See Repositories.
Changing storage settings
Section titled “Changing storage settings”Re-open the setup form at /instance_setup?bypassSetupCheck=1 to view or
change the storage configuration; the form is pre-filled with current values.
The storage client re-initializes after the configuration is saved. Note that
existing content is not migrated between backends — plan the backend
choice before loading content.
Related
Section titled “Related”- Instance setup and licensing — where storage is configured
- Repositories — per-repository buckets
- Environment variable reference