Die APC Smart-UPS SMC1500IC wird über ein USB-Datenkabel mit einem Ubuntu-Server verbunden.
Dieser Server übernimmt folgende Aufgaben:
* Auslesen des USV-Status
* Erkennen eines Stromausfalls
* Kontrolliertes Herunterfahren des lokalen Servers
* Bereitstellen der USV-Informationen für weitere Server im Netzwerk
Der direkt mit der USV verbundene Rechner wird in dieser Anleitung als NUT-Master bezeichnet.
<note important>
Das USB-Datenkabel der USV muss direkt mit dem Ubuntu-Server verbunden sein.
Der SmartConnect-Netzwerkanschluss ersetzt die USB-Verbindung für NUT nicht.
</note>
* APC Smart-UPS SMC1500IC
* Ubuntu 22.04 oder Ubuntu 24.04
* USB-Datenkabel zwischen USV und Server
* Feste IP-Adresse für den NUT-Master
* Root- oder sudo-Berechtigung
Beispiel-IP des NUT-Masters: 192.168.1.20\
Diese Adresse muss durch die tatsächliche IP-Adresse des Servers ersetzt werden.
Die USV mit dem USB-Datenkabel an den Ubuntu-Server anschließen.
Anschließend prüfen, ob die USV erkannt wird:
lsusb | grep -i -E 'APC|American Power Conversion'
Eine mögliche Ausgabe lautet:
Bus 001 Device 004: ID 051d:0003 American Power Conversion \UPS
Die Bus- und Gerätenummern können abweichen.
Die Kennung 051d steht für APC beziehungsweise American Power Conversion.
Paketquellen aktualisieren:
sudo apt \update
NUT-Server und NUT-Client installieren:
sudo apt install nut-server nut-\client
Installierte Version anzeigen:
apt-cache policy nut-\server
Vor Änderungen sollte das komplette NUT-Konfigurationsverzeichnis gesichert werden:
sudo cp -a /etc/nut "/etc/nut.backup.$(date +%F-%H%M%S)"
Die Sicherung befindet sich anschließend beispielsweise unter:
/etc/nut.backup.2026-07-19-\110000
Die Datei /etc/nut/nut.conf öffnen:
sudo nano /etc/nut/nut.\conf
Folgende Einstellung eintragen:
MODE=\netserver
<note>
Bei MODE=netserver werden der USV-Treiber, der NUT-Datenserver und der lokale Überwachungsdienst gestartet.
Zusätzlich können andere Server im Netzwerk auf die USV-Informationen zugreifen. </note>
Beim Eintrag dürfen um das Gleichheitszeichen keine Leerzeichen stehen.
Richtig:
MODE=\netserver
Falsch:
MODE = \netserver
Die Datei /etc/nut/ups.conf öffnen:
sudo nano /etc/nut/ups.\conf
Folgenden Abschnitt eintragen:
[apc] driver = usbhid-\ups port = \auto vendorid = \051d desc = "APC Smart-UPS SMC1500IC"
Bedeutung der Einstellungen:
| Einstellung | Bedeutung |
|---|---|
[apc] | Interner Name der USV |
driver | USB-HID-Treiber für kompatible APC-USV-Geräte |
port = auto | Automatische Erkennung des USB-Anschlusses |
vendorid = 051d | USB-Herstellerkennung von APC |
desc | Frei wählbare Beschreibung |
Wenn mehrere APC-USV-Geräte am selben Server angeschlossen sind, kann zusätzlich die Produkt-ID angegeben werden:
\\ productid = 0003\\
Eine vollständige Konfiguration kann dann so aussehen:
[apc] driver = usbhid-\ups port = \auto vendorid = \051d productid = \0003 desc = "APC Smart-UPS SMC1500IC"
Die vorhandenen Netzwerkadressen anzeigen:
ip -br \address
Beispiel:
enp3s0 UP 192.168.1.20/\24 docker0 UP 172.17.0.1/\16
Für NUT muss die normale LAN-Adresse verwendet werden:
192.168.1.\20
Nicht verwendet werden sollte eine interne Docker-Adresse wie:
172.17.0.\1
Die Datei /etc/nut/upsd.conf öffnen:
sudo nano /etc/nut/upsd.\conf
Folgende Zeilen eintragen:
LISTEN 127.0.0.1 \3493 LISTEN 192.168.1.20 \3493
Dabei muss 192.168.1.20 durch die tatsächliche LAN-IP-Adresse des Servers ersetzt werden.
NUT verwendet standardmäßig den TCP-Port:
\3493
Die erste Zeile erlaubt lokale Zugriffe:
LISTEN 127.0.0.1 \3493
Die zweite Zeile erlaubt Zugriffe aus dem lokalen Netzwerk:
LISTEN 192.168.1.20 \3493
Für den lokalen Master und die Netzwerk-Clients sollten unterschiedliche Passwörter verwendet werden.
Zwei Passwörter erzeugen:
openssl rand -hex \24
Den Befehl zweimal ausführen und beide Passwörter sicher speichern.
Die Datei /etc/nut/upsd.users öffnen:
sudo nano /etc/nut/upsd.\users
[monmaster] password = \MASTER_PASSWORT_HIER_EINTRAGEN upsmon master [monclient] password = \CLIENT_PASSWORT_HIER_EINTRAGEN upsmon \slave
[monmaster] password = \MASTER_PASSWORT_HIER_EINTRAGEN upsmon primary [monclient] password = \CLIENT_PASSWORT_HIER_EINTRAGEN upsmon \secondary
<note warning> Die Platzhalter müssen durch echte Passwörter ersetzt werden.
Die Passwörter sollten nicht in einer öffentlich zugänglichen Dokumentation gespeichert werden. </note>
Die Datei /etc/nut/upsmon.conf öffnen:
sudo nano /etc/nut/upsmon.\conf
Vorhandene aktive MONITOR-Zeilen sollten auskommentiert oder entfernt werden.
MONITOR apc@localhost 1 monmaster MASTER_PASSWORT_HIER_EINTRAGEN master MINSUPPLIES 1 SHUTDOWNCMD "/sbin/shutdown -h +0" POWERDOWNFLAG /etc/\killpower
MONITOR apc@localhost 1 monmaster MASTER_PASSWORT_HIER_EINTRAGEN primary MINSUPPLIES 1 SHUTDOWNCMD "/sbin/shutdown -h +0" POWERDOWNFLAG /etc/\killpower
Das Passwort muss mit dem Passwort des Benutzers monmaster in /etc/nut/upsd.users übereinstimmen.
Bedeutung der wichtigsten Einträge:
| Einstellung | Bedeutung |
|---|---|
apc@localhost | USV mit dem Namen apc auf dem lokalen Server |
1 | Power-Wert der USV |
monmaster | Benutzer aus upsd.users |
master beziehungsweise primary | Rolle des direkt angeschlossenen Servers |
MINSUPPLIES 1 | Mindestens eine Stromversorgung muss verfügbar sein |
SHUTDOWNCMD | Befehl zum Herunterfahren des Servers |
POWERDOWNFLAG | Kennzeichnung für das spätere Abschalten der USV |
Die Konfigurationsdateien enthalten Passwörter und sollten nur für root und die Gruppe nut lesbar sein.
\\ sudo chown root:nut /etc/nut/upsmon.conf /etc/nut/upsd.users\\
sudo chmod 640 /etc/nut/upsmon.conf /etc/nut/upsd.\users
Dateirechte kontrollieren:
ls -l /etc/nut/upsmon.conf /etc/nut/upsd.\users
Eine mögliche Ausgabe lautet:
-rw-r----- 1 root nut /etc/nut/upsd.\users -rw-r----- 1 root nut /etc/nut/upsmon.\conf
Dienste aktivieren:
sudo systemctl enable nut-server nut-\monitor
NUT-Server neu starten:
sudo systemctl restart nut-\server
NUT-Monitor neu starten:
sudo systemctl restart nut-\monitor
Status anzeigen:
systemctl --no-pager --full status nut-server nut-\monitor
Unter NUT 2.8 wird zusätzlich der Driver Enumerator verwendet.
sudo systemctl restart nut-driver-enumerator.\service
sudo systemctl restart nut-server.\service
sudo systemctl restart nut-monitor.\service
Status anzeigen:
systemctl --no-pager --full status nut-driver-enumerator.service nut-server.service nut-monitor.\service
Alle verfügbaren USV-Werte anzeigen:
upsc apc@\localhost
Einzelne Werte abfragen:
upsc apc@localhost ups.\model
upsc apc@localhost ups.\status
upsc apc@localhost battery.\charge
upsc apc@localhost battery.\runtime
upsc apc@localhost ups.\load
Bei normalem Netzbetrieb sollte der Status Folgendes enthalten:
OL
Wichtige Statusmeldungen:
| Status | Bedeutung | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
OL | Online: Netzversorgung vorhanden | OB | On Battery: USV läuft auf Batterie | LB | Low Battery: Batterie fast leer | RB | Replace Battery: Batterie sollte ersetzt werden | CHRG | Batterie wird geladen | DISCHRG | Batterie wird entladen | OVER | USV ist überlastet | OFF | USV-Ausgang ist ausgeschaltet |
Mehrere Statuswerte können gleichzeitig angezeigt werden.
Beispiel:
\ OL CHRG\
Das bedeutet:
* Netzversorgung \vorhanden * Batterie wird geladen
Wenn UFW aktiv ist, sollte der NUT-Port nur für das interne Servernetz freigegeben werden.
Beispiel für das Netzwerk 192.168.1.0/24:
sudo ufw allow from 192.168.1.0/24 to any port 3493 proto \tcp
Firewallstatus prüfen:
sudo ufw \status
Prüfen, ob NUT auf Port 3493 lauscht:
sudo ss -ltnp | grep \3493
Eine mögliche Ausgabe lautet:
LISTEN 0 16 127.0.0.1:\3493 LISTEN 0 16 192.168.1.20:\3493
Auf dem zweiten Ubuntu-Server den NUT-Client installieren:
sudo apt \update
sudo apt install nut-\client
Status des NUT-Masters abfragen:
upsc apc@192.168.1.\20
Wenn die Verbindung funktioniert, werden die USV-Werte angezeigt.
Falls folgende Meldung erscheint:
Error: Connection failure: Connection \refused
sollten folgende Punkte kontrolliert werden:
* Ist nut-server gestartet?
* Ist die richtige IP in upsd.conf eingetragen?
* Ist TCP-Port 3493 durch die Firewall freigegeben?
* Ist die IP-Adresse vom Client erreichbar?
Vor dem Test sollte die Batterie vollständig geladen sein.
Die wichtigsten Werte laufend anzeigen:
watch -n 2 'upsc apc@localhost ups.status; upsc apc@localhost battery.charge; upsc apc@localhost battery.runtime'
Anschließend nur den Netzeingang der USV kurz vom Stromnetz trennen.
Dabei sollten folgende Änderungen sichtbar sein:
| Zustand | Erwarteter Status |
|---|---|
| Netzstrom vorhanden | OL |
| Netzstrom getrennt | OB |
| Netzstrom wiederhergestellt | OL |
Die angeschlossenen Server müssen während des kurzen Tests weiterlaufen.
<note important>
Nicht die Ausgangsstecker der Server abziehen.
Nur den Netzanschluss der USV testweise vom Stromnetz trennen.
</note>
Der folgende Befehl darf nicht während des normalen Betriebs testweise ausgeführt werden:
upsdrvctl shutdown
Dieser Befehl kann den Ausgang der USV abschalten.
Dadurch verlieren alle an der USV angeschlossenen Geräte unmittelbar ihre Stromversorgung.
Ubuntu-Version anzeigen:
lsb_release -\a
USB-Geräte anzeigen:
lsusb
Status der Dienste anzeigen:
sudo systemctl status nut-server nut-monitor --no-\pager
Systemprotokoll anzeigen:
sudo journalctl -u nut-server -u nut-monitor -n 100 --no-\pager
Unter Ubuntu 24.04 zusätzlich:
sudo journalctl -u nut-driver-enumerator.service -u nut-server.service -u nut-monitor.service -n 150 --no-\pager
Treiber stoppen:
sudo upsdrvctl \stop
Treiber testweise im Debug-Modus starten:
sudo /lib/nut/usbhid-ups -a apc -\DDD
Den Debug-Modus mit Strg+C beenden.
Danach den normalen Dienst wieder starten:
sudo systemctl restart nut-\server
Prüfen, ob ein anderer USV-Dienst auf das Gerät zugreift:
ps aux | grep -E 'apcupsd|usbhid-ups|upsd|upsmon'
Falls apcupsd installiert ist, kann es zu einem Konflikt kommen.
Status prüfen:
systemctl status \apcupsd
Falls NUT verwendet werden soll, apcupsd stoppen und deaktivieren:
sudo systemctl disable --now \apcupsd
Danach NUT neu starten:
sudo systemctl restart nut-server nut-\monitor
Treiberstatus prüfen:
sudo systemctl status nut-server --no-\pager
Protokoll prüfen:
sudo journalctl -u nut-server -n 100 --no-\pager
USB-Gerät prüfen:
lsusb | grep -i -E 'APC|American Power Conversion'
USB-Kabel und Batterieanschluss der USV kontrollieren.
| Datei | Aufgabe |
|---|---|
/etc/nut/nut.conf | Legt die NUT-Betriebsart fest |
/etc/nut/ups.conf | Definiert die angeschlossene USV und den Treiber |
/etc/nut/upsd.conf | Legt Netzwerkadressen und Port des NUT-Servers fest |
/etc/nut/upsd.users | Definiert Benutzer, Passwörter und Berechtigungen |
/etc/nut/upsmon.conf | Konfiguriert Überwachung und automatisches Herunterfahren |
MODE=netserver
[apc] driver = usbhid-ups port = auto vendorid = 051d desc = "APC Smart-UPS SMC1500IC"
LISTEN 127.0.0.1 3493\ LISTEN 192.168.1.20 3493\
[monmaster] password = MASTER_PASSWORT_HIER_EINTRAGEN\ upsmon master [monclient] password = CLIENT_PASSWORT_HIER_EINTRAGEN\ upsmon slave
MONITOR apc@localhost 1 monmaster MASTER_PASSWORT_HIER_EINTRAGEN master MINSUPPLIES 1 SHUTDOWNCMD "/sbin/shutdown -h +0" POWERDOWNFLAG /etc/killpower
Nach erfolgreicher Einrichtung sollte folgender Befehl die USV-Daten anzeigen:
upsc apc@localhost
Bei normaler Netzversorgung sollte unter anderem folgender Status erscheinen:
ups.status: OL
Der NUT-Master kann nun:
* die APC Smart-UPS SMC1500IC überwachen
* einen Stromausfall erkennen
* den lokalen Ubuntu-Server herunterfahren
* weitere NUT-Clients im Netzwerk versorgen