{"repo":"FarisZR/knocker","free":true,"listed":false,"github":"https://github.com/FarisZR/knocker","clone":"git clone https://github.com/FarisZR/knocker.git","description":"Knocker, a knock based access control service for your homelab","language":"Python","stars":135,"topics":["gemini","python","firewalld","homelab"],"license":"Apache-2.0","category":"self-hosted-apps","readme_excerpt":"Knocker is a self-hosted service that provides an HTTP based \"knock-knock\" single-packet authorization (SPA) gateway for your Homelab with web, cli + gnome and android clients. it can be used as authentication for your reverse proxy like Caddy, or even on the firewall level using the FirewallD integration. It allows you to keep your services completely private, opening them up on-demand only for authorized IP addresses. This is ideal for homelab environments where you want to expose services to the internet without a persistent VPN connection, while minimizing your public-facing attack surface. Features - API Key Authentication : Secure your knock endpoint with multiple, configurable API keys. - Configurable TTL : Each API key can have its own Time-To-Live (TTL), defining how long a whitelisted IP remains active. - Remote Whitelisting : Grant specific admin keys permission to whitelist any IP or CIDR range, not just their own. - Static IP/CIDR Whitelisting : Always allow certain IP addresses or ranges to bypass the dynamic whitelist. - Host-Scoped Exclusion : Keep intentionally public paths scoped to the correct virtual host. - IPv6 First-Class Citizen : Full support for IPv6 and IPv4 in whitelisting, trusted proxies, and Docker networking. - Firewalld Integration : Advanced firewall control with timed rules that automatically expire based on TTL. Creates dynamic firewall rules using firewalld rich rules for enhanced security. (Optional, requires root container access) Knocke","default_branch":null,"files":null,"tree":[],"storefront":"/r/FarisZR","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/FarisZR/knocker/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}