SolarEnergy/docs/SETUP_PROD.md

2.5 KiB

Configure project for production

Create production build

Central

The production release of central backend and frontend can be realised on a computer which has NodeJS and Rust installed by executing the following command at the root of the project:

make

The backend will be available at this location:

central_backend/target/release/central_backend

Python device

The Python device isn't production ready yet.

ESP32 device

Flashing the device directly

Use the following commands to flash a device (inside ESP-IDF environnment):

idf.py build
idf.py flash

Getting an OTA update

Use the following command to build an OTA update:

idf.py build

The OTA update is then located in build/main.bin

Pre-requisites

  • A server running a recent Linux (Debian / Ubuntu preferred) with central as hostname
  • DHCP configured on the network

Configure server

Create a user dedicated to the central

sudo adduser --disabled-login central

Install binary

You can use scp to copy the binary to the target server:

scp central_backend/target/release/central_backend pierre@central:/home/pierre

Then the executable must be installed system-wide:

sudo mv central_backend /usr/local/bin/

Create configuration file

Create a configuration file in /home/central/config.yaml:

sudo touch /home/central/config.yaml
sudo chown central:central /home/central/config.yaml
sudo chmod 400 /home/central/config.yaml
sudo nano /home/central/config.yaml

Sample configuration:

SECRET=RANDOM_VALUE
COOKIE_SECURE=true
LISTEN_ADDRESS=0.0.0.0:443
ADMIN_USERNAME=admin
ADMIN_PASSWORD=FIXME
HOSTNAME=central.local
STORAGE=/home/central/storage
FRONIUS_ORIG=http://10.0.0.10

Test configuration

Run the following command to check if the configuration is working:

sudo -u central central_backend -c /home/central/config.yaml fronius -c

Create systemd unit file

Once you confirmed the configuration is working, you can configure a system service, in /etc/systemd/system/central.service:

[Unit]
Description=Central backend server
After=syslog.target
After=network.target

[Service]
RestartSec=2s
Type=simple
User=central
Group=central
WorkingDirectory=/home/central
ExecStart=/usr/local/bin/central_backend -c /home/central/config.yaml fronius -c
Restart=always
Environment=USER=central 
HOME=/home/central

[Install]
WantedBy=multi-user.target

Enable & start service:

sudo systemctl enable central
sudo systemctl start central