letzte Anpassung 2024-August: Nuki-Hub 9, Adapter admin 7.0.22, javascript 8.7.6 und js-controller 6.0.9 aktualisiert | 2024-Juli: nodejs-lts-iron
Prolog überspringen (https://secure.jolichter.de/smf/index.php/topic,337.0.html#post_manjaroInhalt)
PrologDerzeit hört man viel über
ioBroker im Vergleich zu Home Assistant. Bezüglich Home Assistant kann ich nicht viel sagen, außer dass ioBroker dank seiner Blockly-Steuerungen in Kombination mit VIS, Datenpunkten und Alias mit Abstand meine Top-Features sind. Der Nachfolger von VIS, VIS2, ermöglicht außerdem Responsive Design. Dieses Feature würde ich in Home Assistant sehr vermissen, aber das ist natürlich rein meine persönliche Meinung.
Was den
Matter und Thread Hype betrifft, es klingt vielversprechend, aber für mich scheint es noch in der Beta-Phase zu sein. Einige Hersteller bieten Matter bereits mit Bridges dafür an, obwohl sie eigentlich nicht notwendig wären. Daher werde ich bei WLAN-Geräten und Z-Wave-Geräten bleiben, insbesondere bei batteriebetriebenen Geräten. Dies entspricht im Prinzip Thread, allerdings verwendet Z-Wave für den Heimbereich die vorteilhaftere Frequenz von 868 MHz (EU) und zeichnet sich durch eine besonders hohe Energieeffizienz aus, die sogar geringeren Stromverbrauch als ZigBee-Geräte aufweist, was es besonders für batteriebetriebene Geräte geeignet macht.
Sowohl das
Nuki Smart Lock 2/3 als auch das 4, sei es die Pro-Version oder die Standardvariante, integrieren sich nahtlos mit einem
Nuki-Hub (https://github.com/technyon/nuki_hub) über einem
ESP32 in dein eigenes Netzwerk mittels
MQTT. Dadurch ist keine externe Cloud-Anbindung erforderlich. Matter oder WLAN ist daher nicht erforderlich, zudem hatte die WLAN Version bei mir den Stromverbrauch des Nukis drastich erhöht und deren MQTT wollte immer nach Hause telefonieren, obwohl MQTT KEIN Internet benötigt.
Hinweis zu Access Points wie dem FRITZ!Repeater: Diese führen alle 12 Stunden eine WPA3-Verschlüsselungsaktualisierung durch, um die WLAN-Sicherheit zu verbessern (AVM Wissensdokument #3570 (https://avm.de/service/wissensdatenbank/dok/FRITZ-Repeater-3000-AX/3570_FRITZ-Repeater-meldet-alle-12-Stunden-WLAN-Gerat-wird-turnusmassig-neu-angemeldet/)). Andere AP's könnten ebenfalls eine ähnliche Funktion haben. Dadurch kann es kurzzeitig zu Unterbrechungen kommen. Der ESP32 mit Nuki-Hub stellt die Verbindung jedoch automatisch und schnell wieder her (Restart on disconnect), ohne dass bisher Probleme aufgetreten sind. In Tests konnte ich den ESP32 auch direkt mit der FRITZ!Box verbinden, wodurch der Nuki-Hub ohne Neustarts verbunden bleibt (siehe Restart reason ESP). Getestet mit ESP32 StampS3 (https://docs.m5stack.com/en/core/StampS3) per Nuki-Hub 8.35 und 9.00.
Ich verstehe nicht, warum manche ioBroker auf Windows PCs (mein Beileid) oder Macs installieren möchten. Für einen stabilen Dauerbetrieb (24/7) ist ein
headless Server unerlässlich. Er garantiert höhere Stabilität und Effizienz, da keine grafische Oberfläche Systemressourcen beansprucht. Deshalb sollte für optimalen Betrieb von ioBroker auf spezialisierte Serverlösungen zurückgegriffen werden.
Für ein stets aktuelles und sicheres SmartHome-System ist es wichtig, das
Betriebssystem regelmäßig zu aktualisieren. Bei Diensten wie ioBroker, die auf Debian basieren, empfiehlt es sich, alle 2-4 Jahre ein Update des LTS Debian-Systems durchzuführen. Dies kann entweder durch eine komplette Neuinstallation oder durch den Wechsel zu einem Rolling-Release-Betriebssystem wie Manjaro, welches ich derzeit teste, erfolgen. Die regelmäßige Aktualisierung ist nicht nur für die Sicherheit essenziell, sondern auch für die Funktionsfähigkeit der SmartHome-Geräte.
SmartHome-Gadgets können zwar Spaß machen und potenziell zur Energieeinsparung beitragen, wie zum Beispiel durch Funk Heizkörperregler, aber sie
können konventionelle Technik, die jahrzehntelang ohne Batteriewechsel und Updates funktioniert, nicht vollständig ersetzen. Zudem besteht das Risiko, dass Produkte minderer Qualität nach einigen Jahren ausfallen und durch inkompatible Nachfolgemodelle ersetzt werden müssen. Daher sollte stets die Frage nach der Sicherheit und der Zuverlässigkeit ohne SmartHome-Funktionen gestellt werden.
Unabhängig vom verwendeten SmartHome-System sind regelmäßige Updates, idealerweise monatlich oder mindestens nach 6 Monaten, unerlässlich. Bei Debian ist spätestens nach fünf Jahren ein Wechsel des LTS-Release erforderlich. Wer diese Aktualisierungen vernachlässigt, handelt grob fahrlässig. Der Grundsatz 'Never change a running system' ist in diesem Kontext nicht anwendbar.
Debian veröffentlicht seine Stable-Releases regelmäßig und bietet nach der Veröffentlichung drei Jahre vollständige Unterstützung, gefolgt von zwei weiteren Jahren LTS-Unterstützung. Derzeit ist das Debian 12 Bookworm (Oktober 2023) und ich nutze Debian 11 Bullseye mit ioBroker (https://secure.jolichter.de/smf/index.php/topic,320.0.html), was noch ca. 2 Jahre mit Sicherheitsupdates versorgt werden soll. Ehrlich gesagt, habe ich wenig Lust, zum dritten Mal ein Betriebssystem-Upgrade durchzuführen. Aus diesem Grund betreibe ich ioBroker auf einem zweiten Raspberry Pi 4 (Architektur: ARMv8 Cortex-A72) mit 8 GB RAM. Die Installation erfolgt unter Linux Manjaro in der ARM-Minimal-Version 64bit für Raspberry, speziell in der Headless-Variante ohne grafische Benutzeroberfläche (GUI). Als Speichermedium verwende ich eine externe SSD. Dieses Setup ermöglicht es mir, vom Rolling-Release-Prinzip zu profitieren, wodurch ich kontinuierlich volle Unterstützung sowie aktuelle Kernel und Pakete erhalte.
Ich möchte betonen, dass Debian als LTS ein äußerst solides und stabiles System ist. Bitte nehmt meinen Thread daher nicht falsch auf. Manjaro-ARM ist ebenfalls ein sehr solides und stabiles System, jedoch muss dieses in der Regel nur einmal installiert werden. Es ist wichtig zu beachten, dass ioBroker Manjaro nicht unterstützt. Wenn dies ein Problem darstellt, sollte man auf jeden Fall bei Debian bleiben.Warum den Raspberry Pi 4 anstelle des Pi 5 wählen? Der Raspberry Pi 4 ist für einen "normalen" ioBroker Betrieb völlig ausreichend, selbst wenn du zusätzlich Pi-hole installierst und ihn als Fileserver nutzt. Du kannst ihn auch ohne Lüfter mit einem großem passiven Kühlkörper betreiben und dennoch eine gute Leistung bei unter 40 Grad Celsius CPU-Temperatur im Normalbetrieb erzielen. ioBroker mit einem Z-Wave Modul RaZberry7 und externer SDD T5 benötigt im normalen Betrieb bei mir unter 1 Ampere, und kurz 1,5 - 2,0 Ampere bei Schreibvorgängen oder höher CPU Last. Der Pi 5 hingegen verbraucht mehr Strom und sollte mit einem Lüfter betrieben werden. Ein leistungsstärkerer PC als der Pi 4 würde nur Sinn machen, wenn du mehr als nur ioBroker installieren möchtest, wie zum Beispiel NextCloud, Livestreaming oder kleinen Matrix Server.
Wer bereits Erfahrungen mit einer solchen Umsetzung hat oder ebenfalls Interesse an diesem Vorhaben zeigt, ist herzlich eingeladen, sich hier zu melden und seine Gedanken oder Tipps zu teilen. Ich freue mich auf einen regen Austausch via Matrix(https://secure.jolichter.de/smf/tutorials/rpiManjaro-ioB/symbol_240x240.jpg)
Ein offizielles Installations-Skript für ioBroker auf Linux Manjaro gibt es leider nicht. Dennoch möchte ich in diesem Blog meine experimentelle Anleitung teilen, in der ich beschreibe, wie ich ioBroker mithilfe des Debian Installations-Skript (https://www.iobroker.net/#de/documentation/install/linux.md) oder auch manuell erfolgreich auf Manjaro installiert habe. Obwohl das Skript offiziell nur für Debian unterstützt wird, kann es auch unter Manjaro genutzt werden – allerdings sind einige manuelle Anpassungen erforderlich.
Bitte beachte, dass diese Methode nicht für den produktiven Einsatz empfohlen wird. Ich selbst habe Manjaro erst eingesetzt, nachdem ich ausführliche Tests durchgeführt hatte.(https://secure.jolichter.de/smf/tutorials/rpiManjaro-ioB/Pi4_ioBroker_Pi-hole.jpg)
Versuchsaufbau: Raspberry Pi 4 lüfterlos, der mit Manjaro-ARM (headless) installiert ist und zusätzlich Pi-hole mit Unbound (https://secure.jolichter.de/smf/index.php/topic,338.0.html), sowie ioBroker mit einem Z-Wave-Modul betreibt, angeschlossen an einer 12-Volt USV.
INHALT
- Manjaro ARM auf Raspberry Pi 4 installieren (https://secure.jolichter.de/smf/index.php/topic,337.0.html#post_manjaroARM)
- Manjaro ARM optimieren (https://secure.jolichter.de/smf/index.php/topic,337.0.html#post_manjaroOptimize)
- Node.js installieren oder updaten (https://secure.jolichter.de/smf/index.php/topic,337.0.html#post_nodeJS)
- ioBroker installieren (https://secure.jolichter.de/smf/index.php/topic,337.0.html#post_ioB)
- Problemlösungen (https://secure.jolichter.de/smf/index.php/topic,337.0.html#post_Solutions)
- System Updates (https://secure.jolichter.de/smf/index.php/topic,337.0.html#post_Updates)
1. Manjaro ARM auf einem Raspberry Pi 4 installieren
Hier beschreibe ich meine Methode, Manjaro ARM auf einem Raspberry Pi 4 mit einer SSD unter Verwendung eines Linux Manjaro-Systems zu installieren. Lade zuerst die Manjaro-ARM-minimal-rpi4-Datei von manjaro.org/download (https://manjaro.org/download/) herunter. Im September 2023 war das die Version 23.02:
Choose Architecture: ARM -> DEVICE OPTIONS: "RASPBERRY PI 4B ..." -> Minimal -> Manjaro-ARM-minimal-rpi4-23.02.img.xz (ca. 430 MB)
Wichtig: Die Headless-Einrichtung über SSH ist nur mit dem Minimal-Image verfügbar.
Nach dem Herunterladen entpacke die Datei. Du erhältst dann die Datei "Manjaro-ARM-minimal-rpi4-23.02.img" (ungefähr 3 GB). Anschließend musst du dieses Image auf eine SD-Karte flashen. Dieser Prozess ist vergleichbar mit dem Flashen anderer Systeme, beispielsweise unter Verwendung von Tools wie Unetbootin oder SUSE Studio Imagewriter.
Ich habe das Image "Manjaro-ARM-minimal-rpi4-23.02.img" auf eine Samsung SSD T5 geschrieben, indem ich den SUSE Studio Imagewriter verwendet habe. Die Ethernet-Verbindung (LAN) in einem DHCP-Netzwerk funktioniert direkt und ist der beste Weg, um einen Internetzugang zu erhalten. Starte den Raspberry Pi mit dem angeschlossenen LAN-Kabel. Nach einigen Sekunden ist der Systemstart abgeschlossen.
Um die IP-Adresse deines Raspberry Pi in deinem lokalen Netzwerk zu finden, kannst du entweder in deinem Router nachsehen oder den Befehl
arp-scan --localauf einem Linux-Computer ausführen. Im Router habe ich diesem Netzwerkgerät immer die gleiche IPv4-Adresse zugewiesen.
Sobald du das Gerät gefunden hast, verwende SSH im Terminal, um eine Verbindung zum Raspberry Pi herzustellen:
ssh root@192.168.x.yBeim ersten Login wird ein neuer SHA256 Fingerprint erstellt, dann erscheint ein Assistent um die Manjaro ARM Installation abzuschließen, Beispiel:
Finish Manjaro ARM Install
- Choose your keyboard layout: de
- Enter disired username: pi4m
- Enter additionale groups: keine weiteren (default ist vorerst ausreichend)
- Enter disired Full Name: Manjaro
- Enter new Password: xxxxxxxxxxxx
- Enter new Root Password: xxxxxxxxxxxxxxxxxxx -> ja, es ist ein Root-Benutzer vorhanden (su)
- Choose you timezone: Europe/Berlin
- Choose your locale: de_DE.UTF-8
- Choose desired hostname: manjaro-arm
Versucht, keinen Punkt auszulasssen, denn jedes Mal, wenn die Angabe falsch ist, beginnt der Assistent wieder von vorne, was möglicherweise frustrierend sein kann.
Schließlich gibt der Assistent eine Bestätigungsliste aus. Überprüft, ob alles korrekt ist. Die Grundkonfiguration dauert nur wenige Sekunden. Danach wird das System die Größe der SSD anpassen und einen Neustart durchführen. Nach dem Neustart ist das System bereit und mit den von dir vorgenommenen Einstellungen einsatzbereit.
Mit dem von dir gewählten Benutzernamen und SSH kannst du dich nun anmelden und das System aktualisieren.
ssh pi4m@192.168.x.yBeim ersten Aktualisieren kannst du die Spiegelserver (Mirrors) für Pacman auf Server in Deutschland, Frankreich und Österreich beschränken, alles aktualisieren und nur die zwei neuesten Versionen jedes Pakets im Cache behalten. Hier ist der Befehl:
sudo pacman-mirrors --country Germany,France,Austria && sudo pacman -Syyuu && sudo paccache -rk2Wenn du aufgefordert wirst, "rpi-eeprom durch extra/rpi4-eeprom ersetzen? [J/n]" und du ein Raspberry Pi 4 verwendest, dann ist es in der Regel eine gute Idee, diese Frage mit "J" (default) für Ja zu beantworten und das rpi-eeprom-Paket durch das rpi4-eeprom-Paket zu ersetzen.
Bei "raspberrypi-utils und raspberrypi-userland-aarch64-git stehen miteinander in Konflikt (raspberrypi-firmware). raspberrypi-userland-aarch64-git entfernen? [j/N]" habe ich mit "J" beantwortet.
Für zukünftige Aktualisierungen:sudo pacman -Syyuu && sudo paccache -rk2Der Befehl aktualisiert auch das linux-rpi4-Paket auf deinem Manjaro ARM-System und kann damit den Kernel auf eine neuere Version anheben, wenn eine solche in den Repositories verfügbar ist. Die Version eines Kernel-Pakets kann mit 'pacman -Si linux-rpi4' überprüft werden.Diese Befehle aktualisieren dein System und behalten nur die zwei neuesten Versionen jedes Pakets im Cache, um Speicherplatz zu sparen. Verwaiste Pakete entfernen:
sudo pacman -Rsn $(pacman -Qdtq)Optional alle Pakete im Pacman Cache vollständig entfernen:
sudo pacman -SccInstalliere die folgenden Pakete, falls sie auf deinem System noch nicht vorhanden sind, z.B.um das Build-Umfeld und zusätzliche Tools bereitzustellen:
sudo pacman -S --needed acl avahi base-devel cairo cmake curl gcc giflib git htop iftop libcap libjpeg-turbo librsvg lm_sensors make neofetch net-tools pam pango pkgconf systemd-libs unzip sqlite cifs-utils nfs-utils rsync polkit distro-info hdparmVersion prüfen:
lsb_release -aZitatLSB Version: n/a
Distributor ID: Manjaro-ARM
Description: Manjaro ARM Linux
Release: 23.02
Codename: n/a
oder:
neofetch(https://secure.jolichter.de/smf/tutorials/rpiManjaro-ioB/screenshotNeofetch.png)
htop(https://secure.jolichter.de/smf/tutorials/rpiManjaro-ioB/screenshotHtop.jpg)
Den Raspberry Pi neu starten:
sudo rebootoder ausschalten:
sudo shutdown -h 0(seit systemd, kannst du auch einfach "poweroff" nutzen)
2. Manjaro ARM optimieren
Headless, prüfen, ob dein Manjaro-System im Headless-Modus (ohne grafische Benutzeroberfläche) betrieben wird:
systemctl get-defaultWenn das Ergebnis "graphical.target" liefert, bedeutet das, dass dein System standardmäßig in einer grafischen Umgebung (GUI) startet. Mit dem Befehl
sudo systemctl set-default multi-user.targetstellst du das System so ein, dass es im Headless-Modus startet, also ohne grafische Benutzeroberfläche (GUI). Dieser Modus eignet sich besonders für Server, da er weniger Ressourcen beansprucht, die sonst für die GUI benötigt würden. Ein weiterer Vorteil ist die erhöhte Stabilität, da weniger Komponenten vorhanden sind, die potenziell abstürzen oder Probleme verursachen könnten (zurück zur GUI: 'sudo systemctl set-default graphical.target').
Überprüfe, ob die Änderung erfolgreich war, indem du den folgenden Befehl ausführst:
systemctl get-defaultDieser Befehl sollte jetzt "multi-user.target" als Antwort geben. Starte das System neu:
sudo rebootIm Headless-Modus, lassen sich spezifische Funktionen, die vorrangig für grafische Ausgaben oder Audio relevant sind, deaktivieren, um Systemressourcen zu schonen. Entsprechend habe ich solche Funktionen sowie
WiFi und
BT, was ich nicht benötige, in den Einstellungen deaktiviert:
sudo nano /boot/config.txtZitat# gpu_mem=64
auto_initramfs=1
kernel=kernel8.img
arm_64bit=1
disable_overscan=1
# dtparam=krnbt=on
# disable sound
dtparam=audio=off
# hdmi_drive=2
# disable vc4
# dtoverlay=vc4-kms-v3d
# max_framebuffers=2
disable_splash=1
[all]
dtoverlay=disable-wifi
dtoverlay=disable-bt
Der Eintrag kernel=kernel8.img ist notwendig, um den 64-Bit-Kernel zu verwenden, der für den Pi4 oder Pi5 optimiert ist und die 64-Bit-Architektur vollständig unterstützt.
NTP, als Zeitserver nutze ich den von der Fritz!Box, z.B.:
sudo nano /etc/systemd/timesyncd.confZitatNTP=192.168.1.1
SSD, um die Lebensdauer deiner SSD zu verlängern, kannst du bei EXT4-Dateisystemen die Option "noatime" in die fstab-Datei einfügen. Ein Beispiel hierfür wäre:
sudo nano /etc/fstabZitat# <file system> <dir> <type> <options> <dump> <pass>
PARTUUID=d42a0555-01 /boot vfat defaults,noexec,nodev,showexec 0 0
PARTUUID=d42ba555-02 / ext4 defaults,noatime 0 1
Dieser Eintrag verhindert, dass das System bei jedem Lesezugriff die Zugriffszeit (atime) aktualisiert, was die Anzahl der Schreibvorgänge auf der SSD reduziert. Starte das System neu:
sudo rebootTMPFS, da Manjaro ARM auf systemd basiert und tmpfs zur Konfiguration von /tmp verwendet, entfällt die manuelle Einrichtung in der /etc/fstab-Datei. Du kannst dies kurz überprüfen, indem du
df -hausführst (tmpfs schont die SSD und erhöht die Geschwindigkeit).
TRIM, die Ausgabe des Befehls
sudo systemctl status fstrim.timerzeigt an, dass der TRIM-Timer aktiviert und eingerichtet ist. Der Timer ist so konfiguriert, dass er einmal pro Woche (standardmäßig) ausgeführt wird, um nicht mehr benötigte Blöcke auf der SSD freizugeben. Befehl um die SSD manuell zu trimmen:
sudo fstrim -avHinweis: Im Gegensatz zu meiner NVMe-SSD, die ich extern per Thunderbolt 3/4 mit einem ORICO NVMe-Gehäuse am PC nutze, unterstützen viele externe USB-Gehäuse leider nicht ohne weiteres TRIM (siehe udev-Regel). ext4 überschreibt Daten direkt, unabhängig davon, ob TRIM verfügbar ist. Dieses Verhalten hilft, die Leistung der SSD zu erhalten, insbesondere wenn TRIM nicht verfügbar ist. Btrfs hingegen nutzt Copy-On-Write, was ohne TRIM dazu führt, dass alte Datenblöcke weiterhin belegt bleiben. Dies fragmentiert die SSD und verschlechtert langfristig die Leistung – daher ist in diesem Fall ext4 die bessere Wahl.
TRIM für externe SSDs aktivieren (udev-Regel für TRIM-Passthrough)Falls eine externe SSD wie die Samsung T7 laut "lsblk --discard" kein TRIM unterstützt, kann dies oft am Controller des externen Gehäuses liegen. Wenn der Controller UASP (USB Attached SCSI Protocol) unterstützt und TRIM grundsätzlich möglich ist, lässt sich dies mit einer udev-Regel aktivieren.
Link: TRIM für externe SSDs aktivieren (udev-Regel für TRIM-Passthrough) (https://secure.jolichter.de/smf/index.php/topic,332.0.html).
LED (optional deaktivieren), auf einem Manjaro Arch-System mit systemd kannst du einen systemd-Service erstellen, um die rote LED (Power-LED = PWR) bei jedem Systemstart auszuschalten. Mit Root-Rechten (su) lässt sich die LED zwar mit dem Befehl "echo 0 > /sys/class/leds/PWR/brightness" ausschalten, jedoch wird sie nach einem Neustart des Systems wieder aktiviert. Um sicherzustellen, dass die rote LED bei jedem Systemstart deaktiviert wird, erstelle eine systemd-Service-Datei:
sudo nano /etc/systemd/system/disable-pwr-led.serviceFüge den Inhalt für den Service hinzu:
Zitat[Unit]
Description=Disable the PWR LED on Raspberry Pi
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo 0 > /sys/class/leds/PWR/brightness"
[Install]
WantedBy=multi-user.target
Speichere und schließe den Editor und aktiviere den Service:
sudo systemctl enable disable-pwr-led.serviceStarte den Service oder das System neu um zu testen, ob der Service funktioniert, kannst du ihn manuell starten oder einfach dein System neu starten. Um den Service zu starten, verwende:
sudo systemctl start disable-pwr-led.serviceOder starte dein System neu, um zu sehen, ob der Service beim Booten korrekt ausgeführt wird. Durch diesen systemd-Service wird sichergestellt, dass der Befehl zum Ausschalten der LED bei jedem Systemstart ausgeführt wird.
Bitte beachte, dass sich der Name für die LED in einem früheren Update geändert hat. Falls sich der Name in Zukunft wieder ändert, stell sicher, dass du den aktuellen Namen verwendest. Um die im System verfügbaren LEDs aufzulisten, verwende folgenden Befehl:
ls /sys/class/leds/ZitatACT default-on mmc0 mmc0:: PWR
Update des Raspberry Pi EEPROMsudo rpi-eeprom-update -aEs ist wichtig zu beachten, dass das Aktualisieren des EEPROMs ein kritisches Verfahren ist, da es die Firmware und Konfigurationseinstellungen ändern kann. Durch Hinzufügen der "-a" oder "--stable" Option wird sichergestellt, dass nur die stabile Version des EEPROMs heruntergeladen und aktualisiert wird, wenn eine solche verfügbar ist.
Protokolldaten von Pacman auslesensudo cat /var/log/pacman.logARL (Arch Rollback Machine) Fehlerprotokoll auslesensudo cat /var/log/pacman.log | grep "ARL"Prüfen ob systemd-Dienste fehlgeschlagen sindsystemctl --failedFehler Protokoll seit gesternjournalctl -p err --since yesterdayJournal Protokoll von - bisjournalctl --since "20:30:00" --until "20:42:00"Löschen aller Protokolldatensudo journalctl --rotate
sudo journalctl --vacuum-time=1sDer erste Befehl dreht die Protokoll-Dateien und erstellt neue. Der zweite Befehl löscht alle Protokolldaten, die älter als eine Sekunde sind. Du kannst die Zeitspanne nach Bedarf anpassen.
3. Node.js installieren (github.com/nodejs/release (https://github.com/nodejs/release))
2024-05-22: Ich habe das Update von Node.js 18.x auf 20.x (nodejs-lts-iron) problemlos durchgeführt.
Die Installation von ioBroker erfolgt in zwei Schritten, zuerst wird Node.js installiert, anschließend folgt die Installation von ioBroker selbst. Um auf einem Manjaro ARM-System eine bestimmte Version von Node.js, wie beispielsweise Version 18.x oder 20.x, zu installieren, wäre der Node Version Manager (NVM) eine praktische Wahl. Allerdings unterstützt ioBroker offiziell keine Verwendung von NVM. Daher entscheiden wir uns dafür, eine LTS-Version von Node.js aus den Manjaro-Paketquellen zu installieren.
Seit Mai 2024 empfiehlt ioBroker die LTS-Version von Node.js 20.x, die unter Manjaro als nodejs-lts-iron (https://archlinuxarm.org/packages/aarch64/nodejs-lts-iron) bekannt ist. Zum Zeitpunkt der ersten Beitragserstellung war Version 18 die aktuelle Version. Um Node.js 20.x zu installieren, kannst du den folgenden Befehl verwenden:
sudo pacman -S nodejs-lts-iron npm(V24: noch kein Codename vergeben, V22: nodejs-lts-jod (https://archlinuxarm.org/packages/aarch64/nodejs-lts-jod), V20: nodejs-lts-iron (https://archlinuxarm.org/packages/aarch64/nodejs-lts-iron), V18: nodejs-lts-hydrogen, V16: nodejs-lts-gallium, V14: nodejs-lts-fermium, V12: nodejs-lts-erbium)
Bei Bedarf kannst du folgenden Befehl verwenden, um Informationen über das installierte Paket zu erhalten:
pacman -Qi nodejs-lts-ironWenn du bereits Node.js (LTS-Iron) auf deinem System installiert hast und dann npm hinzufügst, sollte npm automatisch die richtige Version installieren (zumindest war das bei mir der Fall). Es ist jedoch nicht immer klar, wie Arch/Manjaro mit dieser Konfiguration umgeht, da sie nach den Node.js Previous Releases (https://nodejs.org/en/download/releases/) nicht immer kompatibel sind, insbesondere wenn eine LTS-Version verwendet wird. Nach mehr als acht Monaten kann ich sagen, dass es weder mit Version 18 noch mit Version 20 unter ioBroker Probleme gab.
Überprüfung, ob die richtigen Node.js- und npm-Versionen installiert sind sowie deren Pfade:
type -P nodejs node npm npx && nodejs -v && node -v && npm -v && npx -vAusgabe (Mai 2024):
Zitat/usr/bin/nodejs
/usr/bin/node
/usr/bin/npm
/usr/bin/npx
v20.11.1
v20.11.1
10.4.0
10.4.0
Falls in der Ausgabe 'Nodejs' fehlt, muss wahrscheinlich ein symbolischer Link (Symlink) erstellt werden (siehe unten Punkt 5).
HINWEIS Corepack (macht das nicht!)
Corepack ist ein Node.js-Tool zur Verwaltung unterschiedlicher Versionen von Paketmanagern. Bei meiner ersten Installation nutzte ich versehentlich npm aus Corepack. Wenn Corepack aktiv ist, stellt es eigene Shims (Wrapper-Skripte) für npm und npx bereit, die im Verzeichnis "/usr/lib/node_modules/corepack/shims/" zu finden sind. Corepack erstellt dafür einen symbolischen Link, der auf diese Shims verweist. Ich hatte Probleme, da mein ioBroker den npm-Pfad nicht finden konnte. Dieses Problem löste ich, indem ich den Pfad in der .bashrc für alle Benutzer ergänzte:
Zitat# Setze den PATH für npm
export PATH=/usr/lib/node_modules/corepack/shims:$PATH
Später konnte ich die Notwendigkeit dieses umständlichen Vorgehens nicht mehr nachvollziehen. Es funktioniert, war aber eindeutig nicht ideal und bei einem Update auf Node.js 20 habe ich die Pfadangabe in der .bashrc wieder entfernt und Corepack mit "corepack disable" deaktiviert.
Wenn du nodejs-lts-xxxx und npm über das Paketverwaltungssystem (pacman) installierst, sollten die Binaries (node, npm, npx) standardmäßig im Verzeichnis "/usr/bin" liegen, was sicherstellt, dass die Befehle systemweit verfügbar sind. Seit dem Update funktioniert dies problemlos, was durch den zuvor genannten Überprüfungsbefehl bestätigt wird.
UPDATE Node VersionUm beispielsweise von der LTS-Version Node.js 18.x auf Node.js 20.x zu aktualisieren, kannst du wie folgt vorgehen: Zuerst alle Updates durchführen, die alte Version deinstallieren, die neue Version installieren, die Versionsnummer überprüfen, dann sicherheitshalber ein "iob fix" ausführen und das System neu starten.
iob stop && iob update && iob upgrade self && iob upgrade
sudo pacman -Syyuu
sudo pacman -Rns nodejs-lts-hydrogen npm
sudo pacman -S nodejs-lts-iron npm
type -P nodejs node npm npx && nodejs -v && node -v && npm -v && npx -v
iob fix
sudo paccache -rk2
reboot
4. ioBroker installieren
Die Empfehlung, ioBroker nicht als root-Benutzer zu installieren, ist sehr wichtig, um Sicherheitsprobleme zu vermeiden! Das Ausführen der Installation muss als ein normaler User durchgeführt werden, durch diesen User wird auch das System zukünftig administriert. Der normale User sollte, nicht iobroker heißen, es sollte der bei der Basisinstallation, angelegte User sein. Der Hauptgrund für die Verwendung eines separaten Benutzers für ioBroker ist, dass dieser Benutzer eingeschränkte Rechte hat im Vergleich zum root-Benutzer oder deinem Hauptbenutzer. Dies verringert das Sicherheitsrisiko, falls es zu einem Einbruch in das System über ioBroker kommt.
Das Original-Installationsskript von ioBroker, setzt aktiv die Eigentümerschaft des ioBroker-Installationsverzeichnisses (/opt/iobroker) auf den Benutzer iobroker. Dies wird typischerweise mit dem Befehl "chown -R iobroker:iobroker /opt/iobroker" erreicht, um sicherzustellen, dass alle Dateien und Verzeichnisse korrekt dem iobroker-Benutzer zugewiesen sind.
Der effizienteste und schnellste Weg besteht darin, das Original-Installationsskript (Einzeiler) zur Installation von ioBroker zu verwenden. Sollte es unter Manjaro Probleme damit geben, kannst du ioBroker manuell installieren, wie ich im nächsten Thread (ioBroker manuell installieren, anstelle des Original-Installationsskripts) erläutern werde.
curl -sL https://iobroker.net/install.sh | bash -Die Meldungen wie 'sudo: apt-get: Befehl nicht gefunden' im ersten Abschnitt kannst du ignorieren (Installing prerequisites 1/4), da sie nur unter Debian funktionieren und in diesem Fall nicht relevant sind. Falls benötigte Pakete fehlen, können sie stattdessen mit 'pacman' installiert werden. Wir haben bereits alle wichtigen Pakete im ersten Abschnitt installiert.
Am Ende kannst den Service-Status überprüfen:
sudo systemctl status iobroker.service(Beenden mit "Q")Sollte dieser wider Erwarten nicht gestartet sein, starte den ioBroker-Service mit folgendem Befehl:
sudo systemctl start iobroker.serviceioBroker kann nun über die IP im Webbrowser aufgerufen werden http://<IP-Adresse>:8081 und eingerichtet werden:
(https://secure.jolichter.de/smf/tutorials/rpiManjaro-ioB/Screenshot_ioBroker_Welcome.jpg)
Optional, die Zugriffsrechte anpassen:
sudo chmod -v 755 /home/iobroker(von 0700 in 0755)
:bounce: :dance:
5. Solltest du Probleme mit ioBroker haben, könnte es hilfreich sein, diese Tools zu nutzen oder die Parameter zu überprüfen
Diese beiden ioBroker-Tools funktionieren auch unter Linux Manjaro-ARM. Die Fehlermeldungen am Anfang im "iob fix" entstehen aufgrund des speziell für Debian-Systeme entwickelten dpkg und können ignoriert werden, da wir die Pakete unter Manjaro manuell installiert haben.
Das Diagnoseskript von Thomas Braun für ioBroker dient dazu, benötigte Informationen in Threads im ioBroker-Forum strukturiert und kompakt zusammenzufassen. Das Skript liest nur Informationen und verändert nichts.
iob diagDer
ioBroker-Fixer überprüft und korrigiert Systemrechte sowie führt andere Aufgaben aus.
iob stop && iob fixAlternativ kannst du den ioBroker-Fixer auch aus dem Internet herunterladen und ausführen:
iob stop && curl -fsSL https://iobroker.net/fix.sh | bash -Wenn eine
Fritz!Box als NAS mit einer Firmware >= 7.21 verwendet wird, sollten in
ioBroker.backitup die SMB-Einstellungen auf "3.1.1" eingestellt und die Option "noserverino" aktiviert werden (Quelle: github.com/simatec/ioBroker.backitup/wiki/ioBroker.backitup-Wiki-Deutsch (https://github.com/simatec/ioBroker.backitup/wiki/ioBroker.backitup-Wiki-Deutsch))
############Der Befehl
systemctl status iobroker.service überprüft und zeigt den aktuellen Betriebsstatus des iobroker.service auf dem Linux-System an, das Systemd verwendet, z.B.:
sudo systemctl status iobroker.service
● iobroker.service - ioBroker Server
Loaded: loaded (/usr/lib/systemd/system/iobroker.service; enabled; preset: disabled)
Active: active (running) since Sun 2023-12-12 14:42:11 CET; 7h ago
Docs: http://iobroker.net
Main PID: 476 (iobroker.js-con)
Tasks: 185 (limit: 9279)
CPU: 2h 25min 24.513s
CGroup: /system.slice/iobroker.service
├─ 476 iobroker.js-controller
├─ 560 io.admin.0
├─ 648 io.javascript.0
├─ 733 io.email.0
├─ 849 io.ping.0
├─ 878 io.shelly.0
├─ 896 io.tr-064.0
├─ 927 io.info.0
├─ 998 io.zwave2.0
├─1097 io.fullybrowser.0
├─1252 io.simple-api.0
├─1580 io.web.0
├─1591 io.yahka.0
└─3790 io.backitup.0
(Beenden mit "Q")############Einige alte Skripte rufen
nodejs anstelle von node auf. Da Node.js standardmäßig unter dem Namen node installiert wird, kannst du einen symbolischen Link (Symlink) erstellen, um diese Kompatibilitätsprobleme zu lösen.
a) Überprüfen, ob /usr/bin/nodejs existiert:
ls -l /usr/bin/nodejsb) Erstellen eines Symlinks (falls /usr/bin/nodejs nicht existiert):
sudo ln -s /usr/bin/node /usr/bin/nodejsDieser Befehl erstellt einen Symlink nodejs, der auf die node-Anwendung verweist. Damit wird jeder Aufruf von nodejs an node weitergeleitet. Test:
nodejs -v############Wichtig: Es kann zu Konflikten kommen, wenn mehrere Netzwerkdienste wie
systemd-networkd und
dhcpcd gleichzeitig aktiv sind. Grundsätzlich sollte nur ein Netzwerkdienst aktiv sein, um sicherzustellen, dass die Netzwerkkonfiguration nicht von mehreren Diensten gleichzeitig bearbeitet wird. Dies verhindert unvorhersehbare Probleme, wie Verbindungsverlust oder falsche Routen.
Prüfen, welche Netzwerkdienste aktiv sind:
sudo systemctl list-units --type=service | grep -E "network|dhcp"Oder prüfe die Dienste einzeln:
sudo systemctl status systemd-networkd
sudo systemctl status dhcpcdWenn beide Dienste laufen, solltest du einen deaktivieren. Für moderne, systemd-basierte Systeme ist systemd-networkd die schlankere und besser integrierte Wahl, daher habe ich dhcpcd deaktiviert:
sudo systemctl stop dhcpcd
sudo systemctl disable dhcpcd
sudo systemctl status dhcpcd
System neu starten
sudo rebootNach der Deaktivierung von dhcpcd sollte nur noch systemd-networkd aktiv sein. Dies verhindert Konflikte und sorgt für eine stabile Netzwerkkonfiguration.
############Optional:
Watchdog aktivierenÜberprüfen, ob der Hardware-Watchdog verfügbar ist:
journalctl -b | grep -i watchdogWenn du eine Meldung wie Using hardware watchdog siehst, ist der Watchdog-Timer verfügbar.
Konfiguration anpassen:
sudo nano /etc/systemd/system.confFüge oder ändere folgende Zeilen:
ZitatRuntimeWatchdogSec=5min
ShutdownWatchdogSec=2min
Hinweis: Die Werte können je nach Bedarf angepasst werden. Ein sinnvoller Bereich liegt zwischen 10 Sekunden (z. B. für Systeme mit schnellen Reaktionen auf Probleme) und 5 Minuten (für Systeme mit stabileren oder weniger kritischen Prozessen). Mit den oben genannten Werten (5 Minuten für Runtime und 2 Minuten für Shutdown) bist du gut abgesichert für typische Szenarien.
Speichere die Datei, schließe den Editor und starte das System neu:
sudo rebootÜberprüfen, ob der Watchdog aktiv ist:
journalctl -b | grep -i watchdogDu solltest eine Meldung wie Watchdog running with a hardware timeout of 5min sehen.
############Sentry dient der Fehleranalyse, indem es Echtzeit-Fehlerberichte bereitstellt und so Entwicklern hilft, Probleme in ihren Anwendungen zu erkennen und zu beheben. Das Reporting kannst du global deaktiviert werden:
iobroker plugin disable sentry
iobroker restartMit "iobroker plugin enable sentry" kann es wieder aktiviert werden. Bei den Instanzen sieht man mit aktiviertem Expertenmodus auch das Symbol, um Sentry pro Instanz ein- oder auszuschalten.
6. System Updates
Manjaro ARM hat eigene Repositories, die nicht immer synchron mit denen von Arch Linux ARM sind. Beispielsweise sehe ich, dass die Node.js- und npm-Versionen unter Manjaro ARM eine Verzögerung bei der Aktualisierung im Vergleich zum Arch Linux ARM Repository haben. Updates erscheinen hier etwa alle zwei Monate. Für mich läuft alles sehr stabil, und ich benötige nicht immer die neueste Version. Wichtig ist mir ein stabiles Rolling-Release-Betriebssystem als Server.
Die Stable-Updates von Manjaro ARM erfolgen moderat und werden laut forum.manjaro.org (https://forum.manjaro.org/c/arm/stable-updates/79) ungefähr alle 2 Monate veröffentlicht. Wenn du AUR-Quellen (Arch User Repository) verwendest, die von der Community gepflegt werden, ist es wichtig, diese regelmäßig zu überprüfen. Idealerweise solltest du deine Paketlisten mindestens alle 6 Monate, vorzugsweise jedoch monatlich, aktualisieren. Um in Manjaro zwischen den Repositories "stable", "testing" oder "unstable" zu wechseln, kannst du die Konfiguration der Paketquelle ändern und anschließend die Paketdatenbank aktualisieren (Link (https://secure.jolichter.de/smf/index.php/topic,344.0.html)).
Um sowohl das gesamte System (Manjaro) als auch ioBroker in einer einzigen Zeile zu aktualisieren und deinen Raspberry Pi anschließend neu zu starten, führe diesen Befehl aus. Stelle sicher, dass du über vorhandene Backups verfügst.
iob stop && iob update && iob upgrade self && iob upgrade && sudo pacman -Syyuu && sudo paccache -rk2Nach erfolgreichen Abschluss der Aktualisierung und Kernel Update, ist ein Neustart des Raspberry Pi wichtig:
rebootDarüber hinaus kannst du dein Manjaro-System aufräumen, um nicht mehr benötigte Pakete zu entfernen, indem du die folgenden Befehle ausführst:
sudo pacman -Rsn $(pacman -Qdtq)
sudo pacman -SccLinux-Systemverwaltung: Prüfe mit
df -h die Festplattenbelegung, den LAN-Datentransfer in Echtzeit mit
sudo iftop und mit
htop (Systemmonitoring-Tool) die Informationen zur Systemauslastung, zur Prozessverwaltung und zur Ressourcennutzung auf einem Linux-System.
(https://secure.jolichter.de/smf/tutorials/rpiManjaro-ioB/screenshotHtop_ioBroker.jpg)
ioBroker-Logs in Echtzeit anzeigen:iob logs --watch(Beenden mit STRG+C)
Überprüfung der Spannungswarnung auf einem Raspberry Pi:vcgencmd get_throttledAusgabe interpretieren: "throttled=0x0" bedeutet, alles ist in Ordnung, während andere Werte, z. B. "0x50000", auf eine erkannte Unterspannung hinweisen (siehe auch das mein Script "Linux Pi-System Monitor": Check Voltage!). Wenn Unterspannung erkannt wird, liegt oft ein schwaches Netzteil oder ein zu langes/zu dünnes Kabel vor. Systemlog nach Hinweisen auf Spannungsprobleme suchen:
dmesg | grep -i voltageBei Problemen: Rückkehr zu einer vorherigen Version (z.B. js-controller 6.0.11)Ins ioBroker-Verzeichnis wechseln:
cd /opt/iobrokerDas ist wichtig, damit npm weiß, wo es den Adapter installieren soll!
ioBroker vor Installation oder Aktualisierung des js-Controllers stoppen, um Prozesskonflikte zu vermeiden:
iobroker stopjs-controller auf Version 6.0.11 installieren:
npm install iobroker.js-controller@6.0.11 --omit=devInstallierte Version überprüfen:
iobroker -vFix-Skript zur Sicherheit ausführen:
curl -fsSL https://iobroker.net/fix.sh | bash -ioBroker neu starten:
iobroker start
Quellen:
- www.iobroker.net/#de/documentation (https://www.iobroker.net/#de/documentation/)
- github.com/ioBroker (https://github.com/ioBroker)
- Wiki-Manjaro-ARM (https://wiki.manjaro.org/index.php/Manjaro-ARM)
- Branch compare for Manjaro -> nodejs-lts (https://manjaristas.org/branch_compare?q=nodejs-lts&arm=on)
ioBroker manuell installieren, anstelle des Original-InstallationsskriptsFalls du unter Manjaro-ARM unerwarteterweise Probleme mit dem Original-Installationsskript haben solltest (Punkt 4), kannst du alternativ diesen Installationsweg wählen.
a) Benutzer "iobroker" erstellenÜberprüfe, ob der Benutzer iobroker existiert und erstelle ihn, falls nicht:
id iobroker &>/dev/null || sudo useradd -m -s /usr/sbin/nologin iobrokerHinweis: Dieser Befehl erstellt einen Benutzer namens `iobroker` mit einem Home-Verzeichnis, aber ohne eine Login-Shell, was bedeutet, dass er sich nicht direkt anmelden kann. Prüfen mit:
id iobrokerOptional, die Zugriffsrechte anpassen:
sudo chmod -v 755 /home/iobroker(von 0700 in 0755)
Benutzer zur "iobroker"-Gruppe hinzufügen,um auf die ioBroker-Verzeichnisse zugreifen zu können:
sudo usermod -a -G iobroker $USERPrüfen mit:
id $USERb) Installiere ioBrokerDas Original-Debian-Installationsskript von ioBroker setzt aktiv die Eigentümerschaft des ioBroker-Installationsverzeichnisses (/opt/iobroker) auf den Benutzer iobroker. Dies wird typischerweise mit dem Befehl "chown -R iobroker:iobroker /opt/iobroker" erreicht, um sicherzustellen, dass alle Dateien und Verzeichnisse korrekt dem iobroker-Benutzer zugewiesen sind.
In meinem alternativen Installationsansatz verwende ich eine temporäre Bash-Shell-Sitzung, die unter dem Benutzer iobroker läuft, um die Installationsbefehle auszuführen. Dadurch werden die Dateien von Beginn an unter dem korrekten Benutzer erstellt, was die nachträgliche Anpassung der Eigentümerschaft überflüssig macht. Installiere die Adapter nacheinander, um mögliche Probleme während der Installation leichter zu bewerkstelligen.
Wichtig: Nach erfolgreicher Installation von ioBroker sollten Befehle wie "npm install iobroker.zwave2", "iob stop", "iob fix" oder "reboot" ohne die Verwendung von sudo ausgeführt werden.Installiere den ioBroker.js-Controller:
sudo su -s /bin/bash -c "cd /opt/iobroker && npm install iobroker.js-controller@stable --unsafe-perm --no-audit" iobroker
Admin-Adapter installieren:
sudo -u iobroker bash -c "cd /opt/iobroker && npm install iobroker.admin@stable --unsafe-perm --no-audit"(ja, diese kürzere Syntax funktioniert auch)Web-Adapter installieren:
sudo -u iobroker bash -c "cd /opt/iobroker && npm install iobroker.web@stable --unsafe-perm --no-audit"Backitup-Adapter installieren:
sudo -u iobroker bash -c "cd /opt/iobroker && npm install iobroker.backitup@stable --unsafe-perm --no-audit"Discovery-Adapter installieren (nutze ich nicht):
sudo -u iobroker bash -c "cd /opt/iobroker && npm install iobroker.discovery@stable --unsafe-perm --no-audit"Um ioBroker zu starten, kannst du den folgenden Befehl verwenden:
sudo -u iobroker /opt/iobroker/iobroker startErsteinrichtung von ioBroker durchzuführen:
sudo -u iobroker /opt/iobroker/iobroker setup firstStatus des ioBroker-Controllers:
sudo -u iobroker /opt/iobroker/iobroker statusioBroker Upgrade:
sudo -u iobroker /opt/iobroker/iobroker stop
sudo -u iobroker /opt/iobroker/iobroker update
sudo -u iobroker /opt/iobroker/iobroker upgrade self
sudo -u iobroker /opt/iobroker/iobroker upgrade
sudo -u iobroker /opt/iobroker/iobroker startc) Systemstart ioBrokerUm ioBroker auf Manjaro so zu konfigurieren, dass es beim Systemstart automatisch startet, musst du einen systemd-Service manuell einrichten.
Service-Datei erstellen:
sudo nano /usr/lib/systemd/system/iobroker.serviceInhalt der Service-Datei:
Zitat[Unit]
Description=ioBroker Server
Documentation=http://iobroker.net
After=network.target redis.service influxdb.service mysql-server.service mariadb-server.service
Wants=redis.service influxdb.service mysql-server.service mariadb-server.service
[Service]
Type=simple
User=iobroker
Environment="NODE=$(which node)"
ExecStart=/usr/bin/bash -c '${NODE} /opt/iobroker/node_modules/iobroker.js-controller/controller.js'
Restart=on-failure
RestartSec=3s
[Install]
WantedBy=multi-user.target
Wichtig: Passe den 'ExecStart'-Pfad an deine Node.js-Installation an.
Berechtigungen setzen und Service aktivieren:
sudo chmod 644 /usr/lib/systemd/system/iobroker.service
sudo systemctl daemon-reload
sudo systemctl enable iobroker.service
Hinweis: Wenn du Änderungen an der Konfiguration vornehmen musst, kannst du die Service-Datei bearbeiten und danach "sudo systemctl daemon-reload" und "sudo systemctl restart iobroker.service" ausführen, um die Änderungen anzuwenden.
Erstelle den symbolischen Link:
sudo ln -s /usr/lib/systemd/system/iobroker.service /etc/systemd/system/multi-user.target.wants/iobroker.serviceÜberprüfe den Link:
ls -l /etc/systemd/system/multi-user.target.wants/iobroker.service
Starte den ioBroker-Dienst:
sudo systemctl start iobroker.serviceService-Status überprüfen:
sudo systemctl status iobroker.service(Beenden mit "Q")Nachdem du diese Schritte abgeschlossen hast, sollte ioBroker automatisch starten, wenn dein System hochfährt. Wenn du Änderungen an der Konfiguration vornehmen musst, kannst du die Service-Datei bearbeiten und danach "sudo systemctl daemon-reload" und "sudo systemctl restart iobroker.service" ausführen, um die Änderungen anzuwenden.
d) Überprüfe oder passe die Sudo-Berechtigungen des ioBroker-Benutzers an:sudo nano /etc/sudoers.d/iobrokerDiese sieht bei mir so aus:
Zitatiobroker ALL=(ALL) ALL
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/shutdown
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/halt
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/poweroff
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/reboot
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/systemctl start
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/systemctl stop
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/mount
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/umount
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/systemd-run
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/make
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/ping
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/setcap
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/vcgencmd
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/cat
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/df
iobroker ALL=(ALL) NOPASSWD: /usr/sbin/ldconfig
ALL ALL=NOPASSWD: /usr/sbin/systemctl start iobroker
ALL ALL=NOPASSWD: /usr/sbin/systemctl stop iobroker
ALL ALL=NOPASSWD: /usr/sbin/systemctl restart iobroker
ALL ALL=(iobroker) NOPASSWD: /usr/sbin/node /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js *
Der iobroker-Benutzer hat ohne Passworteingabe weitreichende Berechtigungen, darunter das Herunterfahren, Neustarten, Starten von Diensten und Ausführen von Befehlen auf dem System sowie spezielle Berechtigungen für den iobroker-Dienst. Es ist wichtig, dass die Pfade in der sudoers-Konfiguration genau mit den tatsächlichen Installationspfaden der Befehle auf deinem System übereinstimmen. Diese Datei sollte mit chmod 440 gesichert werden.
sudo chmod 444 /etc/sudoers.d/iobrokerWenn du die Datei bearbeiten möchtest, kannst du die Berechtigungen kurz auf chmod 644 setzen:
sudo chmod 644 /etc/sudoers.d/iobrokerNachdem du die erforderlichen Bearbeitungen vorgenommen hast, solltest du die Berechtigungen jedoch erneut auf chmod 444 setzen, um die Sicherheit der Datei zu gewährleisten.
Du kannst den ioBroker-Fixer ausführen, falls auf deinem System irgendwo noch Berechtigungen oder Einstellungen nicht korrekt gesetzt sind. Die Meldungen wie 'sudo: apt-get: Befehl nicht gefunden' im Abschnitt 'Installing prerequisites (1/5)' kannst du ignorieren, da sie nur unter Debian funktionieren und in diesem Fall nicht relevant sind. Falls benötigte Pakete fehlen, können sie mit 'pacman' installiert werden:
iob stop
curl -fsSL https://iobroker.net/fix.sh | bash -
iob start
Hier mein Ergebnis am Ende, nachdem durch den ioBroker-Fixer die Autostart-Funktion für den ioBroker-Dienst aktiviert wurde - hatte ich vergessen (Created symlink /etc/systemd/system/multi-user.target.wants/iobroker.service → /usr/lib/systemd/system/iobroker.service):
ZitatYour installation was fixed successfully
Run iobroker start to start ioBroker again!
ioBroker kann nun über die IP im Webbrowser aufgerufen werden http://<IP-Adresse>:8081 und eingerichtet werden.