Raspi neu aufsetzten

Grundinstallation

Mit dem Raspberry Pi Imager das Raspberry Pi OS Lite (hier verwende ich die 64-bit-Version [Debian 12 – bookworm]) installieren.
Bei den erweiterten Einstellungen hostname festlegen, ssh mit public-key aktivieren sowie Spracheinstellungen festlegen…

  • Raspi booten, das dauert dann erstmal ein bisschen.
  • .bash_aliases anpassen
  • nano configurieren in .config/nano/nanorc
  • staticIP-Adresse mit den NetworkManager festlegen

Watchdog einrichten

In der /boot/firmeware/config.txt den Hardware-Watchdog aktivieren:

dtparam=watchdog

Installation des Watchdog

sudo apt update
sudo apt install watchdog

In der Datei /etc/watchdog.conf folgende Zeilen aktivieren

watchdog-device = /dev/watchdog
watchdog-timeout = 15
log-dir = /var/log/watchdog
max-load-1 = 24

Der Raspi hat wohl als maximales timeout 15 Sekunden!
Anschließend der Service aktivieren und starten

sudo systemctl enable watchdog
sudo systemctl start watchdog
sudo systemctl status watchdog

Unattended-Upgrades einrichten

Original hier: www.elektronik-kompendium.de/sites/raspberry-pi/2002101.htm

sudo apt-get install unattended-upgrades
# Aktivieren/Deaktivieren:
sudo dpkg-reconfigure -plow unattended-upgrades

# genaue Config:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Schreibzugriff auf SD-Karte reduzieren

siehe Artikel dort…

Migration von Bootstrap 3 auf 5

Zentrale Dokumente für die Migration sind hier zu finden:

Der Text kommt von hier: https://nodebb.org/blog/nodebb-specific-bootstrap-3-to-5-migration-guide/

Grundsätzliches

  • pull-left changed to float-start
  • pull-right changed to float-end
  • text-right changed to text-end
  • img-responsive changed to img-fluid

Buttons

  • Vertically stacked buttons change from .btn-block to using display/spacer classes.
<div class="d-grid gap-2">
  <button class="btn btn-primary" type="button">Button</button>
  <button class="btn btn-primary" type="button">Button</button> 
</div>
  • btn-xs removed use btn-sm
  • btn-default removed use btn-outline-secondary

Grid/Breakpoints

  • col-xs-<n> changed to col-<n>
  • col-md-offset-<n> changed to offset-md-<n>

Display

  • inline-block changed to d-inline-block

Media Component

… has been removed completely, use flex display classes instead:

<div class="d-flex">
  <div class="flex-shrink-0">
    image
  </div>
  <div class="flex-grow-1 ms-3">
    text
  </div>
</div>

Navbar

  • navbar-toggle changed to navbar-toggler

Panels, Wells, and Jumbotrons

… have all been removed in favour of the “card” component.

To convert a panel into a card:

<div class=”card”>
  <div class=”card-header”>header</div>
  <div class=”card-body”>body</div>
  <div class=”card-footer”>footer</div>
</div>
  • <div class="well"> changed to <div class="card card-body text-bg-light">

Forms

  • <select class="form-control"> changed to <select class="form-select">
  • Add form-label class to labels
  • Add form-check-input to checkboxes. Sample checkbox with label:
<div class="”form-check”">
  <input class="”form-check-input”" type="”checkbox”" />
  <label class="”form-check-label”">a checkbox</label>
</div>
  • form-group, .form-row, or .form-inline are removed use spacing utilities
  • help-block changed to form-text

Dropdowns

  • data-toggle="dropdown" changed to data-bs-toggle="dropdown"
  • Add dropdown-item to dropdown list item <a class="dropdown-item">Item 1</a>
  • dropdown-menu-right changed to dropdown-menu-end
  • Divider changed to dropdown-divider

Collapse

  • data-toggle="collapse" changed to data-bs-toggle="collapse"
  • data-target=".classname" changed to data-bs-target=".classname"

Modals

  • data-dismiss="modal" changed to data-bs-dismiss="modal"

Responsive Breakpoints

Instead of using media queries using old Bootstrap 3 variables (e.g. @media (max-width: @screen-sm-max) { ... }), Bootstrap 5 introduces a new mixin for breakpoints.

Read more about it in Bootstrap 5’s article re: responsive breakpoints.

Lebenslauf

„Sie haben da eine Lücke im Lebenslauf“

„Ihr Konzern auch schauen sie mal da: Zwischen 1939 und 1945“

raspi – Medienserver

Grundinstallation

Mit dem Raspberry Pi Imager das Raspberry Pi OS Lite (hier verwende ich die 32-bit-Version mit Kernel 5.x [Debian 11 – bullseye]) installieren.
Bei den erweiterten Einstellungen hostname festlegen, ssh mit public-key aktivieren sowie Spracheinstellungen festlegen…

– Raspi booten, das dauert dann erstmal ein bisschen.
– staticIP-Adresse in /etc/dhcpcd.conf festlegen

sudo apt update && sudo apt upgrade

– reboot

Schreibzugriff auf SD-Karte reduzieren

siehe Artikel dort…

Kodi installieren

sudo apt install kodi
sudo apt install kodi-peripheral-joystick kodi-pvr-iptvsimple kodi-inputstream-adaptive kodi-inputstream-rtmp

Zum Suchen: apt-cache search kodi

Kodi automatisch starten

sudo nano /lib/systemd/system/kodi.service

mit folgendem Inhalt füllen:

[Unit]
Description = Kodi Media Center
After = remote-fs.target network-online.target
Wants = network-online.target

[Service]
User = pi
Group = pi
Type = simple
ExecStart = /usr/bin/kodi-standalone
Restart = on-abort
RestartSec = 5

[Install]
WantedBy = multi-user.target

Gesteuert werden kann das dann mit den üblichen start,stop,enable …

sudo systemctl status kodi
sudo systemctl start kodi
sudo systemctl enable kodi
sudo systemctl stop kodi

raspi Arthur

Da der Raspi im Dauerbetrieb laufen sollen einiges hiervon umgesetzt:
https://www.3dh.de/raspberry-pi-fit-fuer-dauerbetrieb-machen/
https://www.datenreise.de/raspberry-pi-stabiler-24-7-dauerbetrieb/

Schreibzugriff auf SD-Karte reduzieren

  • Log2Ram installieren
    (siehe hier: github.com/azlux/log2ram/) um die Zugriffe auf /var/log/ zu reduzieren.
    echo "deb [signed-by=/usr/share/keyrings/azlux-archive-keyring.gpg] http://packages.azlux.fr/debian/ bullseye main" | sudo tee /etc/apt/sources.list.d/azlux.list
    sudo wget -O /usr/share/keyrings/azlux-archive-keyring.gpg  https://azlux.fr/repo.gpg
    sudo apt update
    sudo apt install log2ram
  • tmp ins Ram legen
    sudo nano edit /etc/fstab
    # beim Eintrag für / (etx4) noatime hinzufügen
    tmpfs     /tmp      tmpfs   nosuid,nodev,noatime   0  0
    tmpfs     /var/tmp    tmpfs   nosuid,nodev,noatime   0  0
  • Swapping deaktivieren
    sudo dphys-swapfile swapoff
    sudo systemctl disable dphys-swapfile
    sudo apt-get purge dphys-swapfile

Watchdog installiert

Der auf dem Raspberry Pi verbaute BCM2708 von Broadcom verfügt standardmäßig bereits über einen Hardware-Watchdog, der das System im Problemfall neu starten kann. Um diesen zu nutzen, wird ein Kernelmodul und ein Daemon benötigt.

Funktionsweise:
Der Daemon teilt dem Watchdog in regelmäßigen Intervallen mit, dass das System funktioniert. Kommt es nun zu einem Problem und das System hängt sich auf, erhält der Watchdog keine Nachrichten mehr und setzt daraufhin das System zurück.

sudo apt-get install watchdog
sudo modprobe bcm2835_wdt
echo "bcm2835_wdt" | sudo tee -a /etc/modules

# config anpassen
sudo nano /etc/watchdog.conf
# Minimaleinstellung
watchdog-device        = /dev/watchdog
max-load-1             = 24

Unattended-Upgrades einrichten

Original hier: www.elektronik-kompendium.de/sites/raspberry-pi/2002101.htm

sudo apt-get install unattended-upgrades
# Aktivieren/Deaktivieren:
sudo dpkg-reconfigure -plow unattended-upgrades

# genaue Config:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Aktualisieren von .bashrc

alias up='sudo apt update && sudo apt upgrade'

static IPv6 für den pihole

Als Statische IPv6-IP-Adresse wird der Prefix ‚fd00::‘ verwendet, eine Local Unicast Adressen (LUA) [vgl hier: www.ipv6-portal.de/informationen/einfuehrung/adressbereiche.html]. Im hinteren Teil verwenden wir (zur Übersichtlichkeit bei den Statischen Adressen) die IPv4-Adressen (von 192.168.130.8 nehmen wir ‚::130:8‘).

cat < /etc/network/interfaces.d/ipv6
# IPv6
auto eth0
iface eth0 inet6 static
pre-up modprobe ipv6
address fd00::130:8
netmask 64
EOF

Nach dem Reboot des pihole muss die Adresse in die Fritzbox eingetragen werden (Heimnetz -> Netzwerk -> Netzwerkeinstellungen -> IP6-Einstellungen)
– aktiviere ULA-Präfix manuell festlegen: [fd00:: /64]
– aktiviere DNSv6-Server auch über Router Advertisement bekanntgeben (RFC 5006) [fd00::130:8]

Jetzt noch auf dem pihole die Config bearbeiten:

sudo nano /etc/pihole/setupVars.conf
# Eintragen:
IPV6_ADDRESS=fd00::130:8/64
AAAA_QUERY_ANALYSIS=yes

… und dafür sorgen dass die Änderungen übernommen werden

pihole -g

LXD-Container auf der Qnap

Installation

  1. In der Container Station auf Erstellen gehen
  2. Suchen Sie in der Suchleiste „ubuntu“ und klicke „Registerkarte LXD-Image-Server“.
  3. Wählen das Image aus der Liste, derzeit LTS-Support hat focal (20.04) und installiere
  4. Im Fenster „Container erstellen“ Namen eingeben und CPU- und Speicherressourcen zuweisen
  5. Netzwerkmodus auf Bridge stellen und „Adapter 2“ auswählen (statische IP erstellen wir später)
  6. Da die Option „Erweiterte Ordnerberechtigungen“ aktiviert ist, muss unter „Erweiterte Einstellungen/Gerät“ privilegierte Modus aktiviert werden!
  7. ggf. noch „Shared Folders“ und „Device“ erstellen
  8. Installieren …

Erstellen eines Benutzers in LXD-Containern

  1. Terminal mit „/bin/sh“ ausführen
  2. Benutzer mit adduser {Ihr_Benutzername} anlegen
  3. Sudo-Zugriff ermöglichen mit usermod -aG sudo {Ihr_Benutzername}
  4. Terminal schließen … fertig

statischen IP-Adresse und SSH

  1. In der Konsole Anmelden und sich mit sudo su zu root machen
  2. das obligatorischen apt-get update und apt-get upgrade
  3. Installiere Software apt-get install openssh-server nano
  4. Bearbeite nano /etc/netplan/10-lxd.yaml
    network:
      version: 2
      ethernets: 
        eth0:
          dhcp4: false
          addresses:
             - 192.168.130.20/23
          gateway4: 192.168.130.1
          nameservers:
            addresses: [192.168.130.1, 9.9.9.9]
  5. Befehl netplan apply ausführen

crontab mit Qnap

# 1) Nutzer Admin aktivieren
# 2) SSH-Login als Admin
vi /etc/config/crontab         # nano ist nicht installiert :-(
crontab /etc/config/crontab    # ausführen um cron bekannt zu geben dass es hier Änderungen gab
/etc/init.d/crond.sh restart   # Restart Cron
crontab -l                     # kann genutzt werden um den aktuellen Inhalt von crontab anzuzeigen

vi-Befehle:

i     - insert-Mode
[esc] - zurück aus dem insert-Mode
dd    - lösche aktuelle Zeile
:wq   - speichern und verlassen
:q!   - verlassen ohne zu speichern