SOLECTRUS
SOLECTRUS is your smart solar dashboard, giving you real‑time insights into energy generation and consumption. It automatically calculates costs and savings, so you can maximize the performance of your PV system.

Live Demo
Try it out at https://demo.solectrus.de
Installation
SOLECTRUS is a self‑hosted solution — just bring your own server (a Raspberry Pi works great, but any Linux box will do). To get started, visit https://configurator.solectrus.de/ and generate your Docker configuration interactively.
Development
To contribute, set up a local development environment (this guide assumes macOS with Homebrew):
- Clone the repository:
git clone [email protected]:solectrus/solectrus.git
cd solectrus
- Install PostgreSQL, Redis, and Caddy (if not already present). On a Mac with HomeBrew, run this to install from the
Brewfile:
brew bundle
Ensure that PostgreSQL is running:
brew services start postgresql@18
- Setup the application to install gems and NPM packages and create the database:
bin/setup
- Start the application locally:
bin/dev
This starts the app and opens https://solectrus.localhost in your default browser.
On the first run, Caddy will ask for your password to install its local CA certificate.
Testing
After preparing development environment (see above):
bin/influxdb-restart.sh
DISABLE_SPRING=1 bin/rspec
open coverage/index.html
RuboCop:
bin/rubocop
ESLint:
bin/yarn lint
TypeScript:
bin/yarn tsc
There is a shortcut to run all test and linting tools:
bin/ci
Performance Monitoring
The Live Demo is hosted at Hetzner Cloud. For performance monitoring, it uses RorVsWild, which is free for OpenSource projects. You can see internal metrics like CPU, memory, and disk usage, as well as request times and errors here: https://www.rorvswild.com/applications/136101/requests
License
© 2020–2026 Georg Ledermann. Released under AGPL-3.0.
The source code is open source under AGPL-3.0. The SOLECTRUS name and logo are trademarks of Georg Ledermann and are not covered by that license; forks and modified versions must use a different name. See TRADEMARK.md for details.