Hi all,
Some of you know the situation: ZimaOS doesn’t ship a host firewall. iptables is empty, Samba and NFS are on the LAN, every app you install opens its port directly on 0.0.0.0. For a private appliance behind a NAT router that’s been acceptable; for anyone whose LAN has guests, IoT gadgets or a virtualization host it’s a real exposure.
ZFW is a small module I’ve been writing to fix that without changing how ZimaOS feels to use.
- Installs as a sysext module + a tile in the ZimaOS dashboard.
- Allowlist editor for native ports, blocklist for Docker-published ports (filters at DOCKER-USER, not INPUT — Docker traffic doesn’t go through INPUT, this is the most common mistake in homelab firewall how-tos).
- Live status: every listening TCP port classified as LAN-reachable / blocked / loopback. So you can actually see what’s exposed.
- Safe-Apply with a 120-second dead-man revert. Apply something wrong, walk away, the rules come back automatically. The current SSH session is kept alive.
- localhost, the host’s own IP, and tailscale0/ZeroTier are always allowed. Tailscale and Pangolin/Newt access keeps working.
“One thing that stood out during testing was how responsive you were to feedback. We identified issues, discussed them, and in many cases there was a fix available almost immediately. That’s not something you see very often and it gives a lot of confidence in the direction of the project.”
— gelbuilding, after testing ZFW on a ZimaBoard
Install (amd64 for ZimaBoard/ZimaCube, arm64 for Lattepanda/Pi-class):
scp dist/zfw-1.0.10-amd64.tar.gz root@<host>:/tmp/
ssh root@<host> 'cd /tmp && tar xzf zfw-1.0.10-amd64.tar.gz && cd zfw-* && sh install.sh'
Releases, threat model, security report, and bug-bounty policy:
**
About me**
I’m Lintux (Holger). Inside the ZimaOS ecosystem I also maintain zima-linux-client (desktop client with integrated ZeroTier and SMB), Cron (the task-scheduler module), the Tailscale sysext, and a handful of other modules. ZFW grew out of the same itch: things the OS doesn’t ship that the community keeps asking for.
40+ years in IT, a lot of it spent shipping production systems where “don’t break the user” was the actual job description. That’s the lens ZFW is built through — Safe-Apply exists for a reason.
Looking specifically for:
- Reports from arm64 hosts (I have less mileage there).
- Anything that breaks a Docker app you use — please open an issue with the app name and its published ports.
- Which would you rather see next: IPv6, rule-set backup/restore, per-container rule binding, or multi-host management?
Cheers,
Lintux

