{"repo":"CircuitGuy/IPRememberMe","free":true,"listed":false,"github":"https://github.com/CircuitGuy/IPRememberMe","clone":"git clone https://github.com/CircuitGuy/IPRememberMe.git","description":"An IP based remember-me to allow auth interactions on dumb clients. Targeted at self-hosters who don't want to directly expose things like HomeAssistant or Jellyfin login pages to the open internet but have clients that can't support web auth","language":"Go","stars":14,"topics":[],"license":"MIT","category":"self-hosted-apps","readme_excerpt":"Authelia-IPRememberMe ===================== What this is ------------ Lightweight sidecar that sits between your proxy (e.g., Nginx Proxy Manager) and Authelia-protected apps. After one successful Authelia login on an IP, the service marks that IP as trusted for a configurable window (default 24h). While trusted, any device on that IP can skip Authelia challenges for the protected apps. Each touch refreshes the timer only when the signed cookie is present (cookie binds IP+user); plain IP hits do not refresh TTL. A status page and a user page keep visibility and control simple. When MAX IPS PER USER is exceeded, the oldest IP for that user is evicted and replaced by the new one. Why it exists ------------- - You want Authelia to serve as the bouncer for your publicly-exposed services without presenting a global login screen, but the clients aren't designed for that (HomeAssistant mobile app and Jellyfin on constrained clients don't handle Authelia) Example: You use your cell phone to access a Jellyfin webpage (and authenticate through Authelia). This app adds the IP to the whitelist server-side. Now you can use your cell phone to cast to a device on that network; Chromecast rides that trust without seeing the Authelia bouncer. Warning: IP-trust warning: Whitelisting “this IP” is a convenience. On shared IPs (NAT/VPN/carrier), you may be trusting more than one device. Keep TTLs sensible and clear the list when in doubt. Any services exposed should have their own authorization/t","default_branch":null,"files":null,"tree":[],"storefront":"/r/CircuitGuy","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/CircuitGuy/IPRememberMe/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."}