Skip to content

Upgrade from 1.4.x to 1.5.x breaks all app connectivity (tested on Raspberry Pi 5) #2101

@jleaders

Description

@jleaders

Missing iptables FORWARD rules on umbrel_main_network means no apps can get a port.

Environment

  • Device: Raspberry Pi 5
  • OS: UmbrelOS 1.5
  • Upgrade Path: Upgraded from previous version (issue appeared after upgrade)
  • Docker Version: (as shipped with UmbrelOS 1.5)

Problem Description

After upgrading to UmbrelOS 1.5 on Raspberry Pi 5, all Umbrel apps become inaccessible from the local network. Containers are
running and healthy, but connections to any app port (e.g., n8n on 5678, komodo on 9120) fail or are rejected.

Symptoms

  • ✅ Docker containers start successfully (docker ps shows all containers running)
  • ✅ SSH to Umbrel works fine
  • ❌ All app URLs timeout or connection refused from external devices
  • ❌ curl from LAN to umbrel.local:<port> fails
  • ❌ curl from umbrel host to localhost:<port> gets "Connection reset by peer"
  • ❌ Inter-container communication fails (app_proxy cannot reach backend containers)

Root Cause

The umbrel_main_network Docker bridge (e.g., br-bfea11e6272f) is missing its iptables FORWARD chain rules after the
upgrade.

Expected rules (present on other bridges):

iptables -A FORWARD -o br-xxx -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i br-xxx ! -o br-xxx -j ACCEPT
iptables -A FORWARD -i br-xxx -o br-xxx -j ACCEPT

Actual state: No FORWARD rules exist for the umbrel_main_network bridge, so all traffic hits the default DROP policy.

Evidence

Other Docker networks have proper rules:

$ sudo iptables -L FORWARD -n -v | grep br-eb4acdafcd65
    3   255 ACCEPT     all  --  *      br-eb4acdafcd65  0.0.0.0/0    0.0.0.0/0    ctstate RELATED,ESTABLISHED
    0     0 DOCKER     all  --  *      br-eb4acdafcd65  0.0.0.0/0    0.0.0.0/0
    3   207 ACCEPT     all  --  br-eb4acdafcd65 !br-eb4acdafcd65  0.0.0.0/0    0.0.0.0/0
    0     0 ACCEPT     all  --  br-eb4acdafcd65 br-eb4acdafcd65  0.0.0.0/0    0.0.0.0/0

umbrel_main_network bridge has NO rules:

$ sudo iptables -L FORWARD -n -v | grep br-bfea11e6272f
(no output)

Workaround

Manually add the missing iptables rules after each reboot:

# Find the umbrel_main_network bridge
NETWORK_ID=$(docker network inspect umbrel_main_network --format '{{.Id}}' | cut -c1-12)
BRIDGE="br-${NETWORK_ID}"

# Add FORWARD rules
iptables -I FORWARD -o $BRIDGE -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD -i $BRIDGE ! -o $BRIDGE -j ACCEPT
iptables -I FORWARD -i $BRIDGE -o $BRIDGE -j ACCEPT
iptables -I FORWARD -o $BRIDGE -j ACCEPT

A persistent startup script is needed since the bridge network ID changes on each reboot.

Impact

- Severity: Critical - all apps are completely inaccessible
- Affected Users: Raspberry Pi 5 users who upgraded to UmbrelOS 1.5
- Workaround Complexity: High - requires manual iptables configuration and startup script

Additional Context

This may be related to the known Raspberry Pi OS deprecation of iptables in favor of nftables, which causes Docker networking
 issues. However, other Docker bridges on the same system have proper rules, suggesting this is specific to how UmbrelOS 1.5
creates or manages the umbrel_main_network.

The network ID changes on each reboot (e.g., br-bfea11e6272f → br-8e41e5107c9d → br-07efc0bf5a6e), which may indicate the
network is being recreated rather than persisted, potentially contributing to the missing iptables rules.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions