Open Saentist opened 4 months ago
Thanks for reaching out!
Currently, SOLECTRUS uses Docker for deployments, and I think it’s fantastic. The images are small (because they are based on Alpine Linux), the memory requirement is low, and the build process is fully automated via GitHub Actions, which is very helpful.
It also makes it possible to compose the setup from different Docker containers (main app, collectors, InfluxDB, PostgreSQL, Backup services, ...). Everyone only operates the components they need. SOLECTRUS is not a monolith. Yes, this requires that you have a Linux machine somewhere to run the Docker containers.
There are no plans to switch to OVA or other virtual machine formats at this time, as I don’t see a clear advantage in doing so. Could you please share more about what specifically bothers you about Docker? I’d love to understand your perspective better.
To run just docker, without anything in it, footprint is more lager then all things in docker you created (~1GB+).
So idea is to use well know Alpine Linux native installer and put all inside, so 64MB for OS and rest is content of Docker container without Docker host.
I understand your point about the footprint of running Docker. However, switching to a native Linux installer setup would have some disadvantages. SOLECTRUS is designed to be modular, not a monolith. Using Docker allows us to compose the setup from different containers (main app, collectors, InfluxDB, PostgreSQL, backup services, etc.). This modularity ensures that everyone only operates the components they need, making the system flexible and scalable.
Switching to a single native installer would complicate the integration of components like InfluxDB, Redis and PostgreSQL. Additionally, Docker’s automation and ease of deployment via GitHub Actions are crucial for me.
In my personal experience, Docker is the foundation for so many things and thus indispensable. An application that brings its own operating system feels rather off-putting to me.
Moreover, such a switch would be a significant effort. The recently completed Configurator would also become obsolete. To be honest, I’m not really a fan of this idea.
But since SOLECTRUS is open-source, you’re more than welcome to create a Linux installer for SOLECTRUS. I’d be happy to discuss and review it further once you have something concrete.
My point of view is more different, I use lot of different x86 dev board they have CF and SD cards inside for storage, low power CPU /lower then RPI in lot of cases/ all docker stuff kill performance.
I understand your point to work INSIDE docker but in same time OUTSIDE docker host create lot of memory and IO crap. Logging and updates of docker take hundreds of megabytes and 32Gb CF card is full and slow without to do nothing with 150Mb container
Hope this will inspire some solution for example https://www.turnkeylinux.org/docs/howto-build-isos-with-tkldev
SOLECTRUS runs smoothly on a Raspberry Pi with Docker. However, I understand that for less powerful devices, this might be challenging. Currently, my target isn’t the lower-end devices, but I appreciate your concern.
By the way, you can easily limit Docker logging by adding a simple command to your compose file: https://github.com/solectrus/hosting/blob/main/guide/raspberry-pi/docker-compose.yml#L72-L75
If I understand correctly, you’re looking for ISO images to install SOLECTRUS. However, please consider that SOLECTRUS is made up of several independent components: SENEC-Collector, Forecast-Collector, MQTT-Collector, CSV-Importer, Shelly-Collector, as well as the main app, InfluxDB, Redis, and PostgreSQL. Currently, each runs in its own container. Creating individual ISO images for each component isn’t practical. Packing everything into one image would mean that any change in one component would require rebuilding the entire image, which seems very inefficient to me.
Additionally, the installation process of SOLECTRUS has matured over the past few years and works quite well in my opinion. The new configurator further simplifies this process. I don’t want to start from scratch and switch to ISO images. Instead, I’m more interested in advancing the app’s features and functionality.
If you find Docker too resource-intensive, perhaps Podman could be a suitable alternative. Podman offers similar functionalities to Docker, but might handle resources more efficiently on your hardware.
No one is stopping you from building a special installation of SOLECTRUS for smaller devices using Turnkey Linux. I would be very interested to see what you come up with. However, I won’t be taking on that task myself.
Idea of ISO or OVA is more then a simple.
User just run install/import on his hypervisor or old pc and there is all inside,
he don't care about command lines etc.
All inside is "under hood" and ready to use.
Even docker can auto update without bothering user.
No github actions needed to build one time image, with will manage all inside.
Оf course my idea is to skip host OS where docker paravirtualization is installed and use all natively. But as you see in discussion ideas comes.
Ok, thanks for your input. I understand that building a new image for every little change is not required, it could be made inside the image. But the whole thing requires a totally new installation process. The current setup is strongly tied to Docker.
I don't want to invest my time in this idea in the foreseeable future, as I want to work on content features. Currently, this small project is very dependent on me personally, so I need to make strong decisions to move the project forward.
Thanks again for your ideas, I really appreciate them!
For example OVA image can be done in any virtual machine 1 nic 64Gb storage 2Gb RAM just standard user and pass
Is there a option to have ready to use OVA images for next releases? Docker is huge base of useless stuff for end users. /I prefer native "bare metal" Alpine Linux and all inside/