RockPi 4 – Ubuntu Server

Erstellt: 2020-10-17 | Änderungsstand: 2023-10-23

Ich installiere Ubuntu Server 20.04 LTS und verwende hierfür eine 32GB SD-Card. Folgendes beinhaltet dieser Guide:

  • Installation von Ubuntu 20.04 LTS Server
  • Login und Terminal
  • Systemupdate
  • Benutzererstellung (Optional)
  • Optional: Weiteren Benutzer anlegen
  • Benutzerpasswort ändern
  • Feste IP-Adresse vergeben
  • SSH-Port ändern
  • Locale & Tastaturlayout auf DE
  • Docker Compose installieren
  • Rechte des Benutzerverzeichnisses wiederherstellen (musste ich erledigen)
  • Ext. Laufwerk einbinden
  • Samba Freigabe erstellen

Los geht’s:

  • Von Wiki/Radxa unter Downloads „Ubuntu Server“ herunterladen (derzeit [10/2023] wird Ubuntu Server 22.04 zum Download angeboten)
  • Mittels Balena Etcher auf SD-Card bringen
  • SD-Card in den RockPi4 rein und starten
  • Login:
    • Benutzername: rock
    • Passwort: rock

Nach Login:

ip a

Hier wird die IP-Adresse angezeigt, mit welcher ich mich im Terminal einloggen kann. Da jetzt das Terminal funktioniert, wird es ab sofort auch benutzt. Übrigens – im Terminal ist bei mir das deutsche Tastaturlayout aktiv. Demzufolge muss ich nicht explizit das deutsche Tastaturlayout am System installieren. Zuerst das Update:

Bevor ich nun das System auf aktuellem Stand bringe:

export DISTRO=focal-stable 
wget -O - apt.radxa.com/$DISTRO/public.key | sudo apt-key add -

System aktualisieren:

sudo apt update && sudo apt upgrade -y

Optional Start

Jetzt könnte ich einen neuen Benutzer anlegen (im Beispiel ist das der Benutzer rocky ):

sudo -i
useradd -m rocky
passwd rocky
usermod -s /bin/bash rocky
usermod -g users rocky
gpasswd -a rocky sudo
gpasswd -a rocky ssh
exit
sudo reboot

Optional Ende

Nun unbedingt das Passwort des Benutzers „rock“ ändern:

sudo passwd rock

Es könnte sein, dass zuerst das vorhandene Passwort abgefragt wird und dann 2x das neue Passwort verlangt wird. Das steht aber dort, was benötigt wird.

sudo reboot

In Sachen Software installiere ich zuerst den Midnight Commander und den Editor nano:

sudo apt install mc nano -y

Soweit bin ich hier fertig. Installiert wurde Ubuntu-Server in der Version 20.04. LTS (Focal Fossa). Diese bezieht bis April 2025 Updates. Die aktuelle Version Ubuntu 22.04. LTS (Jammy Jellyfish) wird derzeit noch nicht für den RockPi 4 auf deren Seite angeboten.

Feste IP-Adresse vergeben:

sudo nmcli connection add type ethernet ifname eth0
sudo nano /etc/NetworkManager/system-connections/ethernet-eth0.nmconnection

Folgende Werte sind dort standardmäßig bei mir eingetragen (die „uuid“ ist bei jedem anders):

[connection]
id=ethernet-eth0
uuid=a3e524ab-2d0e-3df03-g4hk-3474f48h28fm
type=ethernet
interface-name=eth0
permissions=

[ethernet]
mac-address-blacklist=

[ipv4]
dns-search=
method=auto

[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=auto

[proxy]

Den ipv4 Bereich ändere ich nun um (Der Rest bleibt unverändert):

[ipv4]
dns-search=
method=manual
address1=192.168.1.234/24,192.168.1.1
dns=192.168.1.1;8.8.8.8;8.8.8.4

Strg-x, y, Enter

Erklärung:

  • adress1=die IP, die vergeben werden soll, inkl /24. Die 24 weist auf die Subnetzmask 255.255.255.0 hin. Meine Netzwerk-Adresse für den Ubuntu-Server soll die 192.168.1.234 sein und meine Subnetmask besteht aus 255.255.255.0. Also vergebe ich die Adresse 192.168.1.234/24
  • dns=die dns-Adresse für die Namensauflösung. Ich verwende immer die Adresse des Routers. Man könnte theoretisch auch die 8.8.8.8 oder die 8.8.4.4 für Google-DNS oder 1.1.1.1 für Cloudflare-DNS verwenden oder wie im Beispiel, mehrere mit Semikolon voneinander getrennt.
sudo systemctl restart network-manager.service
sudo reboot

SSH-Port ändern:

sudo nano /etc/ssh/sshd_config

Ich suche nun folgenden Eintrag:

#Port 22

Diesen Eintrag ändere ich folgend:

Port 12345

Strg-x, y, Enter

Port 12345 ist ab nun der Port, der für den SSH-Zugang verwendet wird.

Dieser Port, so wie er in diesem Beispiel angegeben wurde, sollte natürlich nicht so verwendet werden! Bitte einen eigenen, freien Port verwenden!!!

sudo systemctl restart ssh

Im Terminal mit dem neuen Port anmelden – fertig.

(Die alte Terminalsession funktioniert noch bis zum Schließen dieser)

Locale & Tastaturlayout DE einrichten:

sudo apt-get install language-pack-de -y
sudo localectl set-locale LC_MESSAGES=de_DE.utf8 LANG=de_DE.UTF-8
sudo update-locale
sudo localectl set-x11-keymap de pc105 nodeadkeys compose:rwin
sudo reboot
localectl status
   System Locale: LANG=de_DE.UTF-8
                  LC_MESSAGES=de_DE.utf8
       VC Keymap: de-latin1-nodeadkeys
      X11 Layout: de
       X11 Model: pc105
     X11 Variant: nodeadkeys
     X11 Options: compose:rwin

Docker Compose installieren:

sudo apt-get update
sudo apt install curl -y
sudo curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh
sudo usermod -aG docker $USER
docker compose version

Meine Ausgabe zum Zeitpunkt:

Docker Compose version v2.21.0

Rechte des Benutzerverzeichnisses wiederherstellen:

sudo chown -R rock:rock /home/rock

Externes Laufwerk einbinden:

Ich verwende eine NVMe und binde diese nun im System ein:

lsblk

Meine Ausgabe:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
mmcblk0     179:0    0  29.7G  0 disk
|-mmcblk0p1 179:1    0   3.9M  0 part
|-mmcblk0p2 179:2    0     4M  0 part
|-mmcblk0p3 179:3    0     4M  0 part
|-mmcblk0p4 179:4    0   512M  0 part
`-mmcblk0p5 179:5    0  29.2G  0 part /
nvme0n1     259:0    0 931.5G  0 disk

Meine NVMe hat die Bezeichnung nvme0n1, welche ich nun neu partitioniere:

Alle vorhandenen Daten des Laufwerkes werden gelöscht!

sudo parted /dev/nvme0n1 "mklabel gpt"
  • Yes

Formatieren als ext.4 Laufwerk:

sudo mkfs.ext4 /dev/nvme0n1
  • y

Jetzt mounte ich das Laufwerk nach /mnt/nvme0n1:

(ssd ist meine dafür verwendete Bezeichnung)

sudo mkdir -p /mnt/nvme0n1
sudo mount /dev/nvme0n1 /mnt/nvme0n1
sudo chmod -R 777 /mnt/nvme0n1/

Zur Erklärung, da immer wieder Fragen aufkommen und die gängigsten Beispiele:

  • 777: Jeder kann Lesen, Schreiben, Ausführen (rwx rwx rwx).
  • 755: Der Besitzer, die Gruppe und andere Personen können Lesen –> Schreiben und Ausführen nur Besitzer (rwx rx rx).
  • 600: Nur der Eigentümer kann Lesen und Schreiben (rw – -).

Auto-Mount:

Zuerst muss ich die UUID meiner SSD feststellen:

sudo blkid

Als Ausgabe bekomme ich:

/dev/nvme0n1: UUID="4x659dk3-0egs-xxdd-ghpe-9f4583196fk1" BLOCK_SIZE="4096" TYPE="ext4"

Meine UUID lautet demzufolge: 4x659dk3-0egs-xxdd-ghpe-9f4583196fk1

Nun trage ich die nötigen Sachen in der fstab ein:

sudo nano /etc/fstab

Folgendes trage ich am Ende ein:

# ext. nvme0n1 einhängen
UUID="4x659dk3-0egs-xxdd-ghpe-9f4583196fk1"   /mnt/nvme0n1   ext4   auto,nofail,sync,users,rw   0   0

Strg-x, y, Enter

sudo mount -a

Zum Test, ein obligatorischer Reboot:

sudo reboot

Nach dem Start ist meine SSD unter dem erstellten Mountpoint verfügbar.

Samba-Freigabe:

Ich richte die SMB-Freigaben ein, damit ich meine Medien mittels Netzwerk auf meinem Server kopieren kann. Mein Benutzername ist rock.

sudo apt update && sudo apt upgrade -y
sudo apt install samba samba-common smbclient -y

Check, ob alles passt:

sudo service smbd status

Als wichtige Ausgabe erhalte ich:

 Active: active (running)

Ggf. Strg-c drücken.

Samba ist nun installiert. Auf zur Konfiguration:

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf_old
sudo nano /etc/samba/smb.conf

Folgendes füge ich ein:

[global]
workgroup = WORKGROUP
security = user
client min protocol = SMB2
client max protocol = SMB3

Strg-x, y, Enter

SMB-Freigabeverzeichnis einrichten:

Ich habe eben meine SSD als Mount zu /mnt/nvme0n1 gesetzt. Dieses Verzeichnis verwende ich und setze die Freigabe meines Samba-Freigabeordners (sharedfolders) für den Benutzer rock:

sudo mkdir -p /mnt/nvme0n1/sharedfolders
sudo chown -R rock:rock /mnt/nvme0n1/sharedfolders

Achtung! Dieser Freigabeordner /mnt/nvme0n1/sharedfolders ist selbst nur noch mittels Benutzer rock und root verwendbar (Lesen und Schreiben)! Das trifft nicht für den Hauptordner /mnt/nvme0n1 zu. Dieser kann in meinem Beispiel mit jedem Benutzer verwendet werden, wenn dort 777 verwendet wurde..

sudo nano /etc/samba/smb.conf

Folgendes trage ich am Ende dieser Datei ein:

[shared]
comment = Samba-RockPi-Freigabe
path = /mnt/nvme0n1/sharedfolders
browseable = yes
read only = no

Strg-x, y, Enter

Achtung! –> Das Freigabeverzeichnis für den Ordner /mnt/nvme0n1/sharedfolders lautet nun shared. Soll das Freigabeverzeichnis sichtbar für andere Kuchen heißen, muss die Zeile [shared] in [Kuchen] geändert werden!

sudo service smbd restart
sudo service nmbd restart

SMB-Passwort erstellen:

sudo smbpasswd -a rock

Optional: Deaktivieren des rock-Users für Samba-Zugriffs:

sudo smbpasswd -d rock

Optional: Re-Aktivieren des rock-Users für Samba-Zugriffs:

sudo smbpasswd -e rock

Die SMB-Freigabe kann nun verwendet werden und ich kann mittels Windows-Rechner darauf zugreifen (Bsp.: \\192.168.1.200\shared).

Am Ende ein:

sudo reboot

Unterstützende Quelle(n):

https://forum.radxa.com/t/sudo-apt-update-get-error/13061

https://wiki.ubuntuusers.de/IP-Adresse_wechseln/

https://wiki.ubuntuusers.de/systemd/localectl/

https://docs.docker.com/engine/install/ubuntu/#install-using-the-convenience-script

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten