Cloudinary Picker - Administrator Guide
Installing and Configuring the Cloudinary Picker Module
This guide explains how to install and configure the Cloudinary Content Picker module in Jahia.
What you'll learn:
- How to install the Cloudinary module
- How to configure the connection to Cloudinary
- How the integration works behind the scenes
- How to troubleshoot common issues
Prerequisites:
- Jahia 8.2.x or higher
- Active Cloudinary account with API access
- Administrator access to Jahia
Overview
The Cloudinary Content Picker module allows you to browse, select, and display media assets from your Cloudinary Digital Asset Management (DAM) system directly within Jahia content. This integration enables you to reference Cloudinary images and videos without duplicating files, keeping your content lightweight and always up-to-date with your DAM.
Installation
Installing from the Jahia Store
- Log in to jContent as an administrator
- Navigate to Administration → Server → Modules and Extensions → Modules
- Click the Available modules tab
- Search for "Cloudinary Content Picker"
- Click the install icon next to the module
- Wait for the installation to complete (you'll see a confirmation message)
Configuration
After installation, you need to configure the connection to your Cloudinary account.
Step 1: Access the Configuration Interface
- Open Jahia Tools in your browser:
https://your-jahia-domain.com/tools - Navigate to Administration and Guidance → OSGi Console
- Click OSGi → Configuration in the left menu
Step 2: Configure Cloudinary Provider
-
Find "Cloudinary Provider" in the configuration list
- You can use the search box to filter by typing "cloudinary"
- The PID (identifier) is:
org.jahia.se.modules.dam.cloudinary.provider.config
-
Enter your Cloudinary API credentials (available in your Cloudinary Console dashboard):
cloudName = your-cloud-name apiKey = your-api-key apiSecret = your-api-secret -
Verify the following settings match your Cloudinary instance (these are the default values, typically no changes needed):
apiSchema = https apiEndPoint = api.cloudinary.com apiVersion = v1_1 -
Configure picker availability (optional):
applyOnPickers = image,file,videoThis setting controls which Jahia picker types will show the Cloudinary option:
image- Cloudinary appears in image pickersfile- Cloudinary appears in file pickersvideo- Cloudinary appears in video pickers
Example scenarios:
applyOnPickers = image,video→ Cloudinary available for images and videos onlyapplyOnPickers = image→ Cloudinary available for images onlyapplyOnPickers = file→ Cloudinary available for file pickers only
If a Jahia property uses an "Image" picker and
applyOnPickerscontainsimage, the Cloudinary picker will be accessible. Otherwise, it won't appear as an option. -
Review the mount point (this is where Cloudinary assets appear in Jahia's content tree):
edpMountPath = /sites/systemsite/contents/dam-cloudinary⚠️ Important: This path must be unique across all external providers in your Jahia installation.
-
Configure HTTP timeouts (optional, adjust if you experience slow API responses):
connectionTimeout = 10000 # 10 seconds socketTimeout = 30000 # 30 seconds connectionRequestTimeout = 10000 # 10 seconds -
Click Save
Step 3: Verify the Configuration
The provider will automatically start if all required settings are correctly configured:
apiSchemaapiEndPointapiVersioncloudNameapiKeyapiSecretedpMountPath
You can verify the provider started successfully in two ways:
Option A: Check the Logs
Look for this message in the Jahia logs (digital-factory-data/logs/jahia.log):
INFO [CloudinaryDataSource] - Cloudinary mount point service started
Option B: Check the Cache Management
- Navigate to Administration → Server → System → Cache Management
- Search for "EDPCloudinary"
- If you see this cache, the provider has started successfully
If the provider didn't start, check that all required fields are filled in, especially cloudName, apiKey, and apiSecret.
Step 4: Enable for Your Site
- Navigate to Administration → Server → Modules and Extensions → Modules
- Search for "cloudinary" in the module list
- Find the Cloudinary Content Picker module
- Toggle the switch to enable it for your site (e.g., "digitall")
- Click Save
- Reload your browser page to apply the changes
The Cloudinary picker is now ready to use in your site's content.
Understanding the Integration
No Binary Duplication
When you select a Cloudinary asset in Jahia, the actual file is not copied to Jahia. Instead:
-
Only a reference is stored in Jahia content
- Contains the asset ID and optional transformation parameters
-
The file stays in Cloudinary
- Your Cloudinary DAM remains the single source of truth
- Updates to the asset in Cloudinary are reflected in Jahia (subject to cache duration)
-
URLs are generated on-demand
- When a page is rendered, Jahia generates the asset URL
- The URL points directly to the Cloudinary CDN
Benefits:
- Storage efficiency: No duplicate files in Jahia
- Up-to-date content: Asset updates propagate to all sites (after cache refresh)
- Centralized management: All assets managed from your DAM
- Performance: Cloudinary's global CDN delivers assets with automatic optimization
Caching Strategy
The module uses caching to optimize performance and reduce API calls to Cloudinary.
Asset Metadata Cache
What is cached:
- Asset properties (title, dimensions, format, resource type)
- Transformation parameters (crop, resize settings from picker)
- Base URL components
Cache duration:
- Time to Live (TTL): 8 hours (default)
- Time to Idle (TTI): 1 hour (default)
How it works:
- First request → Fetches from Cloudinary API → Stores in cache
- Subsequent requests → Served from cache
- Cache expires after 8 hours or 1 hour of inactivity
Note: If an asset is updated in Cloudinary, the change will appear in Jahia after the cache expires (up to 8 hours by default).
Cache Management
Viewing the cache:
- Navigate to Administration → Server → System → Cache Management
- Search for "EDPCloudinary"
- View statistics (size, hit rate, misses)
Clearing the cache:
- Manual: Restart Jahia
- Automatic: Cache entries expire after TTL/TTI
Adjusting cache settings:
- Navigate to OSGi Configuration
- Find Cloudinary Cache, PID:
org.jahia.se.modules.dam.cloudinary.cache.config - Adjust values:
edpCacheTtl = 28800 # 8 hours (in seconds) edpCacheTti = 3600 # 1 hour (in seconds)
Known Limitations
Compatibility Issues
jContent Thumbnails
- Thumbnails may not display correctly in jContent versions prior to 3.5.0
- Impact: Assets can still be selected and displayed on pages; only the thumbnail preview is unavailable in the form card view after a Cloudinary asset is selected
- Workaround: No workaround available, update to 3.5.0 is required
- Fixed in: 3.5.0 (release pending)
CKEditor 5 Support
- The Cloudinary picker is not compatible with CKEditor 5 (CKE5) until the upcoming module version 1.1.0
- Current support: CKEditor 4 only
- Expected release: Version 1.1.0
- Impact: Cannot insert Cloudinary assets into CKE5 rich text fields
JavaScript Modules (NPM)
- Not compatible with
@jahia/javascript-modules-libraryversions prior to 1.1.0 - Required version: 1.1.0+
- Expected release: Upcoming version 1.1.0
- Impact: React/JSX rendering may fail with older versions
Functional Limitations
"Open in New Tab" Not Supported
- When a Cloudinary asset is selected for a weak reference field, the "Open in new tab" context menu option does not work
- Reason: External assets are not directly browsable in jContent
- Workaround: View the asset in the Cloudinary Media Library directly
No Direct Asset Editing
- Assets cannot be edited directly from Jahia (transformations must be applied during selection or via template parameters)
- Workaround: Re-select the asset with new transformations, or edit in Cloudinary
Cache Delay for Updates
- Asset updates in Cloudinary are not immediately reflected in Jahia due to caching (default: 8 hours)
- Workaround: Flush Cloudinary cache or wait for cache expiration
- See "Cache Management" section above for cache configuration
Limited Video Format Support
- Only formats supported by Cloudinary are available
- Common formats: MP4, WebM, MOV, AVI
- Unsupported: Proprietary codecs may require conversion in Cloudinary
No Batch Operations
- Cannot bulk-select or bulk-transform multiple Cloudinary assets at once
- Workaround: Select and configure assets individually
Advanced Transformations Limitation
- Only basic transformations (crop, resize, gravity) are supported through the picker
- Advanced features like overlays, effects, or layered transformations require manual URL construction
- Workaround: Use Cloudinary's upload presets or named transformations, then reference via URL
Troubleshooting
Assets Not Appearing in the Picker
Check these items:
- Verify
cloudName,apiKey, andapiSecretare configured in OSGi - Check logs for:
INFO [CloudinaryDataSource] - Cloudinary mount point service started - Open browser console (F12) and look for errors
- Verify your Cloudinary account is active and not rate-limited
Images Not Loading on the Website
Check these items:
- Verify property names match your content definition
- Check browser console for CORS or network errors
- Verify
cloudNamein OSGi configuration matches your Cloudinary account - Check that assets are publicly accessible (not restricted by privacy settings)
Slow Performance
Solutions:
- Increase timeout values in OSGi Configuration (Cloudinary Provider):
connectionTimeout = 20000 socketTimeout = 60000 connectionRequestTimeout = 20000 - Check cache hit rate in Cache Management
- Use Cloudinary's automatic format (
f_auto) and quality (q_auto) optimizations - Consider using responsive breakpoints for images
API Rate Limiting
Symptoms:
- Slow loading or failed requests
- Error messages in logs about rate limits
Solutions:
- Upgrade your Cloudinary plan for higher API limits
- Increase cache TTL to reduce API calls
- Use Cloudinary's SDK caching features
Need More Help?
- Check Jahia logs
- Enable DEBUG logging: OSGi Console → Log Service →
org.jahia.se.modules.dam.cloudinary - Contact Jahia Support: https://jira.jahia.org/
Summary
Key takeaways:
- The module must be installed and configured before use
- API credentials (cloudName, apiKey, apiSecret) are required to connect to Cloudinary
- The provider starts automatically when all required settings are configured
- Caching optimizes performance (8-hour default TTL)
- Assets are referenced, not duplicated
- Cloudinary's CDN handles automatic format optimization and delivery
For usage instructions, see the Using Cloudinary Assets Guide.