{% extends "ui/_layout.html" %} {% block title %}Settings - nbdmux{% endblock %} {% block subnav %} {% endblock %} {% block intro %}
Effective configuration for this nbdmux instance. All knobs are set via CLI flags or environment variables at daemon startup; the read-only view here matches bty's Settings page Override / Effective / Default shape so operators moving between the trio consoles read one grammar. Persistent edits land in a follow-up.
{% endblock %} {% block content %} {# Card shape mirrors bty's Settings page (a section per group). Each row: label, effective value (monospace), source (Env / CLI / Default), and a short description. Grouped by concern so an operator scanning for "where's the withcache URL" lands on the Warming card without reading everything. #}
Identity
Setting Effective Source Notes
nbdmux version {{ version }} package Container image tag / PyPI release.
Project github.com/safl/nbdmux static Release notes + wire-format docs.
Storage paths
Setting Effective Source Notes
Data directory {{ data_dir }} CLI --data-dir Holds state.db, session-secret, images/. Bind-mount here for cross-service visibility with bty-web's ramboot pipeline.
Images directory {{ images_dir }} derived Warm-created <name>.img land here. Pre-warmed exports point at operator paths anywhere on the container filesystem.
Warming pipeline
{# Withcache URL: form-editable override. Empty -> fall through to env / unset. Effective column shows what the resolver returns. #} {# Withcache browser URL: separate from the API URL above because the internal container hostname the Warmer resolves is rarely browser-reachable. This is the URL nbdmux embeds in operator-facing cross-links (e.g. the "Add + Download on ..." hint on the Exports page). Falls back to the API URL when unset so single-host deploys work with no extra config. #} {# Log level: dropdown of the closed uvicorn set. Persists in the DB but applies on next restart (uvicorn latches the level at boot). #} {# NBD port stays read-only -- it's boot-time only and changing it would break the ramboot-init clients already connected. #}
Setting Override Effective Notes
Withcache URL {% if withcache_url_effective %} {{ withcache_url_effective }} {% else %} not configured {% endif %} Nbdmux only warms via withcache. Override wins over $NBDMUX_WITHCACHE_URL; empty falls back to env / disabled. {% if withcache_url_env %} Env currently: {{ withcache_url_env }}. {% endif %}
Withcache browser URL {% if withcache_browser_url_effective %} {{ withcache_browser_url_effective }} {% else %} - {% endif %} URL the operator's browser can reach withcache on. Override wins over $NBDMUX_WITHCACHE_BROWSER_URL; empty falls back to the Withcache URL above. {% if withcache_browser_url_env %} Env currently: {{ withcache_browser_url_env }}. {% endif %}
Log level {% if log_level_error %} invalid {% else %} {{ log_level_effective }} {% endif %} Uvicorn / logging level. Applies on next restart (uvicorn latches at boot). Default: {{ log_level_default }}.
NBD listener port {{ nbd_port }} CLI --nbd-port The nbd-server subprocess listens here. Read-only: changing it in flight would break connected ramboot-init clients.
Authentication
Setting Effective Source Notes
Admin password {% if auth_enabled %} configured {% else %} open mode {% endif %} env NBDMUX_ADMIN_PASSWORD When set, POST / DELETE /exports and the UI gate on a session cookie. When unset, the control plane is open (LAN-only deploy). GET /exports stays open regardless so bty can poll from a sibling container.
Session secret {% if session_secret_from_env %} from env {% else %} <data-dir>/session-secret {% endif %} env NBDMUX_SESSION_SECRET HMAC key signing the nbdmux-token cookie. Persisted to disk when env unset so cookies survive restarts.
{% endblock %}