Clone
3
Heimserver
Christian Steinle edited this page 2024-10-10 12:51:40 +02:00

Hardware Odroid H2+

Das System wurde wegen der sparsamen Hardware und den beiden 2.5 Gbit/s Netzwerkschnittstellen als Basis für den Homeserver gewählt.

Komponenten

  • CPU: Intel Celeron J4115 (14nm)
    • Anzahl der Kerne: 4
    • Anzahl der Threads: 4
    • Grundtaktfrequenz: 1.80 GHz
    • Burst (all core): 2.30 GHz
    • Burst (single core): 2.50 GHz
    • Cache: 4 MB
    • TDP: 10 W
  • GPU: Integrierte Intel UHD-Grafik 600
    • Grundtaktfrequenz: 250 MHz
    • Burst: 750 MHz
    • Videospeicher: 8 GB
    • Ausführungseinheiten: 12
  • Netzwerk: 2 x Realtek RTL8125B
    • Geschwindigkeit: 2.5 Gbit/s
  • RAM: G.Skill Ripjaws 32 GB DDR4 SO-DIMM Dual Kit
    • 2400 MT/s
    • CL 16-16-16-39
    • Spannung 1.2 V
  • Storage:
    • Micron NVME
      • 465 GB
      • /dev/nvme0n1
    • WDC WD5400T2B0A
      • 3726 GB
      • /dev/sda
    • Crucial CT2000MX500SSD1
      • 1863 GB
      • /dev/sdb

Anwendungen

Mit dem System sollte die alte DevBox abgelöst werden. Hier liefen diverse Anwendungen, wie

  • SVN
  • Entwicklungsumgebungen
  • Nextcloud
  • Wiki
  • uvm.

Aufgrund der breiten Verwendung, war das System schwer zu aktualisieren. Viele installierte und speziell konfigurierte Pakete machten einen Umzug oder erneuten Aufbau sehr schwer und die Abhängigkeiten zwischen den Paketen waren mitunter schwer aufzulösen. Weiterhin wurden alle Webanwendungen nur über ein Unterverzeichnis des Webservers von einander getrennt. Dies bereitete bei einigen Anwendungen Probleme, außerdem gab es keine Möglichkeit, externe und interne Zugriffe zu separieren.

Docker

Daher wurde als neue Basis eine Docker Installation gewählt, um einzelne Anwendungen auch in separaten Containern ausliefern zu können.

Installation Ubuntu 21.10

Als Unterbau für den Docker Host wurde Ubuntu 21.10 verwendet. Zum Zeitpunkt der Installation war ein Treiber für die Realtek 2.5 Gbit/s Netzwerk Interfaces nur über Umwege nutzbar. Bei Erscheinen des nächsten LTS Release wird ein Update / eine Neuinstallation durchgeführt. Eine Minimalinstallation mit OpenSSH ist als Unterbau ausreichend.

Zusätzliche Pakete

Folgende Pakete wurden zusätzlich installiert. Die Liste kann mit apt list aufgerufen werden:

apt list --manual-installed

apcupsd/impish,now 3.14.14-3.1 amd64 [installiert]
apt-xapian-index/impish,impish,now 0.51ubuntu1 all [installiert]
base-passwd/impish,now 3.5.51 amd64 [installiert]
bsdutils/impish-updates,now 1:2.36.1-8ubuntu2 amd64 [installiert]
btrfs-progs/impish,now 5.10.1-2build1 amd64 [installiert]
ca-certificates/impish,impish,now 20210119ubuntu1 all [installiert]
cifs-utils/impish,now 2:6.11-3.1 amd64 [installiert]
containerd.io/impish,now 1.4.12-1 amd64 [installiert]
cpufrequtils/impish,now 008-2 amd64 [installiert]
curl/impish,now 7.74.0-1.3ubuntu2 amd64 [installiert]
dash/impish,now 0.5.11+git20210120+802ebd4-1build1 amd64 [installiert]
diffutils/impish,now 1:3.8-0ubuntu1 amd64 [installiert]
docker-ce-cli/impish,now 5:20.10.123-0ubuntu-impish amd64 [installiert]
docker-ce/impish,now 5:20.10.123-0ubuntu-impish amd64 [installiert]
fancontrol/impish,impish,now 1:3.6.0-7 all [installiert]
findutils/impish,now 4.8.0-1ubuntu2 amd64 [installiert]
firefox-locale-de/impish-updates,impish-security,now 96.0+build2-0ubuntu0.21.10.1 amd64 [installiert]
firefox-locale-en/impish-updates,impish-security,now 96.0+build2-0ubuntu0.21.10.1 amd64 [installiert]
fonts-indic/impish,impish,now 2:1.4 all [installiert]
fonts-jetbrains-mono/impish,impish,now 2.225+ds-1 all [installiert]
gnome-disk-utility/impish,now 41.0-1ubuntu1 amd64 [installiert]
gnupg/impish,impish,now 2.2.20-1ubuntu4 all [installiert]
grep/impish,now 3.7-0ubuntu1 amd64 [installiert]
hostname/impish,now 3.23ubuntu1 amd64 [installiert]
hwinfo/impish,now 21.72-1 amd64 [installiert]
init/impish,now 1.60build1 amd64 [installiert]
language-pack-de-base/impish,impish,now 1:21.10+20211008 all [installiert]
language-pack-de/impish,impish,now 1:21.10+20211008 all [installiert]
language-pack-en-base/impish,impish,now 1:21.10+20211008 all [installiert]
language-pack-en/impish,impish,now 1:21.10+20211008 all [installiert]
language-pack-gnome-de-base/impish,impish,now 1:21.10+20211008 all [installiert]
language-pack-gnome-de/impish,impish,now 1:21.10+20211008 all [installiert]
language-pack-gnome-en-base/impish,impish,now 1:21.10+20211008 all [installiert]
language-pack-gnome-en/impish,impish,now 1:21.10+20211008 all [installiert]
laptop-mode-tools/impish,impish,now 1.74-1.1 all [installiert]
libdebconfclient0/impish,now 0.256ubuntu3 amd64 [installiert]
linux-generic/impish-updates,impish-security,now 5.13.0.28.38 amd64 [installiert]
lsb-release/impish,impish,now 11.1.0ubuntu3 all [installiert]
ncurses-base/impish,impish,now 6.2+20201114-2build1 all [installiert]
ncurses-bin/impish,now 6.2+20201114-2build1 amd64 [installiert]
openssh-server/impish-updates,now 1:8.4p1-6ubuntu2.1 amd64 [installiert]
powertop/impish,now 2.11-1build2 amd64 [installiert]
rdiff-backup/impish,now 2.0.5-2 amd64 [installiert]
shim-signed/impish,now 1.51+15.4-0ubuntu9 amd64 [installiert]
smartmontools/impish,now 7.2-1build1 amd64 [installiert]
sqlite3/impish,now 3.35.5-1 amd64 [installiert]
synaptic/impish,now 0.90.2 amd64 [installiert]
ubuntu-mate-artwork/impish,impish,now 21.10.0 all [installiert]
ubuntu-mate-core/impish,now 1.276 amd64 [installiert]
ubuntu-mate-desktop/impish,now 1.276 amd64 [installiert]
ubuntu-mate-wallpapers/impish,impish,now 21.10.0 all [installiert]
ubuntu-minimal/impish,now 1.472 amd64 [installiert]
ubuntu-restricted-addons/impish,now 26 amd64 [installiert]
ubuntu-standard/impish,now 1.472 amd64 [installiert]
vim/impish-updates,impish-security,now 2:8.2.2434-3ubuntu3.2 amd64 [installiert]

Docker

Docker vereinfacht die Bereitstellung von Anwendungen, weil sich Container, die alle nötigen Pakete enthalten, leicht als Dateien transportieren und installieren lassen.

Docker Installation unter Ubunut

Entfernen alter Installationen

Falls alte Intallationen von Docker vorhanden sind, sollten diese zuvor entfernt werden:

sudo apt-get remove docker docker-engine docker.io containerd runc

Installation über Docker Repos

Zunächst muss das System aktualisiert und grundlegende Pakete installiert werden:

sudo apt-get update

sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

Danach wird der offizielle GPG Schlüssel von Docker hinzugefügt:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Um das stabile Repository zu benutzen, kann folgender Befehl verwendet werden. Ansonsten muss hinter stable einer oder beide Begriffe angehängt werden nightly bzw. test.

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Installation der Docker Engine

Nach hinzufügen des Repos muss apt nochmal aktualisert werden. Danach kann die Docker Engine installiert werden:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

Prüfen der Installation

Ob Docker funktioniert kann schnell mit Hilfe des hello-world Image getestet werden:

sudo docker run hello-world

Docker ohne root ausführen

Hierfür wird die Gruppe docker erstellt und der aktuelle Benutzer zur Gruppe hinzugefügt:

sudo groupadd docker
sudo usermod -aG docker $USER

Danach muss man sich vom System ab- und wieder anmelden, so dass die neue Gruppenrichtlinie greift.

Jetzt sollte docker ohne root Rechte funktionieren

docker run hello-world

Docker beim Boot automatisch starten

sudo systemctl enable docker.service
sudo systemctl enable containerd.service