This guide was originally created by ZaNgA. We gratefully acknowledge his contribution.
This tutorial walks you through setting up a ZimaBoard as a compact and reliable home‑lab or edge server:
- Install the latest Ubuntu LTS (minimal) on the ZimaBoard
- Configure two SATA disks in a RAID‑1 mirror using
mdadm - Install and validate the Docker Engine
The guide assumes basic Linux command‑line familiarity and uses Ubuntu Server LTS (minimal, no GUI).
1. Prerequisites
Hardware
- ZimaBoard (any model)
- USB keyboard + HDMI monitor or serial/SSH access
- USB flash drive (≥ 4 GB)
- 2× SATA disks (SSD or HDD, same size recommended)
- SATA power and data cables (included with ZimaBoard)
Software
- Ubuntu Server latest LTS ISO (minimal)
- Imaging tool: Balena Etcher, Rufus, or
dd
2. Download Ubuntu Server LTS (Minimal)
- Go to the official Ubuntu download page
- Download Ubuntu Server LTS (e.g. 24.04 LTS)
- No additional packages are needed — the server ISO is already minimal
3. Create the Bootable USB
On Linux:
sudo dd if=ubuntu-24.04-live-server-amd64.iso of=/dev/sdX bs=4M status=progress oflag=sync |
Replace /dev/sdX with your USB device.
On Windows/macOS:
- Use Balena Etcher or Rufus
4. Install Ubuntu on the ZimaBoard
- Insert the USB stick into the ZimaBoard
- Power it on and press DEL or F7 to enter BIOS
- Set USB as first boot device
- Save and reboot
Installer Choices
- Language and keyboard: as preferred
- Network: DHCP (default)
- Proxy: leave empty
- Mirror: default Ubuntu mirror
Storage Configuration (Important)
- Select Custom storage layout
- Install Ubuntu only on the internal eMMC
- Do NOT format the SATA disks yet
Typical layout:
/on eMMC- No swap (optional)
Proceed with installation and reboot.
5. Activate Ubuntu Pro (Free Plan)
Ubuntu Pro provides extended security maintenance (ESM) and additional hardening features. For personal and small-scale use, Ubuntu Pro is free for up to 5 machines.
5.1 Obtain a Free Ubuntu Pro Token
- Visit the Ubuntu Pro website
- Sign in with an Ubuntu One account
- Copy your Ubuntu Pro token
5.2 Attach Ubuntu Pro
On the ZimaBoard:
sudo pro attach <YOUR_TOKEN_HERE> |
Verify status:
pro status |
You should see esm-infra and esm-apps enabled.
5.3 Enable Recommended Services
sudo pro enable esm-infra esm-apps |
Optional (recommended for servers):
sudo pro enable livepatch |
Livepatch allows kernel security fixes without rebooting.
5.4 Update the System
sudo apt update && sudo apt full-upgrade -y |
6. Update the Base System
Log in and update:
sudo apt update && sudo apt full-upgrade -y |
7. Identify the SATA Disks
List block devices:
lsblk -o NAME,SIZE,TYPE,MODEL |
Example:
sda 1.8T disk Samsung_SSD |
We will mirror /dev/sda and /dev/sdb.
8. Install RAID Tools
sudo apt install -y mdadm |
During installation, choose Yes when asked to start RAID arrays automatically.
9. Create the RAID‑1 Mirror
Wipe Existing Signatures (Recommended)
sudo wipefs -a /dev/sda |
Create the Array
sudo mdadm --create /dev/md0 \ |
Monitor sync progress:
cat /proc/mdstat |
10. Create a Filesystem
Format the array (example: ext4):
sudo mkfs.ext4 /dev/md0 |
Create a mount point:
sudo mkdir -p /srv/data |
Mount it:
sudo mount /dev/md0 /srv/data |
11. Persist RAID Configuration
Save mdadm Configuration
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf |
Persist the Mount
Get UUID:
blkid /dev/md0 |
Edit /etc/fstab:
sudo nano /etc/fstab |
Add:
UUID=<uuid> /srv/data ext4 defaults,nofail 0 2 |
Test:
sudo umount /srv/data |
12. Install Docker Engine
Install Dependencies
sudo apt install -y ca-certificates curl gnupg |
Add Docker GPG Key
sudo install -m 0755 -d /etc/apt/keyrings |
Add Docker Repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ |
Install Docker
sudo apt update |
13. Post‑Installation Docker Setup
Allow your user to run Docker without sudo:
sudo usermod -aG docker $USER |
Test Docker:
docker run --rm hello-world |
14. (Optional) Use RAID Storage for Docker
Recommended for containers and volumes:
sudo systemctl stop docker |
Edit Docker config:
sudo nano /etc/docker/daemon.json |
Add:
{ |
Restart Docker:
sudo systemctl start docker |
15. Health Checks & Maintenance
Check RAID status:
cat /proc/mdstat |
Enable SMART monitoring:
sudo apt install -y smartmontools |
16. Docker Compose Basics & Examples
Docker Compose is the recommended way to define and manage multi‑container applications on your ZimaBoard.
Install Docker Compose Plugin
If you followed the Docker Engine section above, the Compose plugin is already installed.
Verify:
docker compose version |
17.1 Create a Standard Directory Layout
Using the RAID‑1 array for persistent data is best practice:
sudo mkdir -p /srv/data/compose |
Each application gets its own folder:
/srv/data/compose/ |
17.2 Example 1: Portainer (Docker Management UI)
Create directory:
mkdir -p /srv/data/compose/portainer |
Create docker-compose.yml:
version: "3.8" |
Start:
docker compose up -d |
Access:
http://<zimaboard-ip>:9000 |
17.3 Example 2: Samba File Server (on RAID Storage)
Create directory:
mkdir -p /srv/data/compose/samba |
Create shared folder:
mkdir -p /srv/data/share |
docker-compose.yml:
version: "3.8" |
Start:
docker compose up -d |
17.4 Example 3: Uptime Kuma (Service Monitoring)
Create directory:
mkdir -p /srv/data/compose/uptime-kuma |
docker-compose.yml:
version: "3.8" |
Access:
http://<zimaboard-ip>:3001 |
17.5 Example 4: Basic Monitoring (cAdvisor + Node Exporter)
Create directory:
mkdir -p /srv/data/compose/monitoring |
docker-compose.yml:
version: "3.8" |
17.6 Common Docker Compose Commands
# Start services |
18. Result
You now have:
- Ubuntu LTS minimal on eMMC
- A mirrored RAID‑1 array for data safety
- A fully functional Docker Engine