Skip to main content

Pangolin Newt Agent - Installation und Betrieb

Newt ist ein Reverse-Proxy-Agent von Pangolin, der Remote-Zugriff und Monitoring für Server ermöglicht. Diese Anleitung zeigt die Installation in einem dedizierten LXC Container auf Proxmox.

ℹ️ Sicherheitshinweis: Newt läuft mit root-Rechten und gibt Pangolin Remote-Zugriff auf das System. Daher wird die Installation in einem isolierten LXC Container dringend empfohlen.

Inhaltsverzeichnis


Was ist Newt?

Newt ist ein Agent-basiertes Monitoring- und Management-Tool, entwickelt von Pangolin. Es ermöglicht:

  • Remote-Zugriff auf Server ohne offene Firewall-Ports
  • System-Monitoring (CPU, RAM, Disk, Netzwerk)
  • Log-Aggregation und zentrale Überwachung
  • Remote-Befehlsausführung über das Pangolin Dashboard
  • Automatisierte Wartungsaufgaben

Architektur

Newt arbeitet als Reverse-Proxy:

┌─────────────┐         HTTPS (ausgehend)         ┌──────────────────┐
│ Dein Server │ ──────────────────────────────────> │ Pangolin Backend │
│  (Newt)     │ <────────────────────────────────── │ app.pangolin.net │
└─────────────┘     Befehle/Monitoring-Daten       └──────────────────┘

Vorteile dieser Architektur:

  • ✅ Keine Firewall-Änderungen notwendig
  • ✅ Keine offenen Ports auf dem Server
  • ✅ Verschlüsselte Verbindung (HTTPS)
  • ✅ Funktioniert auch hinter NAT

Funktionsweise

Verbindungsaufbau

  1. Newt startet und verbindet sich ausgehend zu https://app.pangolin.net
  2. Authentifizierung erfolgt über Agent-ID und Secret
  3. Verbindung bleibt permanent bestehen (Long-Polling/WebSocket)
  4. Pangolin kann über diese Verbindung Befehle senden

Datenfluss

Richtung Daten Zweck
Server → Pangolin Metriken (CPU, RAM, Disk) Monitoring/Dashboards
Server → Pangolin Log-Einträge Zentrale Log-Verwaltung
Server → Pangolin Heartbeat/Status Verfügbarkeitsüberwachung
Pangolin → Server Shell-Befehle Remote-Management
Pangolin → Server Konfigurationsänderungen Automatisierung

Vorbereitung: LXC Container erstellen

⚠️ Wichtig: Newt sollte in einem dedizierten LXC Container laufen, um das Host-System zu schützen.

Container über Proxmox Web-GUI erstellen

  1. Im Proxmox-Interface: Create CT
  2. General:
    • Hostname: pangolin-newt
    • Unprivileged container: ✅ (empfohlen)
    • Password: Sicheres Root-Passwort vergeben
  3. Template:
    • Storage: Dein Template-Storage
    • Template: debian-12-standard oder ubuntu-22.04-standard
  4. Disks:
    • Disk size: 8 GB (ausreichend für Newt)
    • Storage: Dein bevorzugter Storage
  5. CPU:
    • Cores: 1 (Newt benötigt wenig CPU)
  6. Memory:
    • Memory: 512 MB
    • Swap: 256 MB
  7. Network:
    • Bridge: vmbr0
    • IPv4: DHCP oder statische IP
    • IPv6: Nach Bedarf

Container über CLI erstellen (Alternative)

# Template herunterladen (falls noch nicht vorhanden)
pveam update
pveam download local debian-12-standard_12.2-1_amd64.tar.zst

# Container erstellen
pct create 200 local:vztmpl/debian-12-standard_12.2-1_amd64.tar.zst \
  --hostname pangolin-newt \
  --memory 512 \
  --swap 256 \
  --cores 1 \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --storage local-lvm \
  --rootfs local-lvm:8 \
  --unprivileged 1 \
  --features nesting=0

# Container starten
pct start 200

Snapshot erstellen (empfohlen)

Vor der Newt-Installation einen Snapshot anlegen:

# Im Proxmox Host
pct snapshot 200 before-newt --description "Clean state before Pangolin Newt installation"

So kannst du bei Problemen einfach zum sauberen Zustand zurückkehren.


Installation von Newt

1. In den Container einloggen

# Vom Proxmox Host
pct enter 200

# Oder per SSH (falls konfiguriert)
ssh root@<container-ip>

2. System aktualisieren

# Debian/Ubuntu
apt update && apt upgrade -y

# Optional: Basis-Tools installieren
apt install -y curl wget nano htop net-tools

3. Newt Binary herunterladen

Die Newt-Binary erhältst du vom Pangolin Dashboard nach der Registrierung.

4. Binary installieren

# Binary nach /usr/local/bin verschieben
mv /tmp/newt /usr/local/bin/newt

# Ausführbar machen
chmod +x /usr/local/bin/newt

# Besitzer setzen
chown root:root /usr/local/bin/newt

# Installation verifizieren
/usr/local/bin/newt --version

5. Erstmaliger Test-Start

Vor der systemd-Integration solltest du Newt einmal manuell testen:

/usr/local/bin/newt \
  --id 31frd0uzbjvp721 \
  --secret h51mmlknrvrwv8s4r1i210azhumt6isgbpyavxodibx1k2d6 \
  --endpoint https://app.pangolin.net
✅ Erfolgreiche Verbindung:
[INFO] Connected to Pangolin endpoint
[INFO] Agent registered successfully
[INFO] Awaiting commands...
❌ Fehler bei Verbindung:
  • ID/Secret falsch → Im Pangolin Dashboard überprüfen
  • Network unreachable → Firewall/Internet-Verbindung prüfen
  • Certificate error → System-Zeit prüfen (date)

Mit Ctrl+C beenden, wenn der Test erfolgreich war.


Systemd Service einrichten

1. Service-Datei erstellen

nano /etc/systemd/system/newt.service

2. Service-Konfiguration

Folgende Konfiguration einfügen (Werte anpassen!):

[Unit]
Description=Pangolin Newt Agent
Documentation=https://docs.pangolin.net
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=root
Group=root

# Newt-Binary mit deinen Credentials
ExecStart=/usr/local/bin/newt \
  --id 31frd0uzbjvp721 \
  --secret h51mmlknrvrwv8s4r1i210azhumt6isgbpyavxodibx1k2d6 \
  --endpoint https://app.pangolin.net

# Restart-Verhalten
Restart=always
RestartSec=10
StartLimitInterval=0

# Sicherheits-Optionen (optional, aber empfohlen)
NoNewPrivileges=false
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/log /tmp

# Logging
StandardOutput=journal
StandardError=journal
SyslogIdentifier=newt

[Install]
WantedBy=multi-user.target

Parameter-Erklärung

Parameter Beschreibung
--id Agent-ID aus dem Pangolin Dashboard
--secret Secret-Key zur Authentifizierung
--endpoint Pangolin Backend-URL (Standard: app.pangolin.net)
Restart=always Automatischer Neustart bei Crashes
RestartSec=10 10 Sekunden warten vor Neustart
After=network-online.target Erst starten wenn Netzwerk verfügbar

3. Service aktivieren und starten

# Systemd neu laden
systemctl daemon-reload

# Service beim Boot aktivieren
systemctl enable newt

# Service starten
systemctl start newt

# Status prüfen
systemctl status newt

4. Erfolgreiche Installation verifizieren

# Service läuft?
systemctl is-active newt
# Ausgabe: active

# Logs anzeigen
journalctl -u newt -f

# Letzte 50 Zeilen
journalctl -u newt -n 50

Erwartete Log-Ausgabe

Feb 08 12:34:56 pangolin-newt systemd[1]: Started Pangolin Newt Agent.
Feb 08 12:34:56 pangolin-newt newt[1234]: [INFO] Starting Newt agent v1.2.3
Feb 08 12:34:57 pangolin-newt newt[1234]: [INFO] Connecting to https://app.pangolin.net
Feb 08 12:34:58 pangolin-newt newt[1234]: [INFO] Connected successfully
Feb 08 12:34:58 pangolin-newt newt[1234]: [INFO] Agent ID: 31frd0uzbjvp721
Feb 08 12:34:58 pangolin-newt newt[1234]: [INFO] Awaiting commands...

Monitoring und Wartung

Service-Status überwachen

# Aktueller Status
systemctl status newt

# Ist der Service aktiviert?
systemctl is-enabled newt

# Läuft der Service?
systemctl is-active newt

# Service neu starten
systemctl restart newt

# Service stoppen
systemctl stop newt

Logs analysieren

# Live-Logs verfolgen
journalctl -u newt -f

# Logs der letzten Stunde
journalctl -u newt --since "1 hour ago"

# Logs seit letztem Boot
journalctl -u newt -b

# Nur Fehler anzeigen
journalctl -u newt -p err

# Logs exportieren
journalctl -u newt > /tmp/newt-logs.txt

Netzwerk-Verbindungen prüfen

# Aktive Verbindungen von Newt
ss -tulpn | grep newt

# Alternativ mit netstat
netstat -tulpn | grep newt

# Beispiel-Ausgabe (eine ausgehende HTTPS-Verbindung):
# tcp   ESTAB   0   0   10.0.0.100:45678   1.2.3.4:443   users:(("newt",pid=1234))

Ressourcen-Verbrauch überwachen

# CPU und RAM von Newt-Prozess
ps aux | grep newt

# Detaillierte Prozess-Info
top -p $(pidof newt)

# Oder mit htop (interaktiv)
htop -p $(pidof newt)

Automatische Benachrichtigungen (optional)

Systemd kann dich benachrichtigen, wenn der Service fehlschlägt:

# In /etc/systemd/system/newt.service ergänzen:
[Unit]
OnFailure=notify-email@%n.service

# Erfordert Einrichtung von notify-email Service

Sicherheitsaspekte

Risikobewertung

⚠️ Kritische Punkte

  • Root-Zugriff: Newt läuft mit vollen root-Rechten
  • Remote-Kontrolle: Pangolin kann Befehle auf dem System ausführen
  • Datenübertragung: System-Metriken werden an Pangolin gesendet
  • Secret-Speicherung: Credentials sind in Klartext in der Service-Datei

Sicherheitsmaßnahmen

1. Container-Isolation (wichtigste Maßnahme!)

# Container-Konfiguration überprüfen
pct config 200

# Sicherstellen dass unprivileged aktiviert ist
pct set 200 -unprivileged 1

# Nesting deaktivieren (verhindert Container-in-Container)
pct set 200 -features nesting=0

# Optional: AppArmor-Profil setzen
pct set 200 -protection 1

2. Ressourcen-Limits setzen

# CPU-Limit (verhindert DoS durch hohe CPU-Last)
pct set 200 -cpulimit 1

# RAM-Limit
pct set 200 -memory 512 -swap 256

# Disk-I/O-Limit
pct set 200 -iops_rd 2000 -iops_wr 2000

3. Netzwerk-Isolation

Optionale Firewall-Regeln im Container:

# UFW installieren und konfigurieren
apt install -y ufw

# Nur ausgehende HTTPS-Verbindungen zu Pangolin erlauben
ufw default deny incoming
ufw default deny outgoing
ufw allow out 443/tcp to app.pangolin.net

# Firewall aktivieren
ufw enable

4. Secrets schützen

Service-Datei-Rechte einschränken:

# Nur root darf Service-Datei lesen
chmod 600 /etc/systemd/system/newt.service
chown root:root /etc/systemd/system/newt.service

# Systemd neu laden
systemctl daemon-reload

5. Audit-Logging aktivieren

# Auditd installieren
apt install -y auditd

# Newt-Prozess überwachen
auditctl -w /usr/local/bin/newt -p x -k newt-execution

# Logs anzeigen
ausearch -k newt-execution

Regelmäßige Sicherheitschecks

Check Befehl Frequenz
Service-Status systemctl status newt Täglich
Ungewöhnliche Aktivität journalctl -u newt -p warning Wöchentlich
Netzwerk-Verbindungen ss -tulpn | grep newt Wöchentlich
Updates verfügbar Pangolin Dashboard prüfen Monatlich
Container-Backup pct backup 200 Monatlich

GDPR/Datenschutz-Überlegungen

📋 Datenschutz-Checkliste

  • ❓ Welche Daten werden an Pangolin übertragen?
  • ❓ Wo werden die Daten gespeichert (EU/USA)?
  • ❓ Gibt es einen Data Processing Agreement (DPA)?
  • ❓ Sind personenbezogene Daten im Container?
  • ❓ Ist dies in der Datenschutzerklärung dokumentiert?

Für kommerzielle Nutzung (z.B. Nyrux-Kunden) diese Punkte klären!


Troubleshooting

Problem: Service startet nicht

# Detaillierte Fehlerinfo
systemctl status newt -l

# Service-Datei auf Syntaxfehler prüfen
systemd-analyze verify /etc/systemd/system/newt.service

# Manuell starten für detaillierte Fehler
/usr/local/bin/newt --id ... --secret ... --endpoint ...

Häufige Ursachen:

  • ❌ Binary fehlt in /usr/local/bin/newt
  • ❌ Keine Ausführungsrechte: chmod +x /usr/local/bin/newt
  • ❌ Tippfehler in ID/Secret
  • ❌ Falsche Zeilenumbrüche in Service-Datei

Problem: Verbindung zu Pangolin schlägt fehl

# Netzwerk-Konnektivität testen
ping -c 4 app.pangolin.net

# HTTPS-Verbindung testen
curl -I https://app.pangolin.net

# DNS-Auflösung prüfen
nslookup app.pangolin.net
dig app.pangolin.net

Häufige Ursachen:

  • ❌ Keine Internet-Verbindung im Container
  • ❌ DNS-Server nicht konfiguriert: /etc/resolv.conf prüfen
  • ❌ Firewall blockiert Port 443
  • ❌ Falsche System-Zeit (Zertifikatsprobleme): timedatectl

Problem: Agent wird im Dashboard als offline angezeigt

# Service läuft lokal?
systemctl is-active newt

# Logs auf Connection-Errors prüfen
journalctl -u newt | grep -i error

# Netzwerk-Verbindung aktiv?
ss -tulpn | grep newt

Mögliche Ursachen:

  • ❌ ID/Secret stimmt nicht mit Dashboard überein
  • ❌ Agent wurde im Dashboard gelöscht/deaktiviert
  • ❌ Netzwerk-Unterbrechung
  • ❌ Pangolin-Backend hat Probleme (Status-Page prüfen)

Problem: Hoher Ressourcen-Verbrauch

# Prozess-Details anzeigen
ps aux | grep newt

# Netzwerk-Traffic messen
iftop -i eth0
# oder
nethogs

# Disk-I/O überwachen
iotop

Mögliche Lösungen:

  • Container-Ressourcen erhöhen (RAM/CPU)
  • Monitoring-Intervall in Pangolin anpassen
  • Log-Level reduzieren
  • Support bei Pangolin kontaktieren

Problem: Service startet nach Reboot nicht automatisch

# Service-Status prüfen
systemctl is-enabled newt

# Falls disabled, aktivieren:
systemctl enable newt

# Verify dependency chain
systemctl list-dependencies newt

Notfall: Container zurücksetzen

Falls Newt Probleme macht, zum Snapshot zurückkehren:

# Vom Proxmox Host
pct stop 200
pct rollback 200 before-newt
pct start 200

Zusätzliche Ressourcen

Offizielle Dokumentation

Proxmox Dokumentation

Systemd Dokumentation


Wartungs-Checkliste

Aufgabe Frequenz Befehl/Aktion
Service-Status prüfen Täglich systemctl status newt
Logs durchsehen Wöchentlich journalctl -u newt -p warning
Ressourcen überwachen Wöchentlich htop -p $(pidof newt)
System-Updates Monatlich apt update && apt upgrade -y
Newt-Updates Monatlich Pangolin Dashboard prüfen
Container-Backup Monatlich pct backup 200 oder Proxmox Backup Jobs
Sicherheits-Audit Quartalsweise Logs, Netzwerk, Berechtigungen prüfen

Deinstallation

Falls du Newt wieder entfernen möchtest:

# Service stoppen und deaktivieren
systemctl stop newt
systemctl disable newt

# Service-Datei entfernen
rm /etc/systemd/system/newt.service
systemctl daemon-reload

# Binary entfernen
rm /usr/local/bin/newt

# Optional: Container komplett löschen
# (Vom Proxmox Host)
pct stop 200
pct destroy 200
💡 Tipp: Beim Löschen des Agents im Pangolin Dashboard wird dieser automatisch als offline markiert. Der lokale Service muss separat deaktiviert werden.