Thinger.io plugins are extensions that allow complementing Thinger.io Platform with additional features or creating integrations with third-party services, data analytics algorithms or custom software.
In order to avoid issues with file storages, container should be run with user 1000:1000 and storages have permission with 1000, therefore not being allowed to create a folder or file at storage level.
I’m increasingly using the NodeRed plugin on the Thinger Server. The possibilities are fantastic!
Would it be feasible to create a Volume between Docker (NodeRED) and File Storages (Host)?
I think the NodeRED Plugin could have an option that allows enabling the creation of a Volume or linking to an existing Volume in File Storages.
I think the possibilities are many:
Allow access to files (.html, .json, .docx…) inside the function node;
Ensure the persistence of files, after the NodeRED plugin container/docker is disabled and enabled;
Save encrypted files with Credentials on the Volume, instead of putting the credentials in NodeRED code;
Allow interaction and exchange of files between NodeREDs plugins of different users (in particular, files that store query information to be used in nodes [eg JSON file with email address, whatsapp, sms…], avoiding its duplication in each NodeRed plugin);
Allow NodeRED file exchange with other Thinger Plugins.
Allow installing the NodeRED plugin based on a pre-set configuration file (eg package.json) that is stored on the volume (so that the plugin is deployed with dependency, packages… installed)?
As part of the installation of the plugin, available extensions of VSCode to work with Thinger.io should be installed by default, that are Platformio (with its own dependencies) and Thinger.io.
Also, all necessary resources, like tokens, and Thinger.io extension configuration should be added so integration and OTA updater work out of the box.
A tool should be provided to generate the basic structure and needed files for a new plugin, with options for the ways it builds (if it's external or internal), if the plugin's front-end is developed as part of the plugin or not, and any other option.