{# First-boot setup wizard. Single template, 5 step views selected by the `step` context variable: welcome / hostname / wan / test / done. Styling matches login.html so the visual transition between login and wizard is seamless. #} {% set STEP_INDEX = {"welcome": 1, "hostname": 2, "wan": 3, "test": 4, "done": 5} %} {% set step_num = STEP_INDEX.get(step, 1) %} {{ title }} — Step {{ step_num }} of 5

First-Boot Setup

Vendora SBC · Step {{ step_num }} of 5
    {% for name, num in [("Password", 1), ("Hostname", 2), ("Internet", 3), ("Test", 4), ("Done", 5)] %}
  1. {{ name }}
  2. {% endfor %}
{# Device ID panel — shown on every step so the operator can copy it any time (click the code to select). License-status pill on the right indicates whether registration is still pending. #}
Device ID {{ vnd_id }} {% if license_active %} License Active {% else %} Awaiting Registration {% endif %}
{# ============================================================ STEP 1 — Welcome / password ============================================================ #} {% if step == 'welcome' %} {% if not license_active %}
Register this device before continuing To activate sales, the operator account at vendorawifi.com needs to know this Device ID and have at least one license credit.
  1. Open vendorawifi.com on any device with internet (your phone's mobile data is fine).
  2. Sign in, go to Devices, and add the Device ID shown above.
  3. Make sure the device has at least one license credit applied.
  4. Continue setup here — once internet is configured, this vendo will activate automatically within ~30 seconds.
{% endif %}

Set the operator password

The password protects this admin console. Pick it before customers come within range of the AP — whoever sets it first becomes the operator of this vendo.

{% if error == 'too_short' %}
Password must be at least 8 characters.
{% elif error == 'mismatch' %}
Passwords don't match. Try again.
{% elif error == 'already_set' %}
A password was just set by someone else. Refresh to continue.
{% elif error == 'invalid' %}
Incorrect password.
{% elif error == 'current_invalid' %}
Current password is incorrect.
{% elif error == 'unset' %}
No operator password is configured yet.
{% elif error == 'server' %}
Server error. Try again.
{% endif %} {% if password_unset %} {# Case (a): fresh install — create the initial password #}
Minimum 8 characters.
{% elif not authenticated %} {# Case (b): password set but operator not signed in — log them in #}
The operator password is already set. Sign in to continue the setup wizard.
{% else %} {# Case (c): authenticated — keep or change #}
Operator password is already set. You can keep it and move on, or change it now.
Change password instead
Minimum 8 characters.
{% endif %} {# ============================================================ STEP 2 — Hostname ============================================================ #} {% elif step == 'hostname' %}

Name this vendo

Give this SBC a friendly name. Used in logs, the admin About page, and (later) the optional remote-management view on vendorawifi.com.

{% if error == 'invalid_hostname' %}
Invalid hostname. Use 3–32 characters: lowercase letters, digits, and hyphens. No leading or trailing hyphen.
{% elif error == 'apply_failed' %}
Couldn't apply the hostname. Check the system log and try again.
{% endif %}
Current: {{ current_hostname }} · Suggested: {{ suggested_hostname }} (derived from VND-ID)
← Back
{# ============================================================ STEP 3 — WAN mode ============================================================ #} {% elif step == 'wan' %}

Configure internet (WAN)

Pick how this vendo gets to the internet. Most installs work with DHCP — the upstream modem hands out an IP automatically.

{% if error == 'invalid_mode' %}
Pick DHCP, Static, or PPPoE.
{% elif error == 'static_missing' %}
Static mode needs address and gateway.
{% elif error == 'invalid_address' %}
Address must be IPv4 with CIDR, e.g. 192.168.1.50/24.
{% elif error == 'invalid_gateway' %}
Gateway must be a valid IPv4 address.
{% elif error == 'invalid_dns' %}
DNS values must be comma-separated IPv4 addresses.
{% elif error == 'pppoe_missing' %}
PPPoE mode needs both username and password.
{% elif error == 'wan_apply_failed' %}
Network reconfiguration failed. Check cabling and try again.
{% endif %} {% set active_mode = wan_state.mode if wan_state and wan_state.mode in ['dhcp', 'static', 'pppoe'] else 'dhcp' %}
The upstream modem assigns an IP automatically. No further info needed — most home and small-business installs use this.
← Back
{# ============================================================ STEP 4 — Connectivity test ============================================================ #} {% elif step == 'test' %}

Test internet connectivity

Two checks: a ping to 1.1.1.1 to confirm routing, and a connection to vendorawifi.com to confirm the licensing API is reachable.

{{ "✓" if ping_ok else "✕" }}
Internet routing
ping 1.1.1.1
{{ "OK" if ping_ok else "FAIL" }}
{{ "✓" if server_ok else "✕" }}
Licensing server reachable
vendorawifi.com · {{ server_detail }}
{{ "OK" if server_ok else "FAIL" }}
{% if ping_ok and server_ok %}
Connection looks good. The licensing daemon will activate this vendo within a minute (once the device is registered at vendorawifi.com).
← Back
{% else %}
One or more checks failed. If you typed a wrong Static address or PPPoE password, use Back to fix it. Otherwise check WAN cabling and try Retry. You can also continue and fix it later from the System page — the vendo will block sales until activation succeeds.
← Back ↻ Retry test
{% endif %} {# ============================================================ STEP 5 — Done ============================================================ #} {% elif step == 'done' %}

Setup complete

Review the settings below. Click Finish to land on the dashboard. You can change any of these later from the System page.

Hostname
{{ current_hostname }}
VND-ID
{{ vnd_id }}
WAN mode
{{ (wan_state.mode or 'unknown') | upper }}
{% if wan_state.address %}
WAN address
{{ wan_state.address }}
{% endif %}
License
{% if license_active %} Active {% elif license_last_contact %} Awaiting refresh {% else %} Activating… {% endif %}
{% if not license_active %}
The licensing daemon runs once per minute on first boot and every four hours after. If you just configured the network, give it a moment — the License page will show Active shortly. The captive portal blocks customer sales until then.
{% endif %}
← Back
{% endif %}