Odroid C2 mit Nextcloud von A bis Z

Odroid C2 mit Nextcloud von A bis Z

Mit dieser Anleitung setzen Sie Ihren Odroid C2 mit Ubuntu 20.04.x LTS neu auf, Sie konfigurieren und optimieren den Server und installieren abschließend Ihre eigene Nextcloud mithilfe meines Installationsskripts. Das Zielsystem basiert auf nginx 1.25.x, PHP 8.x, MariaDB 10.11.x, Redis-Server und fail2ban – los geht’s:

(1) Installation des Basisimages auf die eMMC
(2) Server tweaks
* Bash (auto-) completion
* Benutzer anlegen („root“ deaktivieren)
* Zeitzone anpassen
* ssh Anpassungen
* Servernamen anpassen
(3) Server aktualisieren
(4) Performance tuning: boot.ini
(5) Nextcloud-Installation mittels Skript

(1) Installation des Basisimages auf die eMMC

Zuerst laden Sie das Odroid ubuntu image herunter:

Download: ubuntu-20.04-3.16-minimal-odroid-c2-20210201.img.xz

Verbinden Sie das eMMC Modul mit Ihrem Desktop und suchen das eMMC Gerät

sudo -s
fdisk -l

Hier verwenden wir exemplarisch „/dev/mmcblk0„. Extrahieren Sie das zuvor heruntergeladenen Image:

unxz ubuntu-20.04-3.16-minimal-odroid-c2-20210201.img.xz

und übertragen es auf das eMMC Modul:

dd if=ubuntu-20.04-3.16-minimal-odroid-c2-20210201.img of=/dev/mmcblk0

Nach wenigen Minuten ist der Vorgang bereits abgeschlossen. Bauen Sie den Odroid C2 nun zusammen, verbinden ihn mit einem LAN Kabel sowie mit einer Tastatur, einem Monitor und dem Stromkabel.

Der ODROID C2 muss nach wenigen Minuten (das blaue Licht leuchtet dann nicht mehr!) neu gestartet werden. Ziehen Sie den Odroid C2 dafür kurz vom Strom und verbinden ihn wieder mit Strom, er startet somit neu. Am Monitor können SIe den Startvorgang sehen. Login Sie sich als Benutzer „root“ und dem Passwort „odroid“ ein.

user: root
password: odroid

Zuerst aktualisieren wir den Odroid C2 und ermitteln die IP-Adresse:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9
apt update && apt upgrade -y
apt install net-tools -y && ifconfig

Die Netzwerkkarte wird Ihnen mit eth0 dargestellt. Die IP-Adresse erscheint in der zweiten Zeile, bspw.:

inet addr:192.168.2.167

Konfigurieren Sie die deutsche Sprache ür Ihren Odroid C2:

apt install language-pack-de
dpkg-reconfigure keyboard-configuration
locale-gen de_DE@euro
dpkg-reconfigure console-setup

Ab jetzt können Sie den Monitor und die Tastatur bereits abstecken und sich direkt per SSH im Terminal unter Linux oder unter Windows 10 mittels Putty oder dem integriertem WSL mit Ihrem Server verbinden:

ssh root@192.168.2.167

Bei der Erstanmeldung müssen Sie den Schlüssel prüfen und mit „yes“ bestärigen, ehe Sie sich am System anmelden können. Verwenden Sie erneut das Passwort odroid.

Glückwunsch, Ihr Server ist vorbereitet und kann nun optimiert werden.

(2) Server tweaks

(2.1) Bash (auto-) completion

Aktivieren Sie die sogenannte bash auto completion (Auto-Vervollständigung mittels Tab in der Shell):

apt install bash-completion -y

Passen Sie das File bash.bashrc an

cp /etc/bash.bashrc  /etc/bash.bashrc.bak
vi /etc/bash.bashrc

in dem Sie nach dem unteren Block suchen und diesen einkommentieren, also die # entfernen:

# enable bash completion in interactive shells
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi

Lassen Sie sich die Bash zudem farblich darstellen:

vi .bashrc

Entfernen Sie die ‚#‘ vor force_color_promp=yes

force_color_prompt=yes

Starten Sie den Server neu.

reboot now

(2.2) Persönlichen Benutzer anlegen und „root“ deaktivieren

Verbinden Sie sich wie zuvor mit Ihrem Server und erzeugen einen neuen Benutzer namens „next“

adduser next

Setzen Sie ihr eigenes Passwort und füllen die nachfolgenden Felder aus bzw. lassen diese auf Ihren Wunsch hin leer. Im Anschluß daran wird dem neuen Benutzer noch das sudo-Recht gewährt:

usermod -aG sudo next

Verlassen Sie die root-Shell

exit

und verbinden sich mit ihrem neuen Benutzer zum Server:

ssh next@192.168.2.167

Nun deaktivieren Sie den root Account, um ein interaktives Anmelden des Benutzers „root“ zukünftig zu verhindern:

sudo passwd -dl root

(2.3) Zeitzone anpassen

Der Server nutzt standardmäßig das UTC-Zeitformat. Um später lesbare und vergleichbare Datumswerte (u.a. in den Logfiles) nutzen zu können, passen wir dieses Zeitformat an und richten Europa/Berlin ein:

sudo dpkg-reconfigure tzdata

Folgen Sie dem Assistenten:

(2.4) ssh Anpassungen

Wir stellen nun sicher, dass sich der der Root-Benutzer nicht mehr per SSH anmelden kann, der ServerKey aus 4096 Bits besteht und nur noch der neu angelegte Benutzer eine SSH Verbindung zum Server aufbauen kann.

sudo ssh-keygen -q -f /etc/ssh/ssh_host_rsa_key -N '' -b 4096 -t rsa
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo vi /etc/ssh/sshd_config

Setzen Sie „ServerKeyBits“ auf 4096:

ServerKeyBits 4096

Setzen Sie „PermitRootLogin“ auf no:

PermitRootLogin no

Setzen Sie „AllowUsers“ auf ihren Benutzer (bspw. next)

AllowUsers next

Starten Sie den SSH Dienst neu und testen dann eine neue SSH-Verbindung, ohne das bestehende Shell-Fenster zu schließen!

sudo service ssh restart

Sofern die Anmeldung funktioniert hat, ist die neue SSH-Konfiguration in Ordnung.

(2.5) Servernamen anpassen

Setzen Sie den Servernamen auf localhost:

sudo cp /etc/hosts /etc/hosts.bak
sudo vi /etc/hosts
127.0.0.1 localhost
127.0.1.1 cloud
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Ersetzen Sie nun in der hostname-Datei den derzeitigen Servernamen odroid64 mit bspw. cloud:

sudo cp /etc/hostname /etc/hostname.bak
sudo vi /etc/hostname
cloud
sudo reboot now

(3) Aktualisieren Sie den Server

Aktualisieren Sie den Server bevor Sie die Performance optimieren

sudo apt update && sudo apt upgrade -y

(4) Performance tuning: boot.ini

Für eine bessere Perfomrance und weniger Speicherverbrauch setzen Sie zwei Werte auf ‚1‘:

sudo -s
vi /media/boot/boot.ini

to

...
# Server Mode (aka. No Graphics)
# Setting nographics to 1 will disable all video subsystem
# This mode is ideal of server type usage. (Saves ~300Mb of RAM)
setenv nographics "1"

# Meson Timer
# 1 - Meson Timer
# 0 - Arch Timer
# Using meson_timer improves the video playback however it breaks KVM (virtualization).
# Using arch timer allows KVM/Virtualization to work however you'll experience poor video
setenv mesontimer "0"
...

Wird der Wert für mesontimer auf 1 gesetzt, so funktioniert MariaDB nicht mehr unter Ubuntu 20.04. Nach einem letzten Restart des Servers

sudo reboot now

können Sie bereits mit der automatischen Nextcloud Installation beginnen.

(5) Nextcloud Installation mittels Skript:

Dieser Abschnitt basiert auf diesem Artikel:

Verbinden Sie sich mit ihrem Server und wechseln mittels sudo zu Ihrem privilegierten Benutzer:

sudo -s
apt install -y wget dnsutils
wget -O zero.sh https://codeberg.org/criegerde/nextcloud-zero/raw/branch/master/ubuntu.sh

Markieren Sie es als „ausführbar“:

chmod +x zero.sh

Passen Sie bei Bedarf diese Parameter an.

nano zero.sh
##################################################
# D: Konfigurationsvariablen - bitte anpassen!   #
# E: Configuration variables - please configure! #
##################################################

NEXTCLOUDDATAPATH="/data"
NEXTCLOUDADMINUSER="nc_admin"
NCRELEASE="latest.tar.bz2"
PHPVERSION="8.2"
LETSENCRYPT="n"
NEXTCLOUDDNS="ihre.domain.de"
DATABASE="m"
NCDBUSER="ncdbuser"
CURRENTTIMEZONE='Europe/Berlin'
PHONEREGION='DE'
NEXTCLOUDOFFICE="n"
ONLYOFFICE="n"
UPLOADSIZE='10G'

Um nicht das aktuellste, sondern bei Bedarf ein vorheriges Nextcloud Release (NCRELEASE) zu verwenden, ermitteln Sie auf dieser Seite den Namen und tragen diesen dann im Skript ein. Bleibt dieser Eintrag (NCRELEASE) unverändert, so wird immer das aktuelle Nextcloud Release (Stand heute Nextcloud 27 / Hub 5) in Verbindung mit PHP 8.2 installiert.

NCRELEASE="latest.tar.bz2"

Entscheiden Sie sich für ein vorheriges Nextcloud Release, so passen Sie zwingend auch die Variable PHPVERSION an! Erst Nextcloud 27 (Hub 5) ist PHP 8.2 kompatibel, wählen Sie daher entweder PHP „8.1“ oder „8.0“ aus.

PHPVERSION="8.2"

Wenn Sie keinen externen DNS (A-Record) nutzen, sondern alles beispielsweise hinter einer Fritz.Box im privaten Netz betreiben möchten, dann tragen Sie die lokale IP-Adresse des Servers (bspw. 192.168.178.2) sowohl am Parameter NEXTCLOUDDNS, als auch am Parameter NEXTCLOUDEXTIP ein.

NEXTCLOUDDNS="192.168.178.2"
NEXTCLOUDEXTIP="192.168.178.2"

Nutzen Sie eine öffentliche und feste IP mit A/AAA-Record DNS-Record, so tragen Sie diesen DNS unter NEXTCLOUDDNS ein (bspw. „ihre.domain.de“) und lassen den Parameter NEDXTCLOUDEXTIP im Skript unverändert.

NEXTCLOUDDNS="ihre.domain.de"

Führen Sie nun das Skript aus.

./zero.sh

Nach weniger als 10 Minuten (im Beispiel 3 Minuten 10 Sekunden ohne Let’s Encrypt- Zertifikate) erscheint ein Abschlußbildschirm mit allen relevanten Informationen:

Das war es schon – Sie haben eine eigene Nextcloud.

Möchten Sie alles erneut installieren oder deinstallieren, so führen Sie folgende Befehle aus:

./Nextcloud-Installationsskript/uninstall.sh

Es wird empfohlen, sowohl das angepasste Skript, als auch das Nextcloud-Installationsskript/install.log zu entfernen, da darin sensible Daten enthalten sind:

rm -Rf zero.sh Nextcloud-Installationsskript

Das war’s schon! Über Ihre Unterstützung (diese wird ordnungsgemäß versteuert!) würden sich meine Frau, meine Zwillinge und ich sehr freuen.