{% extends "ui/_layout.html" %} {% block title %}Settings - bty-web{% endblock %} {% block subnav %} {# Settings is the one page with real sub-nav: in-page jump links to each card, separated by vertical rules. #} {% endblock %} {% block intro %} {% from "ui/_intro_box.html" import render as intro_box %} {% call intro_box() %} Where every bty magic value comes from. Most are read-only (set via environment variable or derived from the state directory); the Upstream sources card is editable and persists in the database. The DHCP / PXE cheatsheet below is the router-side config to point PXE clients at this appliance. Operator authentication lives on the Account page. {% endcall %} {% endblock %} {% block content %} {# Editable: the two upstream URLs. Empty field clears the override and reverts to env / default. Both take effect on the next fetch. #}
Upstream sources
GitHub owner/repo the netboot artifacts (and the default catalog URL) are pulled from. Effective: {{ upstream.release_repo }}{% if not upstream.release_repo_override %} (default; leave blank to keep){% endif %}.
Full URL the Fetch latest catalog action downloads catalog.toml from. Effective: {{ upstream.catalog_url }}{% if not upstream.catalog_url_override %} (derived from the release repo; leave blank to keep){% endif %}.
Which release the Fetch artifacts button on the Netboot page pulls: latest or a tag like v0.23.0. Effective: {{ upstream.release_tag }}{% if not upstream.release_tag_override %} (default; leave blank to keep){% endif %}.
Clear a field to revert it to the default.
{# Read-only: the magic values, grouped, each row tagged with where the live value came from (env var / derived path / default). #} {% for group in config_groups %}
{{ group.title }}
{% for r in group.rows %} {% endfor %}
Setting Value Source Env var
{{ r.label }} {{ r.value }} {% if r.source == "env" %} env {% elif r.source == "derived" %} derived {% else %} default {% endif %} {% if r.env %}{{ r.env }} {% else %}-{% endif %}
{% endfor %} {# Router-side cheatsheet (moved here from the Netboot page). The bits the operator pastes into UniFi / pfSense / dnsmasq DHCP config to point PXE clients at this appliance. Reference-only; no editable fields -- bty doesn't run DHCP, the LAN router does. #}
DHCP / PXE

bty-server runs a TFTP daemon (dnsmasq) and serves boot artifacts over HTTP. The DHCP side stays with your LAN's router (or DHCP server); bty deliberately doesn't try to replace it. Point your router at this appliance with the settings below.

{% if missing_netboot_artifacts %}
Netboot environment incomplete. Missing under {{ boot_root }}: {% for name in missing_netboot_artifacts %} {{ name }}{% if not loop.last %}, {% endif %} {% endfor %}. PXE clients will chain into iPXE but get 404 on the kernel fetch until these files are present.
Fetch latest
{% endif %}

This appliance

{% for iface in interfaces %} {% else %} {% endfor %}
Interface State IPv4
{{ iface.name }} {{ iface.operstate }} {% if iface.ipv4 %} {{ iface.ipv4 }}/{{ iface.prefix }} {% else %} (no address) {% endif %}
(no interfaces detected)

Router-side configuration

Configure your LAN's DHCP server to tag PXE clients with the options below. For UniFi: Settings → Networks → [your LAN] → Advanced → DHCP → Network Boot. For pfSense / OpenWRT / dnsmasq: equivalent options on the DHCP service.

Option Value Notes
option 60 PXEClient Vendor-class echo. Strict UEFI firmware filters offers without it.
option 66 / Next-Server {% if primary and primary.ipv4 %} {{ primary.ipv4 }} {% else %} (this appliance's LAN IP) {% endif %} The TFTP server. Same box as bty-web.
option 67 / Boot-Filename ipxe.efi For UEFI PXEClient (arch 6/7/9). Use undionly.kpxe for legacy BIOS (arch 0).
option 67 for user-class=iPXE http://{% if primary and primary.ipv4 %}{{ primary.ipv4 }}{% else %}<bty-server>{% endif %}:8080/pxe-bootstrap.ipxe Stops iPXE chain-loop. Different bootfile when iPXE re-DHCPs.

For UEFI HTTP-Boot (vendor-class HTTPClient), point option 67 at http://{% if primary and primary.ipv4 %}{{ primary.ipv4 }}{% else %}<bty-server>{% endif %}:8080/boot/ipxe.efi instead (no TFTP roundtrip).

{% endblock %}