• v0.3.0-rc.1 831687ddc6

    Steward v0.3.0-rc.1
    All checks were successful
    release / release (push) Successful in 1m57s
    Pre-release

    adam released this 2026-10-25 18:37:33 +00:00 | -19 commits to main since this release

    Added

    • Captive portals (docs/portal.md). A subnet's
      clients can be kept off the internet until they accept its terms on
      Steward's portal page, a page in Steward's colors (light and dark)
      with the subnet's own title and terms. Steward lets a signed-in client
      through by adding its address to a dynamic set in Housecarl, the
      firewall manager, with a timeout that ends with its session or its
      lease, whichever comes first. A session belongs to the client, not its
      address: the set follows it to a new address, and a client that comes
      back within its session time gets straight through. Steward checks
      the sets every minute and after every lease change, and takes out the
      other addresses of its portal subnets.
      • The page is served on its own addresses (portal.listen in
        steward.yaml, on the guest networks), apart from the web UI; any
        other site's web request the firewall sends there is redirected to
        it, so phones and laptops open it by themselves.
      • With an https:// portal.url, Steward sends it in DHCP option 114
        (RFC 8910), and answers the Captive Portal API (RFC 8908).
      • Per subnet: on or off, the Housecarl set, the session time (24
        hours by default), the title and the terms. steward portal set,
        the subnet's new Portal tab, portal in the subnet API.
      • Who is signed in, with Extend and End, and the clients that
        haven't signed in, with Let in for a TV or console that can't
        open the page: the Portal tab, steward portal sessions, let-in,
        extend, end, status; /portal and /portal/sessions in the
        API (the leases grant). SIGNED IN and SIGNED OUT in Activity.
      • housecarl: in steward.yaml: Housecarl's URL or local socket, and a
        token that needs only sets:write for the portal's sets.
    • A roadmap in docs/design.md: other ways
      through a portal (passwords, vouchers, accounts) and IPv6 on portal
      networks.

    Upgrading from 0.2

    • The database gets a new version (8), applied when stewardd starts; a
      0.2 stewardd can't open it afterwards, so take a backup first (sudo stewardd backup). No subnet has a portal until you turn one on.
    • The portal needs Housecarl with its renewal fix (adding an entry that
      is in a dynamic set already must give it the new timeout).
    Downloads