Skip to content

Server Einrichtung ​

Achtung!

Die Server Einrichtung ist grundsätzlich ein einmaliges Ereignis und sollte von Administratoren durchgeführt werden. Sämtliche hier genannten Schritte sind potenziell destruktiv und verändern den Zustand des Servers.

Vorbereitung ​

  1. Verbinde den Mini-PC mit dem Router (über LAN-Kabel)
  2. Monitor anschließen (über HDMI-Kabel (gleicher Kanal wie der Monitor))
  3. Tastatur und Maus anschließen (über USB-Kabel)
  4. Flashe einen USB-Stick mit der gewünschten Linux-Distribution
bash
# Alle Laufwerke auflisten
diskutil list

# USB identifizieren
# USB aushängen
diskutil unmountDisk /dev/disk6

# Linux ISO herunterladen
# z.B. https://cdimage.debian.org/cdimage/release/current/amd64/iso-cd/

# Linux ISO auf USB schreiben
sudo dd if=$HOME/Downloads/debian-13.1.0-amd64-netinst.iso of=/dev/rdisk6 bs=4m status=progress

# USB auswerfen
diskutil eject /dev/disk6
  1. USB-Stick in USB Port des Mini-PCs stecken
  2. Stromkabel anschließen und verbinden

Booten ​

  1. Einschalten und wiederholt F7 drücken
  2. Wähle "Installieren" (nicht "Grafik-Installation")
  3. Wähle das USB-Laufwerk
  4. Schließe die Installation ab, bis ein hellblauer Hintergrund mit drei Auswahlmöglichkeiten angezeigt wird
  5. Dort wähle "UEFI-Firmware-Einstellungen" > Erweitert > ACPI-Einstellungen
  6. Setze "Enable Hibernation" auf "Disabled" (verhindert den Ruhezustand)
  7. Setze "ACPI Ruhezustand" auf "Suspend Disabled"
  8. Speichern, beenden und booten

Die Schritte 5-7 können auch über die Konsole aktiviert werden:

bash
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

INFO

Dieser Befehl kann verwendet werden, um zu prüfen, ob die Ruhezustände aktiviert sind. masked bedeutet, dass der Ruhezustand deaktiviert ist.

bash
systemctl is-enabled sleep.target suspend.target hibernate.target hybrid-sleep.target

Server Konfiguration ​

1. Repository klonen ​

bash
git clone https://github.com/timonrieger/homelab.git
cd homelab

2. Mise installieren ​

Installiere mise und richte das Projekt ein:

bash
mise run setup

3. Konfigurationsdateien vorbereiten ​

bash
# Alle Beispieldateien zu Konfigurationsdateien kopieren
find . -name "*.example" -type f | while read example_file; do
  config_file="${example_file%.example}"
  cp "$example_file" "$config_file"
done

Passe alle REPLACE-ME Platzhalter in den kopierten Dateien mit den richtigen Werten an.

4. Datenträger-UUIDs eintragen ​

UUIDs der Datenträger auf dem Server ermitteln:

bash
sudo blkid

Und in setup-server.yaml eintragen:

yaml
hdd_primary_uuid: <uuid-primaere-hdd>
hdd_secondary_uuid: <uuid-sekundaere-hdd>

Daraus entsteht die Speicherstruktur.

5. Cloudflare Tunnel vorbereiten ​

Die Credentials bekommst beim Erstellen eines neuen Tunnels im Cloudflare Zero Trust Dashboard. Lege die Credentials JSON Datei als cloudflare.credentials.json ab.

TunnelID muss mit tunnel: in cloudflare.config.yml und mit cloudflared_tunnel_id in setup-server.yaml übereinstimmen.

6. Tailscale einrichten ​

Richte Tailscale auf dem Server ein, sodass du über Tailscale SSH auf den Server zugreifen kannst.

7. Inventory konfigurieren ​

Passe die inventory.ini Datei mit deinem eingerichteten Benutzernamen an:

ini
[beelink]
beelink ansible_user=<dein-username>

8. Verbindung testen ​

bash
mise run ping

9. Server einrichten ​

bash
mise run setup-server

10. Backups konfigurieren ​

bash
mise run setup-backups

11. Berechtigungen einrichten ​

bash
mise run setup-permissions

Mehr Details: Zugriffskontrolle

12. Docker-Netzwerk anlegen ​

bash
mise run setup-networks

13. Container starten ​

bash
mise run restart-containers

14. Samba-Passwörter setzen ​

bash
sudo smbpasswd -a <username>

Mehr Details: Samba Setup