{"id":330141,"date":"2026-06-29T05:35:37","date_gmt":"2026-06-29T05:35:37","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/nextcloud-media-bridge\/"},"modified":"2026-07-07T22:01:49","modified_gmt":"2026-07-07T22:01:49","slug":"strychni0x-media-bridge-for-nextcloud","status":"publish","type":"plugin","link":"https:\/\/os.wordpress.org\/plugins\/strychni0x-media-bridge-for-nextcloud\/","author":23503895,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.0","stable_tag":"2.0.0","tested":"7.0.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"strychni0x Media Bridge for Nextcloud & ownCloud","header_author":"Florian Willnat","header_description":"Browse photos stored in a Nextcloud from the WordPress media library and import them as media. Administrators only.","assets_banners_color":"399bc9","last_updated":"2026-07-07 22:01:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":117,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"strychni0x","date":"2026-06-29 05:35:02"},"2.0.0":{"tag":"2.0.0","author":"strychni0x","date":"2026-07-07 22:01:49"}},"upgrade_notice":{"2.0.0":"<p>Adds ownCloud support and multiple accounts at once. Your existing Nextcloud account is migrated automatically.<\/p>","1.0.0":"<p>First public release.<\/p>","0.9.0":"<p>Adds a &quot;Select whole folder&quot; action for importing an entire folder at once.<\/p>","0.8.0":"<p>Multi-select now works across pagination pages.<\/p>","0.7.0":"<p>Adds an &quot;Import from Nextcloud&quot; button on the Media Library screens.<\/p>","0.6.0":"<p>You can now select and import multiple images at once.<\/p>","0.5.2":"<p>Fixes a 500 error when generating thumbnails in WordPress and hardens importing.<\/p>","0.5.1":"<p>You can now choose the thumbnail source in the settings (default: from Nextcloud).<\/p>","0.5.0":"<p>Thumbnails now also work when your Nextcloud server has no preview generation.<\/p>","0.4.1":"<p>Fixes the Nextcloud tab not appearing in the Featured Image dialog.<\/p>","0.4.0":"<p>Adds pagination for folders with many images.<\/p>","0.3.0":"<p>The Nextcloud app password is now encrypted at rest. No action required.<\/p>","0.2.0":"<p>Adds thumbnail previews in the Nextcloud tab.<\/p>","0.1.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3589463,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3589463,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3589463,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3589463,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","2.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The settings screen (Settings \u2192 Cloud Media): per-account cloud type, server URL, username, app password, start folder and the thumbnail source option, with \"Add cloud\" for multiple accounts.","2":"The \"Cloud\" tab in the media dialog: pick an account, browse folders, see thumbnails, select images (Select page \/ Select whole folder) and import.","3":"The \"Import from cloud\" button on the Media Library screen, opening the importer in its own dialog."}},"plugin_section":[],"plugin_tags":[84,233,178125,46698,16712],"plugin_category":[50],"plugin_contributors":[267967],"plugin_business_model":[],"class_list":["post-330141","plugin","type-plugin","status-publish","hentry","plugin_tags-media","plugin_tags-media-library","plugin_tags-nextcloud","plugin_tags-owncloud","plugin_tags-webdav","plugin_category-media","plugin_contributors-strychni0x","plugin_committers-strychni0x"],"banners":{"banner":"https:\/\/ps.w.org\/strychni0x-media-bridge-for-nextcloud\/assets\/banner-772x250.png?rev=3589463","banner_2x":"https:\/\/ps.w.org\/strychni0x-media-bridge-for-nextcloud\/assets\/banner-1544x500.png?rev=3589463","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/strychni0x-media-bridge-for-nextcloud\/assets\/icon-128x128.png?rev=3589463","icon_2x":"https:\/\/ps.w.org\/strychni0x-media-bridge-for-nextcloud\/assets\/icon-256x256.png?rev=3589463","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>strychni0x Media Bridge adds a \"Cloud\" tab to the WordPress media modal\n(the \"Add Media\" dialog). From there an administrator can browse the folders of\none or more configured cloud accounts, preview the file names and import images\ninto the WordPress media library with a single click.<\/p>\n\n<p>The plugin works with WebDAV-based clouds of the Nextcloud family:<\/p>\n\n<ul>\n<li>Nextcloud<\/li>\n<li>ownCloud<\/li>\n<\/ul>\n\n<p>You can connect several accounts of mixed types at the same time and switch\nbetween them with a dropdown in the media dialog.<\/p>\n\n<p>Imported images become regular WordPress attachments (a copy is downloaded from\nthe cloud server), so they work with every theme, block and page builder without\nany further integration.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Adds a dedicated \"Cloud\" tab to the media modal.<\/li>\n<li>Adds an \"Import from cloud\" button to the Media Library and the\n\"Add New Media File\" screen, opening the browser in its own dialog.<\/li>\n<li>Connect multiple Nextcloud \/ ownCloud accounts at once and pick\nwhich one to browse from a dropdown.<\/li>\n<li>Browse cloud folders via WebDAV.<\/li>\n<li>Thumbnail previews with a per-account selectable source: use the server's\nnative preview\/thumbnail endpoint (default), or have WordPress generate and\ncache the thumbnails itself (useful when the server has preview generation\ndisabled \u2013 and a reliable fallback for servers whose preview API differs).<\/li>\n<li>Paginated image listing for folders with many photos.<\/li>\n<li>Import images as standard WordPress attachments \u2013 one at a time or several at\nonce via multi-select.<\/li>\n<li>Access restricted to administrators (the <code>manage_options<\/code> capability).<\/li>\n<li>Per-account connection test on the settings screen.<\/li>\n<\/ul>\n\n<h4>Access control<\/h4>\n\n<p>Every part of the plugin \u2013 the settings screen, the REST endpoints and the\nJavaScript that renders the \"Cloud\" tab \u2013 requires the <code>manage_options<\/code>\ncapability. Non-administrators never receive the script and cannot call the\nREST endpoints. The required capability can be changed with the\n    ncmb_required_capability filter.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Nextcloud or ownCloud servers that <strong>you<\/strong> configure\non the plugin settings screen. It is not a third-party hosted service operated by\nthe plugin author; you point it at your own (or your organisation's) cloud\ninstances.<\/p>\n\n<p>What is sent, and when:<\/p>\n\n<ul>\n<li>When an administrator opens the \"Cloud\" tab or clicks the connection test,\nthe plugin sends a WebDAV <code>PROPFIND<\/code> request to the configured server URL\nto list folder contents. The request includes the configured username and\napp password as an HTTP Basic authentication header.<\/li>\n<li>When the \"Cloud\" tab shows images, the plugin requests a thumbnail for each\nimage from the server's native preview\/thumbnail endpoint (Nextcloud:\n  \/index.php\/core\/preview; ownCloud: the files thumbnail API \u2013 both\nauthenticated) and proxies it to the browser.\nIf that returns no preview, or if the account is set to \"Generate in\nWordPress\", the plugin downloads the image via WebDAV once, generates a\nthumbnail on the WordPress server and caches it.<\/li>\n<li>When an administrator imports an image, the plugin sends a WebDAV <code>GET<\/code>\nrequest (again authenticated) to download that single file.<\/li>\n<\/ul>\n\n<p>No data is sent anywhere other than the server URLs you configure. All requests\noriginate from your WordPress server, not from the visitor's browser.<\/p>\n\n<p>The data handling of each cloud instance is governed by its own operator. Please\nrefer to the documentation and privacy policy of your provider:<\/p>\n\n<ul>\n<li>Nextcloud: https:\/\/nextcloud.com\/ \u2013 Privacy: https:\/\/nextcloud.com\/privacy\/<\/li>\n<li>ownCloud: https:\/\/owncloud.com\/ \u2013 Privacy: https:\/\/owncloud.com\/privacy-policy\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>strychni0x-media-bridge-for-nextcloud<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the \"Plugins\" menu in WordPress.<\/li>\n<li>In your cloud (Nextcloud\/ownCloud) go to Settings \u2192 Security \u2192\n\"Create new app password\" and copy the generated password.<\/li>\n<li>In WordPress go to Settings \u2192 Cloud Media, choose the cloud type and enter the\nserver URL, the username, the app password and (optionally) a start folder.\nClick \"Check connection\" to verify. Use \"Add cloud\" to connect more accounts.<\/li>\n<li>Open the \"Add Media\" dialog in the editor or media library; a new \"Cloud\" tab\nis now available (with a dropdown to pick the account when you have several).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20cloud%20servers%20are%20supported%3F\"><h3>Which cloud servers are supported?<\/h3><\/dt>\n<dd><p>Nextcloud and ownCloud \u2013 WebDAV-based servers of the Nextcloud family that\nsupport app passwords. You can connect several accounts of mixed types at the\nsame time and switch between them in the media dialog.<\/p><\/dd>\n<dt id=\"are%20the%20images%20copied%20or%20referenced%3F\"><h3>Are the images copied or referenced?<\/h3><\/dt>\n<dd><p>Copied. When you import an image it is downloaded from the cloud server and\nstored as a regular WordPress attachment. There is no live link back to the\ncloud after the import.<\/p><\/dd>\n<dt id=\"the%20thumbnails%20stay%20grey%20%E2%80%93%20what%20can%20i%20do%3F\"><h3>The thumbnails stay grey \u2013 what can I do?<\/h3><\/dt>\n<dd><p>Some servers do not generate image previews, and preview endpoints differ\nbetween Nextcloud and ownCloud. In that case the default \"from the\ncloud server\" mode has nothing to show. Go to Settings \u2192 Cloud Media and switch\nthat account's \"Thumbnails\" option to \"Generate in WordPress\"; WordPress will\nthen download each image once, build a cached thumbnail and display it. This\nmode works with every supported server.<\/p><\/dd>\n<dt id=\"who%20can%20use%20the%20cloud%20tab%3F\"><h3>Who can use the Cloud tab?<\/h3><\/dt>\n<dd><p>Only administrators (users with the <code>manage_options<\/code> capability). You can change\nthe required capability with the <code>ncmb_required_capability<\/code> filter.<\/p><\/dd>\n<dt id=\"is%20my%20cloud%20password%20safe%3F\"><h3>Is my cloud password safe?<\/h3><\/dt>\n<dd><p>Use an app password (Settings \u2192 Security in your cloud), never your real login\npassword, so you can revoke it at any time. The credentials are used only on the\nserver to authenticate WebDAV requests and are never exposed to the browser.<\/p>\n\n<p>The app password is stored encrypted in the database (libsodium, or OpenSSL with\nan HMAC as a fallback). The encryption key is derived from your WordPress salts\nby default. For stronger separation you may define your own key in wp-config.php:<\/p>\n\n<pre><code>define( 'NCMB_ENCRYPTION_KEY', 'a-long-random-string' );\n<\/code><\/pre>\n\n<p>Note: if you change that constant (or your WordPress salts) later, the stored\npassword can no longer be decrypted and must be re-entered on the settings\nscreen.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Added support for ownCloud in addition to Nextcloud (both WebDAV based, using\nan app password). Choose the cloud type per account.<\/li>\n<li>You can now connect multiple cloud accounts at once and switch between them\nfrom a dropdown in the media dialog.<\/li>\n<li>Thumbnail source (\"from the cloud server\" vs. \"generate in WordPress\") is now\na per-account setting; provider-specific native preview endpoints are used\n(Nextcloud preview, ownCloud thumbnail API).<\/li>\n<li>Settings screen redesigned as a repeatable list of accounts with a per-account\nconnection test.<\/li>\n<li>Existing single-account (Nextcloud) configurations are migrated automatically \u2013\nno action required.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<\/ul>\n\n<h4>0.9.0<\/h4>\n\n<ul>\n<li>Added \"Select whole folder\": selects every image in the current folder across\nall pages in one click, ready to import via \"Import selection\".<\/li>\n<\/ul>\n\n<h4>0.8.0<\/h4>\n\n<ul>\n<li>Multi-select now persists across pages: ticked images stay selected when you\npage through a folder, and \"Import selection\" imports them all. \"Select page\"\nadds the current page; \"Clear selection\" clears everything.<\/li>\n<\/ul>\n\n<h4>0.7.0<\/h4>\n\n<ul>\n<li>Added an \"Import from Nextcloud\" button to the Media Library grid and the\n\"Add New Media File\" screen. It opens the Nextcloud browser in a standalone\ndialog, so you can import without going through a post or the block editor.<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>Added multi-select: tick several images and import them all at once with a\nper-image progress indicator. Imports run sequentially to avoid timeouts on\nlarge photos.<\/li>\n<\/ul>\n\n<h4>0.5.3<\/h4>\n\n<ul>\n<li>Plugin Check compliance: updated \"Tested up to\" and removed the unused\n\"Domain Path\" header.<\/li>\n<\/ul>\n\n<h4>0.5.2<\/h4>\n\n<ul>\n<li>Fixed a fatal error (HTTP 500) when generating thumbnails in WordPress: the\nrequired wp-admin file was not loaded in the REST context.<\/li>\n<li>Raised the memory limit before processing images and wrapped image handling in\nerror handling, so importing\/generating from large photos fails with a clear\nmessage instead of a blank 500 where possible.<\/li>\n<\/ul>\n\n<h4>0.5.1<\/h4>\n\n<ul>\n<li>Added a setting to choose the thumbnail source: \"from Nextcloud\" (default,\nuses the preview endpoint) or \"generate in WordPress\". The download\/resize\nfallback now only runs when explicitly selected.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Thumbnails now have a fallback: when the Nextcloud server provides no preview,\nthe plugin downloads the image once, creates a thumbnail in WordPress and\ncaches it (with an unguessable filename and a configurable size limit via the\n  ncmb_max_thumb_bytes filter). The cache is removed on uninstall.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Fixed: the Nextcloud tab is now registered as a top router tab (next to\n\"Media Library\") instead of a left-hand menu item, so it shows up in every\nmedia modal \u2013 including the Featured Image dialog, which has no left menu.<\/li>\n<li>Improved post-import behaviour so the imported image is selected in dialogs\nthat have no dedicated insert state (e.g. Featured Image).<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Added pagination to the Nextcloud tab so folders with many images load in\npages instead of all at once. The full folder listing is cached briefly on the\nserver so paging does not trigger repeated requests to Nextcloud.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>The Nextcloud app password is now stored encrypted at rest (libsodium, with an\nOpenSSL+HMAC fallback). Existing plaintext passwords are read transparently and\nre-encrypted on the next save. Optional <code>NCMB_ENCRYPTION_KEY<\/code> constant for a\ndedicated key.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added thumbnail previews in the Nextcloud tab, proxied from the Nextcloud\npreview endpoint so credentials stay on the server. Graceful fallback when no\npreview is available.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: Nextcloud tab in the media modal, folder browsing via WebDAV,\nimage import into the media library, administrator-only access.<\/li>\n<\/ul>","raw_excerpt":"Browse images on Nextcloud or ownCloud servers from the WordPress media modal and import them into the media library. Administrators only.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/330141","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=330141"}],"author":[{"embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/strychni0x"}],"wp:attachment":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=330141"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=330141"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=330141"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=330141"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=330141"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=330141"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}