dumbtv
dumbtv takes the ads, screen tracking and update nags out of your Fire TV over ADB. No root, none of your apps touched, every step can be undone. Free and open source.
nftables-based egress firewalling for Podman containers
Translation pending
SecurityPython · MakefileGitHub @terok-aiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
nftables-based egress firewalling for podman containers with domain-based allowlists
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Default-deny egress firewall for rootless Podman containers.
terok-shield enforces default-deny outbound network filtering on
Podman containers using nftables. Containers can only reach
explicitly allowed destinations — everything else is rejected with
an ICMP error and a per-packet audit entry.Read the full README ↗Default-deny egress firewall for rootless Podman containers.
terok-shield enforces default-deny outbound network filtering on Podman containers using nftables. Containers can only reach explicitly allowed destinations — everything else is rejected with an ICMP error and a per-packet audit entry.
terok-shield is the firewall layer of the terok ecosystem. The hardened-Podman runtime (terok-sandbox) installs the OCI hooks at setup time; the operator-in-the-loop verdict service (terok-clearance) mutates the live ruleset on Allow / Deny decisions. The shield itself is independent of all of these — it works on any rootless Podman container, with or without the rest of terok.
--nftset auto-populates allow sets on every DNS resolution,
handling IP rotation at runtime; degrades to resolution at launch
when dnsmasq lacks nftset support or is unavailable, and says sonft binary) — tested on Fedora 43,
Debian 12 and 13, and Ubuntu 24.04, also works on other modern
Linux distrosdnsmasq (recommended) for dynamic DNS-based egress control;
dig (dnsutils / bind-utils) as fallbackpip install terok-shield
terok-shield ships with several bundled profiles (see Allowlist Profiles):
| Profile | Domains |
|---|---|
base | DNS roots, NTP, OCSP, OS package repos |
dev-standard | GitHub, Docker Hub, PyPI, npm, crates.io, Go |
dev-python | Conda, Read the Docs, Python docs |
dev-node | Yarn, jsDelivr, unpkg |
nvidia-hpc | CUDA, NGC, NVIDIA drivers |
No profile applies unless you name one. To add a custom allowlist,
create a .txt file in ~/.config/terok/shield/profiles with one
+-prefixed (allow) or --prefixed (deny) entry per line — a domain,
an IP or CIDR, optionally :port — or +localhost:PORT to reach a
service on the host's own loopback (as host.containers.internal:PORT
inside the container):
e.g. ~/.config/terok/shield/profiles/my-project.txt
+api.example.com
+cdn.example.com
+203.0.113.10
+localhost:9931
terok-shield setup
terok-shield run my-container --profiles dev-standard -- alpine:latest sh
Setup installs global OCI hooks; run resolves DNS and launches the container
with a default-deny firewall — only destinations in the
dev-standard profile are reachable. To use custom profiles:
terok-shield run my-container --profiles dev-standard,my-project -- alpine:latest sh
To see — or apply by hand — the ruleset those profiles produce, without setup, podman or any state:
terok-shield preview --profiles dev-standard,my-project > rules.nft
terok-shield allow my-container example.com
# Allowed example.com -> <resolved-ip> for my-container
terok-shield deny my-container example.com # revoke later
Apache-2.0 — see LICENSES/Apache-2.0.txt.