Even with the current tariff nonsnese, the Orange Pi Zero 3 is a cheap and fairly capable ARM single board computer (SBC). If you've mastered the Raspberry Pi and you want to branch out, Armbian Ubuntu on the Zero 3 is a good place to start.
- Visit the Armbian Orange Pi Zero 3 page
- Scroll down to Server images
- Download Ubuntu 24.04 (Noble), the current version at time of writing.
- Use Raspberry Pi Imager, Balena Etcher, or whatever to flash the binary image to microSD.
Ubuntu server enables serial console by default, so the three pin UART header on the Zero 3 is ideal, but a monitor and keyboard will work as well.
- Apply power and watch the boot up messages fly by.
- Answer the setup questions for users, passwords, wifi, timezone, and locales.
Note: The wifi SSID you choose must have internet access or the connection will fail.
- As root, run
apt-get update - Next, run
apt-get upgrade - Answer yes to continue.
The following are not necessary to use your Armbian Ubuntu server, but may increase your enjoyment of it.
As installed, the red LED on the Zero 3 is configured as a heartbeat signal. Pulsing and flashing. Over and over. Doesn't a regularly pulsing red light pretty much just scream error? But it's not. It's a...heartbeat. Whatever. Change it to an activity indicator for the microSD and keep your sanity intact.
Here's how:
root@orangepizero3:~# cd /sys/class/leds
root@orangepizero3:/sys/class/leds# ls
green:power red:status
root@orangepizero3:/sys/class/leds# cd red\:status
root@orangepizero3:/sys/class/leds/red:status# ls
brightness device invert max_brightness power subsystem trigger uevent
root@orangepizero3:/sys/class/leds/red:status# echo "mmc0" >trigger
root@orangepizero3:/sys/class/leds/red:status# cat trigger
none usb-gadget usb-host kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock disk-activity disk-read disk-write mtd nand-disk heartbeat cpu cpu0 cpu1 cpu2 cpu3 activity default-on panic usbport [mmc0] mmc1 rfkill-any rfkill-none rfkill0 rfkill1 bluetooth-power hci0-power rfkill2 stmmac-0:01:link stmmac-0:01:1Gbps stmmac-0:01:100Mbps stmmac-0:01:10Mbps
Notice the square brackets surrounding mmc0 to indicate it is now the LED function.
If you plan to aggressively firewall access to your Armbian Ubuntu server, you'll need to let the update hosts through.
List the Zero 3's package sources with the command: grep URIs /etc/apt/sources.list.d/* and start with those hosts. Add any mirrors that come up as you're updating.
For example:
- github.armbian.com
- apt.armbian.com
- ports.ubuntu.com
- armbian.chi.auroradev.org
- armbian.lv.auroradev.org
The last two entries are mirror locations. Find the ones geographically close to you on https://docs.armbian.com/Mirrors/ and add them to your firewall rules.
Test by running apt-get update and apt-get upgrade. If you see anything hanging up, note the hostname and add it to your firewall rules.
Good old nmcli and nmtui will not help you here, because Ubuntu uses netplan and netplan thinks it's smarter than you and overwrites your changes at boot. To change the SSID and password, go to /etc/netplan and examine the files there. One of them will have your current SSID and password.
Edit the file using nano (because vi's not installed. Seriously? No vi? On an [expletive!] server? Really?
While editing the file, you can also add a line for bssid directly under the password. This will have the effect of pinning your Zero 3 to a particular wifi access point, because the board's wifi sucks at band steering.
Find your wifi access point's BSSID using the network manager command: nmcli dev wifi and note the MAC address looking thing in the second column.
It's a pretty familiar routine. Just run apt-get update followed by apt-get install vi to make vi available. This also serves as a good test of those firewall rules if you've segmented your nwtwork.