Endpoint Manager

Endpoint Manager provides zero-touch auto-provisioning for IP phones.

1. Enable

[proxy]
addons = ["endpoint-manager"]

Database requirements: automatically creates the endpoint_devices table. Supports SQLite / MySQL / PostgreSQL.

2. Supported Brands

BrandConfig FormatExample Models
YealinkPlain textT42S, T46S, T54S, VP530
FanvilXMLX3S, X4S, X5S, X6S

3. Device Management

3.1 Add a Device

Console → Endpoint Manager → Add Device:

FieldDescriptionExample
MAC addressPhone MAC address80:5E:C0:12:34:56
Brand/ModelPhone modelYealink T46S
LabelDisplay nameJohn’s extension 1001
UsernameSIP registration username1001
PasswordSIP registration password********
Server addressSIP server203.0.113.10:5060

3.2 Auto-provisioning Flow

Phone powers on
    │
    ▼
DHCP obtains IP + Option 66/160 (Provision URL)
    │
    ▼
Phone requests configuration
GET /provision/{mac}
    │
    ▼
Endpoint Manager looks up device
    │
    ├── Found → Generate brand/model config → Return
    └── Not found → Return 404

3.3 DHCP Configuration

Configure on the DHCP server:

# ISC DHCP
option option-66 "http://203.0.113.10:8080/provision";

# Or Option 160 (some brands)
option option-160 "http://203.0.113.10:8080/provision";

3.4 Configuration Generation

Endpoint Manager automatically generates configuration based on the brand:

Yealink example:

#!version:1.0.0.1
account.1.enable = 1
account.1.label = 1001
account.1.display_name = 1001
account.1.auth_name = 1001
account.1.user_name = 1001
account.1.password = ********
account.1.sip_server_host = 203.0.113.10
account.1.sip_server_port = 5060

Fanvil example:

<config>
  <sip_account>
    <enable>1</enable>
    <display_name>1001</display_name>
    <auth_name>1001</auth_name>
    <user_name>1001</user_name>
    <password>********</password>
    <sip_server>203.0.113.10</sip_server>
    <sip_port>5060</sip_port>
  </sip_account>
</config>

4. Remote Reboot

Trigger phone reboot via SIP NOTIFY:

POST /console/endpoint-manager/devices/{mac}/reboot

5. Configuration

config/endpoint_manager.toml:

provision_url_base = "http://203.0.113.10:8080/provision"

6. API

OperationEndpoint
Device listGET /console/endpoint-manager/devices
Add devicePOST /console/endpoint-manager/devices
Edit devicePOST /console/endpoint-manager/devices/{mac}/edit
Delete devicePOST /console/endpoint-manager/devices/{mac}/delete
Reboot devicePOST /console/endpoint-manager/devices/{mac}/reboot
Auto-provisionGET /provision/{mac}
SettingsGET /console/endpoint-manager/settings