-
Notifications
You must be signed in to change notification settings - Fork 704
Open
Description
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 psshows 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.Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels