This plugin stores uploaded files using Relay Blob Bundle instead of using the local filesystem.
https://github.com/digital-blueprint/relay-blob-bundle
https://github.com/digital-blueprint/relay-blob-library
# from kanboard root directory
cd plugins
git clone [email protected]:digital-blueprint/plan-blob-storage-plugin.git
mv plan-blob-storage-plugin BlobStorage
cd BlobStorage
composer install
Note: Plugin folder is case-sensitive.
The plugin can be configured in two ways: through the user interface or using the config file.
Go to Settings > Integrations > Blob File Storage
Add those config parameters in your config.php
:
define('BLOB_KEY', '12345678901234567890123456789012345678901234567890123456789012');
define('BLOB_API_HOST', 'https://blog-api-host.com');
define('BLOB_BUCKET_ID', 'your-bucket-id');
define('BLOB_OAUTH_IDP_URL', 'https://your.oauth.server');
define('BLOB_CLIENT_ID', 'your-client-id');
define('BLOB_CLIENT_SECRET', 'your-client-secret');
- PHP >= 8.1
- Kanboard >= 1.2.1
---
title: Blob Storage Plugin
---
graph TB
subgraph BlobApi
uploadFileByPrefix["uploadFileByPrefix()"]
getFileDataByPrefix["getFileDataByPrefix()"]
deleteFileByPrefix["deleteFileByPrefix()"]
end
subgraph BlobStorage
moveFile["moveFile()"] --> uploadFileByPrefix
put["put()"] --> uploadFileByPrefix
output["output()"] --> getFileDataByPrefix
get["get()"] --> getFileDataByPrefix
remove["remove()"] --> deleteFileByPrefix
end
subgraph BlobTaskFileModel
uploadFiles["uploadFiles()"] --> uploadFile
uploadFile["uploadFile()"] --> moveFile
uploadScreenshot["uploadScreenshot()"] --> uploadContent
uploadContent["uploadContent()"] --> put
end
subgraph FileModel
Fremove["remove()"] --> remove
end
subgraph ViewFileController
download["download()"] --> output
thumbnail["thumbnail()"] --> output
renderFileWithCache["renderFileWithCache()"] --> output
getFileContent["getFileContent()"] --> get
end
subgraph BlobTaskFileController
Tsave["save()"] --> uploadFiles
Tscreenshot["screenshot()"] --> uploadScreenshot
Tremove["remove()"] --> Fremove
end
subgraph BlobProjectFileController
Psave["save()"] --> uploadFiles
Pscreenshot["screenshot()"] --> uploadScreenshot
Premove["remove()"] --> Fremove
end