Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

luckyheiko

Members
  • Joined

  • Last visited

  1. Hallo kurz eine kleine Geschichte: ich hatte netzwerkprobleme (abbrüche)... am ende war es ein defektes Netzwerkkabel .... (nun wäre die geschichte fertig) bei dem langen suchen ist mir (mit hilfe der KI) aufgefallen das es sein kann das die (onboard)netzwerkkarte wohl auch noch ein problem (ringbuffer) hat. habe immer tx_errors gehabt. mir hat das script geholfen um zu sehen wann die 'probleme' auftreten (vorsicht 100% vibe code) ich habe dann festgestellt das es immer beim UrBackup die probleme gibt (also bei last) nach dem deaktivieren der onboard karte und einbau einer Intel Gigabit CT habe ich nun keine fehler. ich hoffe das der code nicht ganz so schlecht ist (100% KI) und vielleicht hilft es ja dem einen oder anderen #!/bin/bash #name=Linkwatch #description=Netzwerk-Ereignisse loggen und alarmieren #backgroundOnly=true #arrayStarted=true LOGFILE="/mnt/user/Log/NetzwerkCRASH.log" PIDFILE="/var/run/linkwatch.pid" CLEANUP_FLAG="/tmp/linkwatch_cleanup_done" IFACE="eth0" SLEEP_BEFORE_START=30 MAX_LOG_BYTES=$((50 * 1024 * 1024)) HOSTNAME=$(hostname) MAIN_PID=$$ log() { if [ -f "$LOGFILE" ] && [ "$(stat -c%s "$LOGFILE")" -ge "$MAX_LOG_BYTES" ]; then tail -c $((MAX_LOG_BYTES / 2)) "$LOGFILE" > "${LOGFILE}.tmp" \ && mv "${LOGFILE}.tmp" "$LOGFILE" echo "===== Log rotiert $(date '+%F %T') =====" >> "$LOGFILE" fi echo "$*" >> "$LOGFILE" } # Kompakte NIC-Zusammenfassung (nur relevante Felder) nic_summary() { local iface="$1" local speed duplex autoneg link mac speed=$(ethtool "$iface" 2>/dev/null | awk '/Speed:/{print $2}') duplex=$(ethtool "$iface" 2>/dev/null | awk '/Duplex:/{print $2}') autoneg=$(ethtool "$iface" 2>/dev/null | awk '/Auto-negotiation:/{print $2}') link=$(ethtool "$iface" 2>/dev/null | awk '/Link detected:/{print $3}') mac=$(ip link show "$iface" 2>/dev/null | awk '/link\/ether/{print $2}') local tx_err rx_miss tx_pkt rx_pkt tx_err=$(ethtool -S "$iface" 2>/dev/null | awk '/tx_errors/{print $2}') rx_miss=$(ethtool -S "$iface" 2>/dev/null | awk '/rx_missed/{print $2}') tx_pkt=$(ethtool -S "$iface" 2>/dev/null | awk '/tx_packets/{print $2}') rx_pkt=$(ethtool -S "$iface" 2>/dev/null | awk '/rx_packets/{print $2}') echo " MAC=$mac Speed=${speed:-?} Duplex=${duplex:-?} AutoNeg=${autoneg:-?} Link=${link:-?}" echo " TX=$tx_pkt RX=$rx_pkt TX-Err=${tx_err:-0} RX-Missed=${rx_miss:-0}" } # ── Restart-Logik ────────────────────────────────────────────────── if [ -f "$PIDFILE" ]; then OLD_PID=$(cat "$PIDFILE") if kill -0 "$OLD_PID" 2>/dev/null; then log "===== Linkwatch Restart – stoppe PID $OLD_PID $(date '+%F %T') =====" pkill -P "$OLD_PID" 2>/dev/null kill "$OLD_PID" 2>/dev/null sleep 2 else log "===== Linkwatch – veraltete PID bereinigt $(date '+%F %T') =====" fi rm -f "$PIDFILE" fi rm -f "$CLEANUP_FLAG" # ── Lock ─────────────────────────────────────────────────────────── exec 9>"$PIDFILE" if ! flock -n 9; then log "Linkwatch Lock aktiv – Abbruch." exit 1 fi echo $$ >&9 # ── Cleanup ──────────────────────────────────────────────────────── cleanup() { if [ ! -f "$CLEANUP_FLAG" ]; then touch "$CLEANUP_FLAG" log "===== Linkwatch beendet $(date '+%F %T') =====" rm -f "$PIDFILE" pkill -P "$MAIN_PID" 2>/dev/null fi } trap cleanup EXIT INT TERM # ── Alert via Unraid Notify ──────────────────────────────────────── send_alert() { local subject="$1" local message="$2" log ">>> ALERT: $subject – $message" /usr/local/emhttp/plugins/dynamix/scripts/notify \ -s "[$HOSTNAME] $subject" \ -d "$message" \ -i "alert" } # ── Cooldown ────────────────────────────────────────────────────── LAST_ALERT_FILE="/tmp/linkwatch_last_alert.txt" cooldown_ok() { local last now last=$(cat "$LAST_ALERT_FILE" 2>/dev/null || echo 0) now=$(date +%s) if [ $((now - last)) -gt 300 ]; then echo "$now" > "$LAST_ALERT_FILE" return 0 fi return 1 } sleep "$SLEEP_BEFORE_START" log "===== Linkwatch gestartet $(date '+%F %T') =====" # ── Baseline ─────────────────────────────────────────────────────── TX_NOW=$(ethtool -S "$IFACE" 2>/dev/null | awk '/tx_errors/{print $2}') echo "${TX_NOW:-0}" > /tmp/lw_tx_last.txt log "Baseline TX Errors: ${TX_NOW:-0}" RX_MISSED_NOW=$(ethtool -S "$IFACE" 2>/dev/null | awk '/rx_missed/{print $2}') echo "${RX_MISSED_NOW:-0}" > /tmp/lw_rxmissed_last.txt log "Baseline RX Missed: ${RX_MISSED_NOW:-0}" dmesg -c > /dev/null 2>&1 log "dmesg Buffer geleert – überwache ab $(date '+%F %T')" # ── 1. ip monitor – Link Events (kein veth-Spam) ─────────────────── ip monitor link | grep -v "veth" | while read -r line; do log "===== $(date '+%F %T') =====" log "$line" nic_summary "$IFACE" | while read -r summary; do log "$summary"; done log "" done & # ── 2. dmesg -w – Kernel Events ──────────────────────────────────── dmesg -w \ | grep --line-buffered -E "${IFACE}|r8169|NETDEV|link" \ | grep -v --line-buffered "veth" \ | while read -r line; do log "$(date '+%F %T') $line" if echo "$line" | grep -qi "downshift"; then SPEED=$(echo "$line" | grep -oP 'actual speed \K\S+') cooldown_ok && send_alert "NIC Downshift!" \ "eth0 auf ${SPEED:-?} degradiert" fi if echo "$line" | grep -qi "Link is Down"; then cooldown_ok && send_alert "Link Down!" "eth0 Verbindung verloren" fi if echo "$line" | grep -qi "Link is Up"; then log "Link wieder up ($(date '+%F %T'))" fi done & # ── 3. Periodische Checks alle 5 min ────────────────────────────── HOUR_COUNTER=0 while true; do sleep 300 HOUR_COUNTER=$((HOUR_COUNTER + 1)) # Stündliches Stats-Log if [ $((HOUR_COUNTER % 12)) -eq 0 ]; then TX_STAT=$(ethtool -S "$IFACE" 2>/dev/null | awk '/tx_errors/{print $2}') RX_STAT=$(ethtool -S "$IFACE" 2>/dev/null | awk '/rx_missed/{print $2}') SPEED_STAT=$(ethtool "$IFACE" 2>/dev/null | awk '/Speed:/{print $2}') log "── Stunden-Stats $(date '+%F %T') – Speed: $SPEED_STAT | TX Errors: $TX_STAT | RX Missed: $RX_STAT" fi # Speed-Check SPEED=$(ethtool "$IFACE" 2>/dev/null | awk '/Speed:/{print $2}') if [[ "$SPEED" != "1000Mb/s" && "$SPEED" != "" ]]; then cooldown_ok && send_alert "Speed degradiert!" "eth0 läuft mit $SPEED" fi # TX Errors Delta TX_NOW=$(ethtool -S "$IFACE" 2>/dev/null | awk '/tx_errors/{print $2}') TX_LAST=$(cat /tmp/lw_tx_last.txt 2>/dev/null || echo 0) echo "$TX_NOW" > /tmp/lw_tx_last.txt TX_DIFF=$((TX_NOW - TX_LAST)) if [ "$TX_DIFF" -gt 10 ]; then send_alert "TX Errors!" \ "eth0 +$TX_DIFF tx_errors in letzten 5 min (gesamt: $TX_NOW)" fi # RX Missed Delta (mit Counter-Reset-Schutz) RX_NOW=$(ethtool -S "$IFACE" 2>/dev/null | awk '/rx_missed/{print $2}') RX_LAST=$(cat /tmp/lw_rxmissed_last.txt 2>/dev/null || echo 0) RX_DIFF=$((RX_NOW - RX_LAST)) if [ "$RX_DIFF" -lt 0 ]; then # Counter wurde zurückgesetzt (Reboot/Reload) log "── RX Missed Counter Reset erkannt – neue Baseline: $RX_NOW" echo "$RX_NOW" > /tmp/lw_rxmissed_last.txt else echo "$RX_NOW" > /tmp/lw_rxmissed_last.txt if [ "$RX_DIFF" -gt 1000 ]; then send_alert "RX Buffer Overflow!" \ "eth0 +$RX_DIFF rx_missed in letzten 5 min" fi fi # Gateway-Check GW=$(ip route | awk '/default/{print $3}' | head -1) if [ -n "$GW" ] && ! ping -c 2 -W 2 "$GW" &>/dev/null; then cooldown_ok && send_alert "Gateway down!" "Ping auf $GW fehlgeschlagen" fi done & wait
  2. yesterday i have changed the source from mbentley/omada-controller:6.0 to mbentley/omada-controller:6 now 6.1.0.19 and now i have the problem to conect with the FF (firefox) to the controller. (bevor the update the login works without any problem) every time circle (as in the picture) in the chrome browser the login page works. can you give me a hint what i can do? (and NO, using chrome is a option ;)) thanks a lot.
  3. danke für die Info nun funktionier es
  4. Hallo ich dachte das ich bei diesen Einstellungen das Log 'dauerhaft' noch auf mein 77Log schreibe (Cache) die ganze Zeit keine Probleme gehabt und deswegen auch nie nachgeschaut und geprüft. nun musste ich festestellen das das Log vor langer Zeit mal geschrieben wurde, aber dann aufhörte mit (chatgpt) und diesem befehl konnte ich das log ansprechen logger "TEST: syslog check $(date)" May 26 15:39:06 der-ripper /dev/log [error]: Connection closed with code=1006 reason="Terminated" [./dist/index.js:24987] May 26 15:39:06 der-ripper /dev/log [error]: Connection closed with code=4200 reason="OK" [./dist/index.js:24987] May 26 15:41:59 der-ripper /dev/log [error]: Connection closed with code=1006 reason="Terminated" [./dist/index.js:24987] May 26 15:41:59 der-ripper /dev/log [error]: Connection closed with code=4200 reason="OK" [./dist/index.js:24987] Feb 10 06:42:25 der-ripper root REMOTE TEST Tue Feb 10 06:42:25 CET 2026 Feb 10 06:44:42 der-ripper root REMOTE TEST Tue Feb 10 06:44:42 CET 2026 Feb 10 06:44:43 der-ripper root REMOTE TEST Tue Feb 10 06:44:43 CET 2026 hat sich hier was geändert? oder wie kann ich das wieder aktivieren? oder prüfen warum es nicht geht? neustarts habe ich in den letzten 5 tagen sicher 10 oder 15 stück schon gemacht, da ich eben ein Problem habe. würde mich über eine kurze Info sehr freuen.
  5. ich weiß nicht ob dein Themaschon gelöst(abgeschloßen) ist. ich hätte gedacht das man einfach die zweite nvme mit ins board steckt und dann ein 'raid1' vom cache macht und wenn das abgeschloßen ist. könne man doch die zweite platte wieder enfernen. oder würde das nicht gehen, da die zwei platten unterschiedlich groß sind?
  6. Hallo ich bräucht mal eure hilfe ob das überhaupt möglich ist. und zwar unraid läuft auf 122.5 hier habe ich auch einen Docker (Omada) für den Router den ich habe. nun bräuchte ich eine 'verbindung' (was auch immer) um vom Docker IOBroker (123.23) mit dem Omada Docker reden zu können. (habe br.0 und br.23, ipvlan) der Chat bringt mich sonst noch ins Grab, der kommt zu keinem ergebnis. er kam meistens zu dem thema ich brauch iptables iptables -I DOCKER-USER -s 192.168.123.23 -d 192.168.122.5 -j ACCEPT aber das hat nie geklappt, egal ob mit port oder ohne. Ist da was möglich? (eine verbindung herzustellen) wenn ja kann mir hier jemand sagen was wie wo eingestellt werden soll/muss. würde mich über hilfe sehr freuen.
  7. ich habe es ja schon über den 'tuner', aber wegen PV usw. läuft das pariti 3tage von 10-16 uhr aber das 'problem' habe ich gefühlt nur am 'start' / ersten tag. am zweiten oder dritten ist es mir noch nicht wirklich aufgefallen (bin aber auch meisens auf der arbeit) P.S. und nein kommt mit Putty oÄ nicht mehr auf den 'server'. hab aber auch keine GraKa oder ähnliches drann um das anderweitig zu prüfen zu sehen.
  8. Hallo danke für die Info, werde das mal testen. und ich kann das leider nur sehr eingeschränkt prüfen, da ich ja dann keine zugriff mehr auf die GUI oder per Putty habe. hab aber gerade den Pariti unterbrechen können und nun 'läuft' alles normal, auslastung eher bei 10-15% (das 'Prblem' fällt auch nur dann auf wenn der Check am WE ist (so wie heute) da bei mir dann das 'internet' dann nicht mehr geht (Omada, Pihole usw)
  9. Hallo mir ist aufgefallen das bei mir, wenn die Parity prüfung läuft, das Unraid bei mir schlecht/gar nicht erreichbar ist. Da bei mir noch Docker laufen die wichtig sind für mein Internet, ist das also 'schlecht' da ich über all nur was lesen von VM's und Pinning usw. https://forums.unraid.net/topic/99393-h%C3%A4ufig-gestellte-fragen/#findComment-1023779 wollte ich Fragen wie das bei Dockern ausschaut. ich habe das so verstanden das wenn ich einen Docker eine CPU zuweise, dann nimmt dieser auch nur diese zugewiesene CPU (nicht mehr und nicht weniger) deswegen würde ich davon gerne abstand halten. oder ist dies sinnvoll? und dann dachte ich mir das das System etwas luft zum Atmen hat, Isoliere ich 4 Kerne damit die Docker/VM immer etwas luft haben zu arbeiten. habe ich das so richtig verstanden. also Unraid würde die 4 Isolierten Kern nie benutzen?! das würde ja dann mein 'Problem' beim Pariti Check lösen (mildern) würde mich über ein paar helfende Worte sehr freuen
  10. in my case it is the unget.plg + unbalanced.plg without this plugin unraid works
  11. It's not that easy for me to get into safe mode, since I don't have any graphics on the board ok, it must be one of the plugins but which one?! der-ripper-diagnostics-20250508-1319.zip
  12. I wanted to do that, but unfortunately, since this issue, I haven't been able to download the diagnostics. It keeps crashing. the only thing i changed was a Mainboard switch from a ASRock B450Pro4 to a Asus X570-P
  13. May 8 13:02:15 der-ripper publish: curl to apcups failed May 8 13:02:15 der-ripper publish: curl to wireguard failed May 8 13:02:15 der-ripper publish: curl to update3 failed May 8 13:02:16 der-ripper publish: curl to update2 failed May 8 13:02:16 der-ripper publish: curl to wireguard failed May 8 13:02:16 der-ripper publish: curl to vm_dashusage failed May 8 13:02:16 der-ripper publish: curl to update3 failed May 8 13:02:17 der-ripper publish: curl to wireguard failed May 8 13:02:17 der-ripper publish: curl to update3 failed May 8 13:02:18 der-ripper publish: curl to temperature failed May 8 13:02:18 der-ripper publish: curl to update2 failed May 8 13:02:18 der-ripper publish: curl to apcups failed May 8 13:02:18 der-ripper publish: curl to wireguard failed May 8 13:02:18 der-ripper publish: curl to update3 failed May 8 13:02:18 der-ripper publish: curl to update1 failed May 8 13:02:19 der-ripper publish: curl to wireguard failed May 8 13:02:19 der-ripper publish: curl to vm_dashusage failed May 8 13:02:19 der-ripper publish: curl to update3 failed May 8 13:02:20 der-ripper publish: curl to update2 failed May 8 13:02:20 der-ripper publish: curl to wireguard failed May 8 13:02:20 der-ripper publish: curl to update3 failed May 8 13:02:21 der-ripper publish: curl to wireguard failed May 8 13:02:21 der-ripper publish: curl to update3 failed May 8 13:02:22 der-ripper publish: curl to update2 failed May 8 13:02:22 der-ripper publish: curl to wireguard failed May 8 13:02:22 der-ripper publish: curl to vm_dashusage failed May 8 13:02:22 der-ripper publish: curl to update3 failed May 8 13:02:25 der-ripper publish: curl to session failed May 8 13:02:25 der-ripper publish: curl to notify failed May 8 13:02:25 der-ripper publish: curl to temperature failed May 8 13:02:30 der-ripper publish: curl to temperature failed May 8 13:02:36 der-ripper publish: curl to temperature failed May 8 13:02:41 der-ripper publish: curl to temperature failed May 8 13:02:46 der-ripper publish: curl to temperature failed May 8 13:02:51 der-ripper publish: curl to temperature failed May 8 13:02:56 der-ripper publish: curl to temperature failed May 8 13:03:28 der-ripper publish: curl to session failed May 8 13:03:28 der-ripper publish: curl to notify failed May 8 13:03:28 der-ripper publish: curl to temperature failed now i have also this topic. but i have not installed the Nerd Tools. how can i find out what is going on and which plugin i must delete?!
  14. vielen Dank für die Info. und der Händler hat von sich aus vorgeschlagen die Platte zurückzuschicken und das Rücksende Etikett habe ich schon. habe auch schon eine 'neue' Bestellt. Hoffe nur das ich hier nicht wieder so ne 'Niete' ziehe. schönen Abend noch.
  15. Habe mir vor 3 Tagen eine neue Parity gekauft eine 16TB Platte. heute ist diese fertig ins System integriert gewesen (SMART werte alle auf 0) dann sehe ich den bericht https://www.heise.de/news/Betrug-mit-Seagate-Festplatten-Dutzende-Leser-melden-Verdachtsfaelle-10258657.html und die Daten erst mal bei seagate geprüft dann den Händler angerufen und er teilte mir mit das es keine 'neue' sondern eine Gebrauchte ist. anhand der FARM werte hat die Platte ca 23000h aufn Buckel. nun die Frage, ist auf der Parity irgendwas sinnvollen drauf an Daten? wenn Nein, kann ich die Platte dann einfach so Ausbauen und zurückschicken?! wenn Ja, wie kann ich die Daten 'richtig' löschen?! geht das irgendwie mit Unraid?! (hab leider keine (wenig) linux Erfahrung würde mich über eine kurze Info sehr freuen P.S.: eigentlich (wenn ich das richtig verstanden habe) sollten es ja nur 1 und 0 sein die sich aus den anderen Platten ergeben aber keine Dateien.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.