#2229·umbrel

[2.0.0-beta.1] NAS SMB hang → LAN ingress stops with HPM ECONNRESET, all app containers removed and never recreated, network state wiped; daemon also ignores SIGTERM

Author: dfein38347gCreated Sep 12, 2026Updated Sep 12, 2026

Environment

  • umbrelOS 2.0.0-beta.1, x86, 20 installed apps
  • One CIFS share from a NAS box on the LAN (//<NAS>/Media), attached to 5 apps (a media stack) via the 2.0 Files → Network storage subsystem

Timeline (UTC, Sep 12; host clock NTP-synchronized)

  • 13:26:10 samba/winbindd restarted (2.0 network-stack component)
  • 13:29:49 kernel: CIFS: VFS: \\<NAS> has not responded in 180 seconds. Reconnecting... (transient ~3-min NAS-side hang; NAS healthy since, <1ms RTT)
  • ~13:30 umbreld reissued its LAN-ingress TLS cert (lan-ingress/{ca,server}.pem, ca.srl mtime 13:30)
  • 13:31:31–13:31:52 appstore git clones "Request timed out" (getumbrel/umbrel-apps, getAlby/umbrel-community-app-store, reddexx/umbrel-AppStore)
  • 13:40:00 /home/umbrel/umbrel/network/ state dir emptied
  • 13:40:07 umbreld[1389]: [laningress] Stopping LAN ingress
  • 13:40:14 umbreld[1389]: [laningress] [error] [HPM] ECONNRESET: Error: socket hang up
  • 13:40:11–23 Going to remove <APP>_server_1, <APP>_mac_1, <APP>_indexer_proxy_1, plus the shared Tor proxy container — container metadata for ALL installed apps vanished from /var/lib/docker/containers (dir emptied at 13:40)
  • After 13:40: daemon stayed "active (running)" but port 80/443 listeners gone → web UI unreachable for 6+ hours; all app containers stayed missing. Meanwhile tRPC get_app_status kept reporting ready for the removed apps (state desync).
  • Docker images, all named volumes, and all app-data config dirs were untouched throughout.

Resulting defects

  1. A transient SMB/NAS unavailability triggers a network re-provision that (a) stops the LAN ingress, (b) crashes it mid-shutdown ([HPM] ECONNRESET), (c) wipes network state, and (d) removes every app's containers — and the "up" half (recreate + restart ingress) never runs. Only a full daemon restart recovers (the boot-time reconcile recreated all app stacks in ~35s and brought the ingress back — that path works).
  2. umbreld ignores SIGTERM: after systemctl restart, the service sat in deactivating (stop-sigterm) for 3+ minutes (unit has TimeoutStopSec=15min), so a manual KILL was required. A host reboot could therefore stall 15 min on this unit.
  3. get_app_status reports ready for apps whose containers don't exist — no reconciliation between daemon state and docker reality.
  4. Minor: at clean boot, ingress proxies trpc/user.createWebSocketTicket before the internal 127.0.0.1:22080 listener is ready → one [HPM] ... ECONNREFUSED (self-recovering).

Expected behavior

A transient SMB unavailability (or a samba restart) should at worst re-attach the affected mount, not stop the ingress, wipe network state, and tear down — and leave missing — the containers of every installed app.

Workaround that recovered the box

sudo systemctl kill --signal=KILL umbrel && sudo systemctl start umbrel (a plain systemctl restart will hang in stop for up to 15 min on this build)

Related

#2211 (GC abort → recreate all), #2114 (1.7 beta state desync) — both distinct: here the process never crashed; the graceful re-provision simply aborted halfway.