Skip to Content
🚀 We just launched! Please star us on Github!

Installation

Now that your Raspberry Pi is set up, it’s time to install the software that powers your Smart Panel: the backend and the panel UI.


Connect to your Pi via SSH

If you’re setting up your Smart Panel without a monitor and keyboard, the easiest way to access your Raspberry Pi is over the network using SSH.

You can do this from another computer on the same network:

ssh pi@smart-panel.local
💡

Default password: raspberry

This works because you set the hostname as smart-panel during the OS flashing step. If you used a different hostname, replace it accordingly (e.g. pi@your-name.local).

If .local domains don’t work on your system (e.g. Windows without Bonjour), you can find the IP address of your Pi from your router’s interface and connect like this:

ssh pi@192.168.x.x
💡

If you’re using a monitor and keyboard directly connected to the Pi, you can skip this step and run all commands in the terminal.

Update Your System

Before installing the Smart Panel, it’s a good idea to make sure your Raspberry Pi is up to date:

sudo apt update & sudo apt upgrade -y

This updates all system packages to their latest versions, which helps ensure compatibility and security.

Install Git

Git is a version control tool used to download and manage the Smart Panel’s source code. We’ll use it to clone the project repository from GitHub.

To install Git on your Raspberry Pi:

sudo apt install git -y

Install Node.js

Node.js powers the backend and admin interface. Use the official NodeSource setup script to install the latest LTS version of Node.js:

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt install -y nodejs

This installs both node and npm.

Install flutter-pi

The Smart Panel UI is written in Flutter and runs on your Raspberry Pi using flutter-pi, a lightweight runtime that doesn’t require X11 or Wayland.

Install Required Dependencies

sudo apt install cmake libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev \ libdrm-dev libgbm-dev ttf-mscorefonts-installer fontconfig libsystemd-dev \ libinput-dev libudev-dev libxkbcommon-dev -y

Update the system fonts

sudo fc-cache

Build and Install flutter-pi

First, create a directory where flutter-pi will live and make sure your user owns it:

sudo mkdir /opt/flutter-pi sudo chown -R ${USER}: /opt/flutter-pi

Now clone the flutter-pi repository:

git clone https://github.com/ardera/flutter-pi.git /opt/flutter-pi

Install build dependencies and compile flutter-pi (run as user pi):

cd /opt/flutter-pi mkdir build && cd build cmake .. make -j`nproc` sudo make install

Give the pi permission to use 3D acceleration:

⚠️

Potential security hazard. If you don’t want to do this, launch Smart Panel UI using sudo instead.

sudo usermod -a -G render pi

Once installed, you’ll be able to run the Smart Panel UI directly from the console using the flutter-pi command.

Enable KMS/DRM

To ensure proper display rendering, your Raspberry Pi must use the KMS (Kernel Mode Setting) graphics driver. This is required for flutter-pi to access the display via DRM.

Open the boot config file:

sudo nano /boot/firmware/config.txt

Look for this line and make sure it is enabled (not commented out):

dtoverlay=vc4-kms-v3d

If it’s not present, add it at the bottom of the file.

Reboot to apply changes:

sudo reboot

If you previously had dtoverlay=vc4-fkms-v3d (the fake KMS driver), it should be removed or commented out.

Install InfluxDB

The Smart Panel backend uses InfluxDB to store time-series data like temperature, humidity, or power usage.

To install InfluxDB v1.8:

wget -qO- https://repos.influxdata.com/influxdata-archive_compat.key | sudo tee /etc/apt/trusted.gpg.d/influxdata.asc
echo "deb https://repos.influxdata.com/debian bookworm stable" | sudo tee /etc/apt/sources.list.d/influxdata.list
sudo apt install influxdb=1.8.10-1 -y

Then enable and start the service:

sudo systemctl enable influxdb
sudo systemctl start influxdb

To verify that InfluxDB is running:

influxd version

You should see:

InfluxDB v1.8.10 (git: ...)
⚠️

Make sure you’re using InfluxDB v1.8. Installing InfluxDB 2.x will not work.

Allow Reboot & Power Off Commands

To allow the Smart Panel backend to reboot or shut down the Raspberry Pi, you need to give it permission to execute system commands without a password.

The backend uses the following commands internally:

  • sudo /sbin/reboot
  • sudo /sbin/poweroff

By default, these require elevated privileges and will prompt for a password — which is not suitable for automated use.

Grant Password-less Access for the pi User

Edit the sudoers file using the safe visudo tool:

sudo visudo

Then add this line at the bottom:

pi ALL=(ALL) NOPASSWD: /sbin/reboot, /sbin/poweroff

This gives the default pi user permission to execute reboot and poweroff without entering a password.

⚠️

Only allow specific commands like reboot and poweroff. Never use NOPASSWD: ALL, as it poses a security risk.

Install the Smart Panel Application

To get the full Smart Panel software—including the backend, admin UI, and the display app—you’ll need to download and unpack the latest release.

Create the target directory and give your user ownership:

sudo mkdir -p /opt/smart-panel sudo chown -R ${USER}:${USER} /opt/smart-panel

Create the storage directory and give your user ownership:

sudo mkdir -p /var/smart-panel sudo chown -R ${USER}:${USER} /var/smart-panel

Move into the project directory:

cd /opt/smart-panel

Download and Unpack the Latest Release:

curl --http1.1 -L -C - -o smart-panel.tar.gz https://github.com/FastyBird/smart-panel/releases/latest/download/smart-panel.tar.gz tar -xzf smart-panel.tar.gz -C . rm smart-panel.tar.gz

This archive contains everything you need: backend, admin UI, and the prebuilt display app.

Run the database migrations to initialize the database:

npm run migration:run

This creates all required tables in the application database so your Smart Panel can start working right away.

Run Backend, Admin & Display as Services

You’ll want your Smart Panel to automatically launch on boot. Here’s how to set up systemd services for both backend and display:

Backend & Admin Service

Create a service file:

sudo nano /etc/systemd/system/smart-panel-backend.service

Paste this:

[Unit] Description=Smart Panel Backend & Admin Service After=network.target [Service] User=pi WorkingDirectory=/opt/smart-panel ExecStart=npm start Restart=always Environment=NODE_ENV=production [Install] WantedBy=multi-user.target

Enable and start the service:

sudo systemctl enable smart-panel-backend sudo systemctl start smart-panel-backend

The Admin Interface is already bundled and served through the backend — you don’t need to run it separately.

Display Service

Create the display service file:

sudo nano /etc/systemd/system/smart-panel-display.service

Paste this:

[Unit] Description=Smart Panel Display App After=network.target Requires=smart-panel-backend.service [Service] User=pi WorkingDirectory=/opt/smart-panel/display ExecStart=/usr/local/bin/flutter-pi --release . Restart=always [Install] WantedBy=multi-user.target
💡

Want to rotate the display? Add the -p (physical rotation) flag to the ExecStart line. For example:

ExecStart=/usr/local/bin/flutter-pi -p 270 --release .

Valid rotation values: 0, 90, 180, 270

Enable and start the service:

sudo systemctl enable smart-panel-display sudo systemctl start smart-panel-display

Now, all three apps — backend, admin, and display — will automatically launch on boot and restart if they crash.


What’s Next?

Your Smart Panel is now fully running — including the backend, admin interface, and the display UI.

Now it’s time to pair your devices, customize your dashboard, and start building the smart display you’ve always wanted.

👉 Head over to the next section: Onboarding — where we’ll guide you through device pairing and initial setup.

Last updated on