Installation on Raspberry Pi OS (64-bit)¶
Raspberry Pi OS (64-bit) is supported as the operating system of the IDSTower server and as a managed Suricata host – and both can be the same Pi, in an all-in-one installation where IDSTower deploys Suricata to the machine it runs on (see One Pi for both: IDSTower and Suricata below).
Note
Validation on real Arm hardware, Raspberry Pi included, is still pending.
The installation on this page, with the installation script and IDSTower’s
arm64 package, is tested on emulated 64-bit Arm containers. Deploying
Suricata and Filebeat to a 64-bit Arm host has not been validated end to end
yet: it is exercised on the same emulated containers, which cannot run
Suricata’s traffic capture. If you run IDSTower on a Pi, please tell us how it
goes – support@idstower.com.
Note
These instructions cover the 64-bit edition of Raspberry Pi OS, which is
built on Debian 13 (Trixie). Its /etc/os-release reports ID=debian
and VERSION_ID=13, so IDSTower treats it exactly as it treats Debian 13:
the installation script recognises it as a fully supported system with no
extra option, and the steps below are the Debian 13 steps. The previous
release, built on Debian 12 (Bookworm), reports VERSION_ID=12 and
installs as Debian 12 in the same way; it has not been tested on Arm.
The 32-bit edition is not supported – neither as an IDSTower server
nor as a managed Suricata host. It reports ID=raspbian rather than
debian, and IDSTower is not published for 32-bit Arm (armhf), so the
installation script stops on it before installing anything. Raspberry Pi
recommends the 64-bit image on every 64-bit-capable model (Raspberry Pi 3 and
newer, and Compute Modules from CM3 on).
Tip
IDSTower runs a MariaDB database, so give the Pi that runs the IDSTower server an SSD or NVMe drive rather than an SD card.
To use a Raspberry Pi only as a managed Suricata host, you need nothing from this page: add it in the Cluster Setup Wizard like any other target host (see Target Host Requirements).
Quick install¶
Please use our interactive installation script to quickly install IDSTower:
$ curl -O https://download.idstower.com/install_script/latest/install-IDSTower.sh
$ echo "9aace462c06483b9ee75ffead298abc10a607aa4ee8b97b066deeec845c958dc install-IDSTower.sh" \
| sha256sum -c -
$ bash install-IDSTower.sh -i
Manual install¶
Please follow these steps to install IDSTower on Raspberry Pi OS (64-bit).
They are identical to the Debian 13 steps; the IDSTower apt repository serves
arm64 packages alongside amd64, so nothing here is Pi-specific:
Add IDSTower repository
$ sudo apt update
$ sudo apt install -y curl gnupg2
$ curl -s https://download.idstower.com/repos/apt/idstower.key | gpg --dearmor | sudo tee /usr/share/keyrings/idstower.gpg > /dev/null
$ echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/idstower.gpg] https://download.idstower.com/repos/apt stable main" | sudo tee /etc/apt/sources.list.d/idstower.list
Install Ansible
$ sudo apt update
$ sudo apt install -y ansible-core ansible sshpass
Install MariaDB and IDSTower
$ sudo apt update
$ sudo apt install mariadb-server idstower -y
Start and enable MariaDB service
$ sudo systemctl enable mariadb.service
$ sudo systemctl start mariadb.service
$ sudo systemctl status mariadb.service
(Recommended) Run mariadb-secure-installation Script
$ sudo /usr/bin/mariadb-secure-installation
Create a database user for IDSTower
Note
Change USERNAME and PASSWORD in the command below with your desired username and password for IDSTower database user
$ sudo mariadb -u root -p -e "GRANT ALL ON *.* TO 'USERNAME'@'localhost' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION; FLUSH PRIVILEGES;"
Edit the appsettings.json configuration file (located in: /opt/idstower/) and set the following settings
set the EncryptionKey key value with a 64-character hexadecimal string (32 bytes), this key is used for secure storage of cluster keys and other secrets, you can generate one using:
$ openssl rand -hex 32
set the URL key value with the url you want IDSTower to listen to, example: http://idstower.mydomain.local, this url must be reachable from your Suricata hosts, note that you can use ip addresses as well.
set the MySQL Database settings like host, port, database name, username & password via the Database key.
for more information on the configuration file, please refer to the IDSTower Configuration Guide page.
Initialize the IDSTower database
$ cd /opt/idstower/
$ sudo ./IDSTower --init-database
Add an admin user to IDSTower
$ cd /opt/idstower/
$ sudo ./IDSTower --add-user [Your Admin Username]
Example:
$ sudo ./IDSTower --add-user admin
Enable and start IDSTower Service
$ sudo chown -R idstower:idstower /var/log/idstower
$ sudo systemctl enable idstower.service
$ sudo systemctl start idstower.service
Verify that IDSTower Service started correctly
$ sudo systemctl status idstower.service
Configure firewall to allow HTTP and HTTPS traffic (if UFW is enabled)
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw reload
Access IDSTower web interface
You can now access the IDSTower web interface using the URL specified in your appsettings.json configuration file. Log in using the admin username and password you created in step 9.
Note
On first login, you will be redirected to the license activation page. Enter your license key to activate IDSTower.
One Pi for both: IDSTower and Suricata¶
A single Raspberry Pi can run the IDSTower server and also be the Suricata host it manages. IDSTower deploys Suricata to the machine it runs on the same way it deploys to any other host:
Install IDSTower on the Pi as described above. When the installation script asks for the hostname or IP address used to access IDSTower, choose the Pi’s address on your network, not
localhostor127.0.0.1: Suricata hosts reach IDSTower at that address, including when the Suricata host is the Pi itself (see the URL setting in the IDSTower Configuration Guide).In the Cluster Setup Wizard, enter the same LAN IP address or hostname as the target host. IDSTower connects to the Pi over SSH, as it does to every target host, so SSH has to be enabled on it – Raspberry Pi OS ships with SSH turned off; turn it on in Raspberry Pi Imager when you write the image, or later with
sudo raspi-config. The SSH account needs the same rights as on any other host, see Target Host Requirements.