{"id":415998,"date":"2024-01-09T12:16:45","date_gmt":"2024-01-09T12:16:45","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=415998"},"modified":"2025-10-31T11:35:56","modified_gmt":"2025-10-31T11:35:56","slug":"magento2-cloudflare-r2-storage-documentation","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/","title":{"rendered":"Guide for Magento 2 Cloudflare R2 Storage"},"content":{"rendered":"\n<p><a href=\"https:\/\/store.webkul.com\/magento2-cloudflare-r2-storage-extension.html\" target=\"_blank\" rel=\"noreferrer noopener\">Magento 2 Cloudflare R2 Storage extension<\/a> allows the admin to store data, including downloadable products, images, videos, docs, content files, etc, securely on Cloudflare R2 Storage.<\/p>\n\n\n\n<p>It also supports the storage of static files like HTML, CSS, and JS, optimizing website performance.<\/p>\n\n\n\n<p>Additionally, the admin can upload various product media files from their local disk to Cloudflare R2 Storage.<\/p>\n\n\n\n<p> This functionality helps enhance site and page load speeds by eliminating unnecessary pauses, ensuring a smoother user experience even during high-traffic periods.<\/p>\n\n\n\n<p>Also if you are looking for the Amazon S3 Cloud storage then you can check <a href=\"https:\/\/store.webkul.com\/magento2-amazon-s3-extension.html\" target=\"_blank\" rel=\"noreferrer noopener\">Magento 2 Amazon S3 Extension<\/a>.<\/p>\n\n\n\n<p>Please also find below a video explaining the working of the extension,<\/p>\n\n\n\n<div class=\"wp-block-wk-block-youtube-video wp-block-wk-block--yt-video components-placeholder\"><div class=\"wk-block--yt-video-frame\"><div class=\"wk-block--yt-video-frame-request\" data-plyr-provider=\"youtube\" data-plyr-embed-id=\"fzCZEpxJMk0\"><div class=\"components-placeholder__instructions\">fzCZEpxJMk0<\/div><\/div><\/div><\/div>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h2 class=\"wp-block-heading index-title\">Features<\/h2>\n<\/div><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Compatibility for all product types within the Adobe Commerce.<\/li>\n\n\n\n<li>Magento 2 Cloudflare R2 storage is used to store and retrieve media files for different product types, product images, media in product descriptions, short descriptions, and image editing files.<\/li>\n\n\n\n<li>The admin can save static files on Cloudflare R2 ie (HTML, CSS, and JS).<\/li>\n\n\n\n<li>This extension offers flexible configuration.<\/li>\n\n\n\n<li>Store and download files from Cloudflare R2.<\/li>\n\n\n\n<li>The admin can check bucket availability with one click.<\/li>\n\n\n\n<li>Admin can download the files from Cloudflare R2.<\/li>\n\n\n\n<li>This extension is fully Open Source and easy to use.<\/li>\n\n\n\n<li>Admin can export media using the message queue.<\/li>\n\n\n\n<li>Host and synchronize all downloadable products.<\/li>\n<\/ul>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Installation of Magento 2 Cloudflare R2<\/h3>\n<\/div><\/div>\n\n\n\n<p>The installation is quite simple just like the standard&nbsp;<a href=\"https:\/\/store.webkul.com\/Magento-2.html\" target=\"_blank\" rel=\"noreferrer noopener\">Magento 2 extensions<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">#1 Download Module<\/h2>\n\n\n\n<p>Firstly, you need to log in to the Webkul Store, go to&nbsp;<strong>My Account<\/strong>&gt;<strong>My Purchased Products<\/strong>&nbsp;section, verify, and then download and extract the contents of this zip folder on the system.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">#2 Upload Folder<\/h3>\n\n\n\n<p>Once the module zip is extracted, follow path\u00a0<strong>src>app<\/strong>\u00a0and then transfer the\u00a0<strong>app<\/strong>\u00a0folder into the\u00a0<strong>Adobe Commerce root<\/strong>\u00a0directory on the server as shown below:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"386\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59-1200x386.png\" alt=\"screenshot_from_2023_12_28_13_15_59-Magento 2 Cloudflare R2\" class=\"wp-image-416024\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59-1200x386.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59-300x97.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59-250x80.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59-768x247.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59.png 1532w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">#3 Run Commands<\/h3>\n\n\n\n<p>After uploading the module folder, you need to run the following commands in the Magento 2 root directory:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">composer require aws\/aws-sdk-php<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\">php bin\/magento setup:upgrade<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\">php bin\/magento setup:di:compile<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\">php bin\/magento setup:static-content:deploy<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\">php bin\/magento indexer:reindex<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\">php bin\/magento cache:flush<\/pre>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Multi-Lingual Configuration<\/h3>\n<\/div><\/div>\n\n\n\n<p>Therefore, for Multilingual support, please navigate to&nbsp;<strong>Store&gt;Configuration&gt;General &gt;Locale Options<\/strong>.&nbsp; Also, select your desired language from the&nbsp;<strong>Locale&nbsp;<\/strong>option.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"571\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Configuration-Settings-Stores-Magento-Admin-1200x571.png\" alt=\"Configuration-Settings-Stores-Magento-Admin-Magento 2 Cloudflare R2\" class=\"wp-image-416782\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Configuration-Settings-Stores-Magento-Admin-1200x571.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Configuration-Settings-Stores-Magento-Admin-300x143.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Configuration-Settings-Stores-Magento-Admin-250x119.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Configuration-Settings-Stores-Magento-Admin-768x365.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Configuration-Settings-Stores-Magento-Admin-1536x730.png 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Configuration-Settings-Stores-Magento-Admin.png 1815w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Thus, in this way, a multi-lingual configuration can be done.<\/p>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Language Translation<\/h3>\n<\/div><\/div>\n\n\n\n<p>For Magento 2 Cloudflare R2 Storage translation, navigate to the following path in your system&nbsp;<strong>src\/app\/code\/Webkul\/CloudflareR2Storage\/i18n.<\/strong><\/p>\n\n\n\n<p>Open the file named&nbsp;<strong>en_US.CSV&nbsp;<\/strong>for editing as shown in the below screenshot.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"389\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_17_07-1200x389.png\" alt=\"Magento 2 Cloudflare R2\" class=\"wp-image-416030\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_17_07-1200x389.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_17_07-300x97.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_17_07-250x81.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_17_07-768x249.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_17_07.png 1529w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Now, upload it to the path&nbsp;<strong><strong>src\/app\/code\/Webkul\/CloudflareR2Storage\/i18n<\/strong><\/strong>&nbsp;where the installation of Magento 2 is on the server. The module gets translated into the desired language.<\/p>\n\n\n\n<p>The user can edit the CSV like the image below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"550\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_18_33-1200x550.png\" alt=\"Magento 2 Cloudflare R2\" class=\"wp-image-416034\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_18_33-1200x550.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_18_33-300x138.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_18_33-250x115.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_18_33-768x352.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_18_33.png 1367w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>After editing and translating the CSV file, you need to save the translated file name according to your region language and country code such as \u2013<strong>&nbsp;de_DE.<\/strong>CSV.<\/p>\n\n\n\n<p>Followed by uploading the translated file to the same folder from where you have obtained it. Now your module translation is complete.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"281\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/screenshot_from_2024_01_09_17_28_02-1-1200x281.png\" alt=\"Magento 2 Cloudflare R2\" class=\"wp-image-417250\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/screenshot_from_2024_01_09_17_28_02-1-1200x281.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/screenshot_from_2024_01_09_17_28_02-1-300x70.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/screenshot_from_2024_01_09_17_28_02-1-250x59.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/screenshot_from_2024_01_09_17_28_02-1-768x180.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/screenshot_from_2024_01_09_17_28_02-1.png 1527w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Thus, in this way, language translation can be done.<\/p>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">How to Get API Credential?<\/h3>\n<\/div><\/div>\n\n\n\n<p>To get Cloudflare R2 Storage API credentials the admin needs to click the below link.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.cloudflare.com\/en-gb\/\">https:\/\/www.cloudflare.com\/en-gb\/<\/a>.<\/p>\n\n\n\n<p>After clicking the link the admin will redirect to the Cloudflare website. Here the admin needs to <strong>&#8220;Sign Up&#8221;<\/strong> or if already have an account then click on &#8220;<strong>Log in<\/strong>&#8220;.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"642\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Cloudflare-The-Web-Performance-Security-Company-Cloudflare-1200x642.png\" alt=\"Cloudflare-The-Web-Performance-Security-Company-Cloudflare-Magento 2 Cloudflare R2\" class=\"wp-image-416461\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Cloudflare-The-Web-Performance-Security-Company-Cloudflare-1200x642.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Cloudflare-The-Web-Performance-Security-Company-Cloudflare-300x161.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Cloudflare-The-Web-Performance-Security-Company-Cloudflare-250x134.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Cloudflare-The-Web-Performance-Security-Company-Cloudflare-768x411.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Cloudflare-The-Web-Performance-Security-Company-Cloudflare-1536x822.png 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Cloudflare-The-Web-Performance-Security-Company-Cloudflare.png 1742w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Here the admin needs to provide a valid email ID and password to log in.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"640\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Cloudflare-Web-Performance-Security-1200x640.png\" alt=\"Cloudflare-Web-Performance-Security-Magento 2 Cloudflare R2\" class=\"wp-image-416464\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Cloudflare-Web-Performance-Security-1200x640.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Cloudflare-Web-Performance-Security-300x160.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Cloudflare-Web-Performance-Security-250x133.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Cloudflare-Web-Performance-Security-768x410.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Cloudflare-Web-Performance-Security-1536x819.png 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Cloudflare-Web-Performance-Security.png 1805w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>After login, the admin needs to scroll down the left side menu and click on <strong>&#8220;R2&#8221;<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"579\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Home-Webkul-Software-Private-Limited-Cloudflare-1200x579.png\" alt=\"Home-Webkul-Software-Private-Limited-Cloudflare-Magento 2 Cloudflare R2\" class=\"wp-image-416466\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Home-Webkul-Software-Private-Limited-Cloudflare-1200x579.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Home-Webkul-Software-Private-Limited-Cloudflare-300x145.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Home-Webkul-Software-Private-Limited-Cloudflare-250x121.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Home-Webkul-Software-Private-Limited-Cloudflare-768x370.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Home-Webkul-Software-Private-Limited-Cloudflare-1536x741.png 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Home-Webkul-Software-Private-Limited-Cloudflare.png 1806w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Clicking on R2 Object Storage, now the admin needs to select  <strong>&#8220;Manage R2 API Tokens&#8221; <\/strong>from API dropdown.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/r2-object-storage-manage-api.webp\" alt=\"r2-object-storage-manage-api\" class=\"wp-image-487740\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/r2-object-storage-manage-api.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/r2-object-storage-manage-api-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/r2-object-storage-manage-api-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/r2-object-storage-manage-api-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>After clicking on <strong>&#8220;Manage R2 API Tokens&#8221;<\/strong>, now the admin needs to click on <strong>&#8220;Create Account API Token&#8221;<\/strong> or <strong>&#8220;Create User API Token&#8221; <\/strong>as per need.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/click-api-token.webp\" alt=\"click-api-token\" class=\"wp-image-487743\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/click-api-token.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/click-api-token-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/click-api-token-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/click-api-token-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>After clicking on <strong>&#8220;Create API Token&#8221;<\/strong>, now the admin needs to choose <strong>&#8220;Object Read &amp; Write:&nbsp;Allows the ability to read, write, and list objects in specific buckets.&#8221;<\/strong> <\/p>\n\n\n\n<p>then needs to click on <strong>&#8220;Create API Token&#8221;<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"600\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-1-1200x600.png\" alt=\"Webkul-Software-Private-Limited-Cloudflare-1\" class=\"wp-image-416479\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-1-1200x600.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-1-300x150.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-1-250x125.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-1-768x384.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-1-1536x768.png 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-1.png 1800w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Here the admin will get the Access Key ID, Secret Access Key and storage endpoint URL.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"658\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-2-1200x658.png\" alt=\"Webkul-Software-Private-Limited-Cloudflare-2\" class=\"wp-image-416490\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-2-1200x658.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-2-300x164.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-2-250x137.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-2-768x421.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-2-1536x842.png 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-2.png 1797w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Bucket Creation<\/h3>\n<\/div><\/div>\n\n\n\n<p>Here the admin needs to click on <strong>&#8220;Create Bucket&#8221;<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/create-bucket.webp\" alt=\"create-bucket\" class=\"wp-image-487745\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/create-bucket.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/create-bucket-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/create-bucket-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/create-bucket-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Clicking on <strong>&#8220;Create Bucket&#8221;<\/strong>, then the admin needs to define the bucket name choose <strong>&#8220;Automatic&#8221;<\/strong> and click on <strong>&#8220;Create Bucket&#8221;<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-create-deatils.webp\" alt=\"bucket-create-details\" class=\"wp-image-487746\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-create-deatils.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-create-deatils-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-create-deatils-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-create-deatils-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>After clicking on <strong>&#8220;Create Bucket&#8221;<\/strong>, the admin needs to click on <strong>&#8220;Setting&#8221;<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-settings.webp\" alt=\"bucket-settings\" class=\"wp-image-487747\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-settings.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-settings-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-settings-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-settings-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>After clicking on <strong>&#8220;Setting&#8221;<\/strong>, they needs to choose <strong>&#8220;R2.dev Subdomain&#8221;<\/strong> and then click on <strong>&#8220;Allow Access&#8221;<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-details-public-access.webp\" alt=\"bucket-details\" class=\"wp-image-487771\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-details-public-access.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-details-public-access-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-details-public-access-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-details-public-access-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Clicking on <strong>&#8220;Allow Access&#8221;<\/strong>, the admin needs to enter <strong>&#8220;allow&#8221;<\/strong> in small letter and then click on <strong>&#8220;Allow&#8221;<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/allow-public-access.webp\" alt=\"allow public access\" class=\"wp-image-487772\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/allow-public-access.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/allow-public-access-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/allow-public-access-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/allow-public-access-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>After clicking on <strong>&#8220;Allow&#8221;<\/strong>, then the admin will get the bucket URL.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"636\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-4-1200x636.png\" alt=\"Webkul-Software-Private-Limited-Cloudflare-4\" class=\"wp-image-416512\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-4-1200x636.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-4-300x159.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-4-250x132.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-4-768x407.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-4-1536x814.png 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/Webkul-Software-Private-Limited-Cloudflare-4.png 1789w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p><strong>Note: <\/strong>Now, you have to make sure that Cors permissions are given to the<strong> <\/strong>bucket provided in Cloudflare R2.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-url-1.webp\" alt=\"bucket-url\" class=\"wp-image-487776\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-url-1.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-url-1-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-url-1-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/bucket-url-1-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Configuration of Magento 2 Cloudflare R2 Storage Extension<\/h3>\n<\/div><\/div>\n\n\n\n<p>After the extension installation, the admin will configure the module settings by navigating to <strong>Stores &gt; Configuration &gt; Cloudflare R2<\/strong> <strong>Storage&nbsp;<\/strong>as per the below image:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">General Setting<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Allow files to save on Cloudflare R2 Storage:<\/strong> To save the file on the Cloudflare R2 Storage set this as&nbsp;<strong>YES&nbsp;<\/strong>else set it as&nbsp;<strong>NO.<\/strong><\/li>\n\n\n\n<li><strong>Storage Endpoint URL:<\/strong> Enter the storage endpoint URL, here which you will get after creating an account on Cloudflare R2 storage.<\/li>\n\n\n\n<li><strong>Access Key ID:<\/strong> Need to enter the access key ID, which you will get after creating an account on Cloudflare R2 Storage. <\/li>\n\n\n\n<li><strong>Secret Key:<\/strong> Here you need to enter the secret key, which you will get after creating an account on Cloudflare R2.<\/li>\n\n\n\n<li><strong>Bucket Name:<\/strong> Put the Cloudflare bucket name which you have created in the Cloudflare R2 account.<\/li>\n\n\n\n<li><strong>Region:<\/strong> Here the admin can choose any specific region or select auto for saving data automatically by the region.<\/li>\n\n\n\n<li><strong>Check Bucket Availability:<\/strong> Click the <strong>\u201ccheck\u201d<\/strong> button to check the bucket availability.&nbsp;If it is available and exists in the Cloudflare R2, it shows the message <strong>\u201cAvailable&#8221;<\/strong> otherwise it displays &#8220;<strong>Error Message&#8221;<\/strong>. <\/li>\n\n\n\n<li><strong>Re-Synchronize Media Storage Without Uploading Media To Bucket:<\/strong> If enabled, executing the \u2018export: media\u2019 command will not upload media contents to the bucket, it only Re-Synchronize Media Storage to the Cloudflare R2 bucket.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-configuration.webp\" alt=\"magento2-cloudflare-r2-storage-extension-configuration\" class=\"wp-image-487262\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-configuration.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-configuration-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-configuration-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-configuration-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Static View Files Settings<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Enable For Static View files:<\/strong> Here the admin can set <strong>&#8220;Yes&#8221;<\/strong> or <strong>&#8220;No&#8221;<\/strong> to upload static view files at Cloudflare R2.<\/li>\n\n\n\n<li><strong>Bucket Name:<\/strong> Here the admin needs to define the bucket name.<\/li>\n\n\n\n<li><strong>Region:<\/strong> The admin can select the region from the list.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-static-file-settings.webp\" alt=\"Configuration-Settings-Stores-Magento-Admin-1\" class=\"wp-image-487263\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-static-file-settings.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-static-file-settings-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-static-file-settings-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-static-file-settings-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Cache Setting<\/h3>\n\n\n\n<p>The admin has the capability to control the cache by specifying file extensions, setting the maximum age in seconds, and manipulating rows by adding or deleting them.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-cache-control.webp\" alt=\"cache-control\" class=\"wp-image-487265\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-cache-control.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-cache-control-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-cache-control-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-cache-control-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Storage Configuration for Media<\/h3>\n<\/div><\/div>\n\n\n\n<p>After the extension configuration, now the admin needs to do media storage configuration for Cloudflare R2.<\/p>\n\n\n\n<p>For configuring media storage for Cloudflare R2, the admin can do it by two methods one is from command and the second they can setup by manually.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Command:<\/h3>\n\n\n\n<p>Here the admin needs to run the below command to configure media storage for Cloudflare R2.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">php bin\/magento export:media<\/pre>\n\n\n\n<p>After running this command, the&nbsp;<strong>Media Storage<\/strong>&nbsp;field will get set to the Cloudflare R2 automatically and all media will get synchronized with the Cloudflare R2 server.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"732\" height=\"144\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-1-1.webp\" alt=\"command-1\" class=\"wp-image-487454\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-1-1.webp 732w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-1-1-300x59.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-1-1-250x49.webp 250w\" sizes=\"(max-width: 732px) 100vw, 732px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>With specific folder and without message queue<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">php bin\/magento export:media --folder=xyz --isqueue=0<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"994\" height=\"146\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-2.webp\" alt=\"command-2\" class=\"wp-image-487455\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-2.webp 994w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-2-300x44.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-2-250x37.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-2-768x113.webp 768w\" sizes=\"(max-width: 994px) 100vw, 994px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>With specific folder and with message queue<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">php bin\/magento export:media --folder=xyz --isqueue=1<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"915\" height=\"100\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-3.webp\" alt=\"command-3\" class=\"wp-image-487456\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-3.webp 915w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-3-300x33.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-3-250x27.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-3-768x84.webp 768w\" sizes=\"(max-width: 915px) 100vw, 915px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p><strong>Note &#8211;<\/strong> Below-mentioned commands are mandatory after the above commands to export media with message queue.<\/p>\n\n\n\n<p>Message queue command for folder-wise upload<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">php bin\/magento queue:consumers:start r2storage.export.folder &amp;<\/pre>\n\n\n\n<p>Message queue command for media files upload<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">php bin\/magento queue:consumers:start r2storage.export.media &amp;<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Manual:<\/h3>\n\n\n\n<p>Second, the admin can also configure media storage for Cloudflare R2 storage by manually clicking <strong>&#8220;Store&gt;Configuration&gt;Advanced&gt;System&gt;Storage Configuration for Media&gt;Set as Cloudflare R2&#8221;<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-storage-confirguration-for-media.webp\" alt=\"Storage Configuration for Media\" class=\"wp-image-487269\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-storage-confirguration-for-media.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-storage-confirguration-for-media-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-storage-confirguration-for-media-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-storage-confirguration-for-media-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>After selecting the Cloudflare R2 from the list, the admin needs to click on the&nbsp;<strong>Synchronize<\/strong>&nbsp;button to synchronize all media with the Cloudflare R2 server and then \u201c<strong>Save Config<\/strong>\u201c.<\/p>\n\n\n\n<p><strong>Note:-&nbsp;&nbsp;<\/strong>Media will not be available in the new location until the synchronization process is complete.<\/p>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Setup Base URLs for the User Media File<\/h3>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Base URLs:<\/h3>\n\n\n\n<p>Here the admin can set the base URL for the user media file by clicking <strong>&#8220;Store&gt;Configuration&gt;General&gt;Web&#8221;.<\/strong><\/p>\n\n\n\n<p>Further, in the <strong>&#8220;Base URL for User Media Files&#8221;<\/strong> option, the admin will enter the Cloudflare R2 bucket URL that saves and retrieves the media files.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-base-urls-1.webp\" alt=\"base-urls-media-files\" class=\"wp-image-487277\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-base-urls-1.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-base-urls-1-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-base-urls-1-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-base-urls-1-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Base URLs  (Secure)<\/h3>\n\n\n\n<p>The admin will also set base URLs in the secure mode as well.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-secure-base-urls-1.webp\" alt=\"secure-base-urls-media-files\" class=\"wp-image-487278\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-secure-base-urls-1.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-secure-base-urls-1-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-secure-base-urls-1-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-secure-base-urls-1-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p><strong>For Example:<\/strong><\/p>\n\n\n\n<p>In the below screenshot, you can see that the media files of the website are served from Cloudflare R2 instead of the system or database storage.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"570\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_16_08_45-1-1200x570.png\" alt=\"Magento 2 Cloudflare R2 \" class=\"wp-image-416104\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_16_08_45-1-1200x570.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_16_08_45-1-300x142.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_16_08_45-1-250x119.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_16_08_45-1-768x365.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_16_08_45-1.png 1499w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Setup for the Static View files<\/h3>\n<\/div><\/div>\n\n\n\n<p>If Static View files are enabled then add the static content bucket URL into the Base URL for Static View Files and run the below command.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">php bin\/magento export:static-content<\/pre>\n\n\n\n<p>Once the above-mentioned command is run, all the static files will be exported to the server as shown in the image below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1526\" height=\"236\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-5.webp\" alt=\"command-5\" class=\"wp-image-487800\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-5.webp 1526w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-5-300x46.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-5-1200x186.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-5-250x39.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/command-5-768x119.webp 768w\" sizes=\"(max-width: 1526px) 100vw, 1526px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p><strong>Note &#8211;<\/strong> After running the above command, make sure to run the below command as well to export static file with message queue.<\/p>\n\n\n\n<p>Message queue command for static file upload<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">php bin\/magento queue:consumers:start r2storage.export.static &amp;<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Base URLs:<\/h3>\n\n\n\n<p>Further, in the <strong>&#8220;Base URL for Static View Files&#8221;<\/strong> option, the admin will enter the Cloudflare R2 bucket URL that saves and retrieves the static files.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-base-urls-1.webp\" alt=\"base-urls-media-files-Magento 2 Cloudflare R2\" class=\"wp-image-487277\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-base-urls-1.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-base-urls-1-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-base-urls-1-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-base-urls-1-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Base URLs  (Secure)<\/h3>\n\n\n\n<p>The admin will also set base URLs in the secure mode as well.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-secure-base-urls-1.webp\" alt=\"secure-base-urls-media-files-Magento 2 Cloudflare R2\" class=\"wp-image-487278\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-secure-base-urls-1.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-secure-base-urls-1-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-secure-base-urls-1-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-secure-base-urls-1-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Uploading Products Media<\/h3>\n<\/div><\/div>\n\n\n\n<p>Upon the successful configuration of Cloudflare R2, when the admin uploads any media product, it will be stored on the Cloudflare R2 server, generating a corresponding URL. <\/p>\n\n\n\n<p>Let&#8217;s illustrate this process using both downloadable products and other media files as examples.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">For Downloadable Products:<\/h3>\n\n\n\n<p>Here the admin will add downloadable products by clicking &#8221;&nbsp;<strong>Products -&gt; Catalog -&gt; Add Product<\/strong>&#8211;<strong>&gt;Downloadable Product&#8221;<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-add-product.webp\" alt=\"add-product-Magento 2 Cloudflare R2\" class=\"wp-image-487287\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-add-product.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-add-product-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-add-product-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-add-product-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>After adding all downloadable product details, then the admin needs to upload the file.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-downloadable-information.webp\" alt=\"add-downloadble-information\" class=\"wp-image-487288\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-downloadable-information.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-downloadable-information-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-downloadable-information-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-downloadable-information-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Once the file is uploaded, then the admin needs to save the downloadable product and after saving the products the admin will get the Cloudflare R2 server file URL.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-downloadable-information-link.webp\" alt=\"information-added\" class=\"wp-image-487289\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-downloadable-information-link.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-downloadable-information-link-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-downloadable-information-link-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-downloadable-information-link-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Media Files<\/h3>\n\n\n\n<p>In this module, information related to different product types will be stored on the Cloudflare R2 server. <\/p>\n\n\n\n<p>This information comprises media files, including images, videos, and GIFs associated with the respective products. <\/p>\n\n\n\n<p>These visual elements, such as the primary product image, configurable images, demo product video, description image, GIFs, and others, contribute to presenting detailed information<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-product-image.webp\" alt=\"product-image\" class=\"wp-image-487290\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-product-image.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-product-image-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-product-image-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/01\/magento2-cloudflare-r2-storage-extension-product-image-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>So, either it is any of the simple, virtual, configurable, grouped, bundle, and downloadable products, the media files will get a store to the Cloudflare R2 buckets.<\/p>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Magento 2 Cloudflare R2 &#8211; Frontend Product Page View<\/h3>\n<\/div><\/div>\n\n\n\n<p>Hence, the appearance of the same product in the store front-end will be the same as shown in the image below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"591\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Joust-Duffle-Bag-1200x591.png\" alt=\"Magento2-Cloudflare-R2 \" class=\"wp-image-416141\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Joust-Duffle-Bag-1200x591.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Joust-Duffle-Bag-300x148.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Joust-Duffle-Bag-250x123.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Joust-Duffle-Bag-768x378.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Joust-Duffle-Bag-1536x756.png 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Joust-Duffle-Bag.png 1678w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Moreover, if the customer will view the image in the new tab, the source includes CloudFront in the URL as shown in the image below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"731\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Workspace-1_001-1200x731.png\" alt=\"Magento2-Cloudflare-R2 \" class=\"wp-image-416142\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Workspace-1_001-1200x731.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Workspace-1_001-300x183.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Workspace-1_001-250x152.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Workspace-1_001-768x468.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Workspace-1_001.png 1492w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">CMS Page View<\/h3>\n<\/div><\/div>\n\n\n\n<p>The images or media files are present anywhere in the store. Therefore take an example of the CMS pages.&nbsp; This2 CMS page contains regular images, these will also be fetched from the Cloudflare R also.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"581\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Home-Page-1200x581.png\" alt=\"Magento2-Cloudflare-R2 \" class=\"wp-image-416143\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Home-Page-1200x581.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Home-Page-300x145.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Home-Page-250x121.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Home-Page-768x372.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Home-Page-1536x744.png 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Home-Page.png 1710w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Furthermore, the same will happen with the images in CMS pages too.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"623\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Workspace-1_002-1200x623.png\" alt=\"Magento2-Cloudflare-R2 \" class=\"wp-image-416146\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Workspace-1_002-1200x623.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Workspace-1_002-300x156.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Workspace-1_002-250x130.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Workspace-1_002-768x399.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/Workspace-1_002.png 1495w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Now, wrapping this up, this shows that all the images get retrieved from the Cloudflare R2 if the same will be used as the storage area.<\/p>\n\n\n\n<p>Thus, that\u2019s all for the<strong>&nbsp;Magento 2 Cloudflare R2 Storage Extension<\/strong>. Furthermore, if you still, have any issues, feel free to add a ticket at&nbsp;<a href=\"https:\/\/webkul.uvdesk.com\/en\/\">webkul.uvdesk.com<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Magento 2 Cloudflare R2 Storage extension allows the admin to store data, including downloadable products, images, videos, docs, content files, etc, securely on Cloudflare R2 Storage. It also supports the storage of static files like HTML, CSS, and JS, optimizing website performance. Additionally, the admin can upload various product media files from their local disk <a href=\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":403,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9121],"tags":[],"class_list":["post-415998","post","type-post","status-publish","format-standard","hentry","category-magento-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Magento 2 Cloudflare R2 Storage Guide<\/title>\n<meta name=\"description\" content=\"User guide for Magento 2 Cloudflare R2 Storage explains how the admin can store their media files and static files securely on Cloudflare R2.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Magento 2 Cloudflare R2 Storage Guide\" \/>\n<meta property=\"og:description\" content=\"User guide for Magento 2 Cloudflare R2 Storage explains how the admin can store their media files and static files securely on Cloudflare R2.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/\" \/>\n<meta property=\"og:site_name\" content=\"Webkul Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webkul\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-09T12:16:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-31T11:35:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59-1200x386.png\" \/>\n<meta name=\"author\" content=\"Manish Kumar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webkul\" \/>\n<meta name=\"twitter:site\" content=\"@webkul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Manish Kumar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/\"},\"author\":{\"name\":\"Manish Kumar\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/cc0e0d4aadbbb9fa2f4dde149c8c0483\"},\"headline\":\"Guide for Magento 2 Cloudflare R2 Storage\",\"datePublished\":\"2024-01-09T12:16:45+00:00\",\"dateModified\":\"2025-10-31T11:35:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/\"},\"wordCount\":1916,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59-1200x386.png\",\"articleSection\":[\"Magento 2\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/\",\"url\":\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/\",\"name\":\"Magento 2 Cloudflare R2 Storage Guide\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59-1200x386.png\",\"datePublished\":\"2024-01-09T12:16:45+00:00\",\"dateModified\":\"2025-10-31T11:35:56+00:00\",\"description\":\"User guide for Magento 2 Cloudflare R2 Storage explains how the admin can store their media files and static files securely on Cloudflare R2.\",\"breadcrumb\":{\"@id\":\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#primaryimage\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59.png\",\"width\":1532,\"height\":493,\"caption\":\"screenshot_from_2023_12_28_13_15_59\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webkul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Guide for Magento 2 Cloudflare R2 Storage\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webkul.com\/blog\/#website\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"name\":\"Webkul Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webkul.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webkul.com\/blog\/#organization\",\"name\":\"WebKul Software Private Limited\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"width\":380,\"height\":380,\"caption\":\"WebKul Software Private Limited\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webkul\/\",\"https:\/\/x.com\/webkul\",\"https:\/\/www.instagram.com\/webkul\/\",\"https:\/\/www.linkedin.com\/company\/webkul\",\"https:\/\/www.youtube.com\/user\/webkul\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/cc0e0d4aadbbb9fa2f4dde149c8c0483\",\"name\":\"Manish Kumar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/eeaab59f52a68a5fe3ae49ed4d9cd94ee08c4cb41c0979c660be771462a82c36?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/eeaab59f52a68a5fe3ae49ed4d9cd94ee08c4cb41c0979c660be771462a82c36?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"caption\":\"Manish Kumar\"},\"url\":\"https:\/\/webkul.com\/blog\/author\/manishkumar-bd656\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Magento 2 Cloudflare R2 Storage Guide","description":"User guide for Magento 2 Cloudflare R2 Storage explains how the admin can store their media files and static files securely on Cloudflare R2.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/","og_locale":"en_US","og_type":"article","og_title":"Magento 2 Cloudflare R2 Storage Guide","og_description":"User guide for Magento 2 Cloudflare R2 Storage explains how the admin can store their media files and static files securely on Cloudflare R2.","og_url":"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2024-01-09T12:16:45+00:00","article_modified_time":"2025-10-31T11:35:56+00:00","og_image":[{"url":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59-1200x386.png","type":"","width":"","height":""}],"author":"Manish Kumar","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"Manish Kumar","Est. reading time":"17 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/"},"author":{"name":"Manish Kumar","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/cc0e0d4aadbbb9fa2f4dde149c8c0483"},"headline":"Guide for Magento 2 Cloudflare R2 Storage","datePublished":"2024-01-09T12:16:45+00:00","dateModified":"2025-10-31T11:35:56+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/"},"wordCount":1916,"commentCount":0,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"image":{"@id":"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59-1200x386.png","articleSection":["Magento 2"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/","url":"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/","name":"Magento 2 Cloudflare R2 Storage Guide","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#primaryimage"},"image":{"@id":"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59-1200x386.png","datePublished":"2024-01-09T12:16:45+00:00","dateModified":"2025-10-31T11:35:56+00:00","description":"User guide for Magento 2 Cloudflare R2 Storage explains how the admin can store their media files and static files securely on Cloudflare R2.","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#primaryimage","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2023\/12\/screenshot_from_2023_12_28_13_15_59.png","width":1532,"height":493,"caption":"screenshot_from_2023_12_28_13_15_59"},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/magento2-cloudflare-r2-storage-documentation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Guide for Magento 2 Cloudflare R2 Storage"}]},{"@type":"WebSite","@id":"https:\/\/webkul.com\/blog\/#website","url":"https:\/\/webkul.com\/blog\/","name":"Webkul Blog","description":"","publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webkul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webkul.com\/blog\/#organization","name":"WebKul Software Private Limited","url":"https:\/\/webkul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","width":380,"height":380,"caption":"WebKul Software Private Limited"},"image":{"@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webkul\/","https:\/\/x.com\/webkul","https:\/\/www.instagram.com\/webkul\/","https:\/\/www.linkedin.com\/company\/webkul","https:\/\/www.youtube.com\/user\/webkul\/"]},{"@type":"Person","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/cc0e0d4aadbbb9fa2f4dde149c8c0483","name":"Manish Kumar","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/eeaab59f52a68a5fe3ae49ed4d9cd94ee08c4cb41c0979c660be771462a82c36?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eeaab59f52a68a5fe3ae49ed4d9cd94ee08c4cb41c0979c660be771462a82c36?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","caption":"Manish Kumar"},"url":"https:\/\/webkul.com\/blog\/author\/manishkumar-bd656\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/415998","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/users\/403"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=415998"}],"version-history":[{"count":54,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/415998\/revisions"}],"predecessor-version":[{"id":492069,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/415998\/revisions\/492069"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=415998"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=415998"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=415998"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}