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.