Raspberry Pi Zero Klon von Radxa

Nach bald zwei Jahren umfangreicherer Erfahrung mit den Raspberry Pi Single Board Computern, wage ich mich erstmals in Klon-Gefilde. Raspberry Pi bietet für Bastler meiner Meinung nach immer noch das beste Gesamtpaket. Während der Lieferengpässe 2021 bis 2023 haben viele Leute eher aus Alternativlosigkeit SBCs von meist chinesischen Herstellern wie Orange Pi, Luckfox oder Radxa gekauft. Das kann man durchaus machen, aber der geringere Preis – sofern man nicht während der Unlieferbarkeitszeit einen kleinen Computer haben wollte – hat auch seine Kosten: Softwareunterstützung. Denn diese ist bei den alternativen Anbietern viel schlechter als bei Raspberry. Auch hier gibt es Unterschiede zwischen den verschiedenen Firmen, von eh ganz gut bis grottenschlecht. Als ich mit dem Herumwerkeln und Basteln begonnen habe, habe ich dann lieber auf einen Raspberry Pi 4 gewartet. Ab Herbst 2022 sind die auch schön langsam wieder verfügbar geworden – dank sei der Website rpilocator, wo alle aktuellen Raspi-Angebote gesammelt wurden und werden. So habe ich dann doch ein Kit ergattern können, mit gut 115 Euro zwar kein wirklich billiges Unterfangen, aber auch nicht extrem hoch.

Zwei Jahre später traue ich mir aber schon ein bisserl mehr zu und ich habe mir zwei Raspberry Pi Zero Klone von Radxa gekauft, den Radxa Zero 3W (Wlan)…

… und 3E (Ethernet)…

… mit jeweils 1GB RAM und sonst nicht viel. Die Lan-Variante interessiert mich besonders, da ich überlege einen DHCP und DNS Server drauf zu betreiben, als gespiegeltes Backup zur bestehenden Pi-hole Installation unter Proxmox. Denn dort verwende ich noch nicht DHCP, also die IP-Adressen-Zuweisung an alle Geräte im Lan und Wlan. Das mach’ ich deshalb nicht, weil wenn der Mini-Server aus irgendeinen Grund ausfällt soll nicht gleich auch noch das ganze Internet zuhause weg sein.

Als erstes werde ich jedoch den Radxa Zero 3W austesten und sofern möglich als VPN-Endpunkt in meinem Tailscale-Netz verwenden. Aber eins nach dem anderen.

Ubuntu auf Radxa Zero 3W installieren

Hier gibt es Ubuntu Images für alle möglichen Rockchip-SBCs. Ich versuche es mit dem Raspberry Pi Imager…

… wo ich (rückblickend etwas naiv) auch die Benutzername, Passwort und Wlan eingetragen habe. Ich glaube nicht, dass das funktionieren wird, aber schauen wir einmal. Ich werde dennoch die “offizielle” Variante mit dem Eintragen der SSID und des Passworts probieren.

Und da gibt es schon das erste Problem…

… es fehlt die FAT32 Partition, die soweit ich weiß, ja noch immer bei den Raspberry Pis verwendet wird. Schauen wir einmal in die SD-Karte:

Dort gibt es auf jeden Fall die benötigten Konfigurationsdateien, wo man auch Wlan Login-Daten eintragen kann. Probieren wir es einfach einmal aus. Ich habe dort noch mein Wlan Passwort und Name angegeben. Vielleicht bootet es ja. SD-Karte auswerfen, in den Radxa-Rechner geben und USB-C Kabel (5 Watt reichen) anstecken.

Und zur großen Überraschung aller findet sich der kleine Rechner in der Liste der Geräte im Wlan:

Der Versuch sich sogleich via SSH zu verbinden…

Der Versuch sich via SSH zu verbinden scheitert jedoch prompt. Bespielen wir die SD Karte noch einmal, aber diesmal ohne die Rasoberry Pi Imager Konfiguration:

Jetzt hat es funktioniert. Der Fehler war letztlich eine einfache Fehlkonfiguration, es stand enable passwauth: False anstelle von True. Manchmal hilft halt genau lesen.

SSH-Login:

Und Passwort ändern:

Jetzt kann man sich mit dem angepassten Passwort anmelden und den kleinen Rechner aufsetzen.

Updates einspielen, Benutzer und Hostnamen ändern

Ich weiß jetzt zum Beispiel gar nicht, inwiefern man hier einfach Updates installlieren kann. Es handelt sich ja um ein Custom-Image mit Ubuntu. Aber probieren werde ich es auf jeden Fall:

Es scheint eh alles auf aktuellem Stand zu sein, das Image ist aber mit Stand heute auch nur zwei Tage alt.

Den Hostnamen ändert man mit sudo nano /etc/hostname und ändert einfach den Namen in der Config. Anschließend Neustart.

Ich möchte auch den Ubuntu-User ersetzen und nicht einen zusätzlichen User machen. Dazu muss man zuerst einen temporären Benutzer erstellen mit sudo adduser tmp:

Dann zur Sudogruppe hinzufügen mit sudo usermod -aG sudo tmp:

Dann eine neue SSH-Session mit dem tmp-User starten, die alte SSH-Verbindung stoppen und Befehl sudo usermod -l radxatail -d /home/radxatail -m ubuntu ausführen:

User wieder löschen mit sudo deluser tmp:

Mit diesem kleinen Tänzchen kann man den Standarduser (mit der UID 1000) durch einen gewünschten anderen User austauschen.

Tailscale für Fernzugriff installieren

Als nächstes probieren wir das Installerskript von Tailscale mit curl -fsSL https://tailscale.com/install.sh | sh auch auf dem Rockchip-Rechner funktioniert. Aber siehe da…

… es hat problemlos hingehaut:

Tailscale als Exit Node einrichten

Ähnlich wie in diesem Beitrag beschrieben, werde ich auch hier einen Endpunkt für den VPN einrichten, um des kleinen Radxa-Rechner zum VPN-Endpunkt zu machen und nach Wunsch der gesamte Internettraffic da durchgeleitet werden kann.

Die Anleitung im oben genannten Beitrag weicht nur an einem Punkt ab, nämlich, dass hier noch einmal das IP-Forwarding aktiviert werden muss. Die Tailscale Dokumentation weiß Rat.

Zuerst das Forwarding hinzufügen:

Und dann den Endpunkt starten mit:

sudo tailscale set --advertise-exit-node

In der Adminkonsole auf der Tailscale-Seite muss man dies noch bestätigen.

Netdata installieren

Ich möchte auch ein bisserl Monitoring haben um aus der Ferne überprüfen zu können, wie sich der kleine Computer schlägt. Dazu verwende ich Netdata und führe das Installerskript von der Weboberfläche aus:

Die Weitergabe von Telemetrie-Daten an Google Analytics kann laut ArchWiki so entfernen:

touch /etc/netdata/.opt-out-from-anonymous-statistics

Und btop, weil es informativer und ansehnlicher ist, als die Konsolen-Task-Manager top und htop:

Sehr schön!

Docker installieren auf Ubuntu arm64

Einige sinnvolle Programme lassen sich auch als Docker Container installieren. Hier ist die offizielle Anleitung.

Alte Version von Docker löschen mit for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

Ist aber hier eh nicht installiert. Als nächstes die Docker-Paketquellen zu apt hinzufügen:

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
 
# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Und dann kann man die Docker-Pakete installieren mit sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin.

Und dann werden sogleich 370 MB runtergeladen:

Docker rootless ausführen

Ganz wichtig ist noch aus Sicherheitsgründen die Container ohne sudo laufen zu lassen. Die Anleitung dazu gibt es hier. Zuerst Dockergruppe erstellen mit sudo groupadd docker dann User hinzufügen mit sudo usermod -aG docker $USER. Anschließend entweder aus- und einloggen oder newgrp docker ausführen und Test-Docker-Container “Hallo Welt” mit docker run hello-world runterladen und ausführen.

Lehre daraus

Es war interessant zum ersten Mal mit einem Raspi Klon herumzuwerkeln. Zugegeben, für diese Aufgabe wäre eine Raspberry Pi Zero genauso, wenn nicht sogar besser, geeignet gewesen (bis auf die etwas mageren 512MB RAM, 1GB gibt da schon mehr her, vor allem für Docker Container). Aber nachdem ich das offizielle Image ignoriert habe und die Cloudinit-Konfiguration durschaut habe, hat es sehr gut funktioniert. So gefällt mir das.