Edge AI / IoT Development Server with the ZimaBoard 2 IceWhale Technology's ZimaBoard 2 single-board computer, powered by an Intel N150 processor, is configured as a low-power Edge AI and IoT development server running Ubuntu Server 26.04 with Docker, Jupyter Lab, and UFW firewall. The x86-based board offers higher performance and app compatibility than ARM-based SBCs like the Raspberry Pi 5, with a 10W TDP and features including dual 2.5G Ethernet, SATA ports, and a PCIe slot. The project demonstrates setting up a secure, containerized environment for AI and IoT development. In this project I will present a low-power Edge AI / IoT Development Server based on the ZimaBoard 2 single board computer. The server comes with features like: - Docker setup for containerized applications - Jupyter Lab install for ML / AI / IoT development - secure UFW based firewall setup - dedicated Ether network for IoT devices with traffic monitoring and filtering - dedicated WiFi network for IoT devices with client isoltaion The ZimaBoard 2 is single board server / mini-PC built around the Intel N150 processor. It comes with 4 CPU cores clocked at 3.60 GHz, 8/16 GB of memory and 32/64 GB of built in eMMC storage. In terms of connectivity we have two 2.5G Ethernet ports, two USB 3.1 ports, a 4K compatible Mini-DisplayPort port, two SATA ports and a PCIe 3.0 extension slot. Compared to Raspberry Pi 5 and other ARM based SBC-s, the ZimaBoard 2 offers higher performance and better app compatibility due to the x86 architecture , while keeping power consumption at a reasonably low level at a 10W TDP. The board features an aluminium case, and we get a power supply, a combined SATA power + data cable, and a little cooling fan that can be optionally installed. On cool thing about ZimaBoard's packaging is that part of it can be used as a stand if we with a two SSD setup: The ZimaBoard 2 can be also purchased in various kits. IceWhale Technology sent me the ZimaBoard 2 Mini Nas Kit which comes with an 2-bay HDD rack https://shop.zimaspace.com/products/2-bay-hdd-rack-tray-for-zimaboard-2 and a a PCIe to Dual NVMe M.2 SSD Adapter https://shop.zimaspace.com/products/pcie-3-0-x4-to-dual-nvme-m-2-ssd-adapter-card . This can be used build a mini-server with 2 hard drives, NVMe SSD-s, or other M.2 devices: For this build I wend with an NVMe SSD, and two older HDD-s for data storage. Note : IceWhale Technology offered the ZimaBoard 2 NAS kit for free of charge for this project. You can use the tokes atti15 discont code to get $15 off for ZimaBoard 2 orders. The ZimaBoard 2 comes pre-installed with ZimaOS https://www.zimaspace.com/zimaos , an operating system designed specifically for NAS use. ZimaOS comes with web interface an focuses on NAS specific features such as disk management, cloud backups and a collection of containerized apps. ZimaOS offers a nice overall experience and seems to be a good solution for NAS and basic home server use. One downside to mention it the ZimaOS is not open source and some features require a paid license. For more flexibility I decided to install Ubuntu Server 26.04 LTS on the machine. The ZimaBoard 2 being an x86 based system, installing Ubuntu is pretty straightforward process: download the ISO image from the official website, flash it to an USB stick, boot from it, install the OS on the built in eMMC or a dedicated nVME or SATA drive. During the installation we will need a display, a keyboard and a mouse, but once the installation is complete we can set up SSH to control the machine remotely. Enabling the FirewallThe default install of Ubuntu Server does not comes with a firewall enabled. This is not great from a security perspective as any app we run we will be automatically exposed to the network. To avoid this we need a firewall that will be used to restrict network traffic to only what we want. As our firewall we will go with the UFW Uncomplicated Firewall which is standard on Ubuntu. To install it run: bash $ sudo apt install ufw$ sudo ufw allow 22 allow SSH$ sudo ufw enable$ sudo ufw status verbose$ sudo reboot now This will enable the firewall and block all traffic but SSH on port 22. Later we will make adjustments to the firewall rules to control access to various applications and devices. Docker for ContainerizationInstalling various components such as compilers, development frameworks and others directly on the host machine can quickly become chaotic. Because of this we will do most of our setup using containers. This ensures our setup is repeatable and host OS is kept relatively clean. For containerization we will use Docker Engine. This can be installed on Ubuntu as using the official installation script: bash $ sudo apt purge -y docker.io docker-doc docker-compose podman-docker containerd runc$ curl -fsSL https://get.docker.com -o /tmp/get-docker.sh$ sudo sh /tmp/get-docker.sh$ sudo usermod -aG docker $USER To check Docker working correctly we can run the official hello world app: bash $ docker run hello-worldHello from Docker This message shows that your installation appears to be working correctly.... One problem with Docker installs is that by default containers will bypass the firewall rules we set in UFW. To fix this we can use ufw-docker https://github.com/chaifeng/ufw-docker , a small utility that solves UFW Docker compatibility. This is how we can install it: bash $ sudo wget -O /usr/local/bin/ufw-docker https://github.com/chaifeng/ufw-docker/raw/master/$ sudo chmod +x /usr/local/bin/ufw-docker$ sudo ufw-docker install This will make ports exposed by containers isolated by default. To allow external traffic to a container we can use the ufw-docker command: bash $ sudo ufw-docker allow