---
title: "Yealink Auto-Provisioning Server | Sobhan Heravian"
description: "A Docker and Nginx server that configures Yealink IP phones automatically: each phone gets its own settings and the right firmware for its model."
url: "https://sobhan.heravian.com/projects/yealinkProvision/"
lang: "en"
---

# Yealink Auto-Provisioning Server

Setting up dozens of Yealink phones by hand is slow and error-prone. This server, running in Docker with Nginx, hands every phone its configuration when it boots: phones find it through DHCP option 66, ask first for a file named after their MAC address, and fall back to a configuration for their model family.

Configuration files contain SIP passwords, so Nginx serves them only to whitelisted voice subnets and logs every blocked request. The container is stateless: on each start it rebuilds everything it serves from a few mapping files and a CSV inventory. A Bash report lists every phone that has checked in, flags outdated firmware, and separates scanners and browsers from real phones.

## At a glance

- Per-phone configuration by MAC address, with a fallback per model family.
- Configuration files served only to whitelisted voice subnets.
- SIP hardening against scanners and ghost calls.
- Randomized provisioning delay, so phones coming back after a power cut don't flood the server.
- Status report: online phones, outdated firmware and blocked requests.

- Source code on GitHub: https://github.com/s-heravian/yealinkProvision

---

[All Projects](https://sobhan.heravian.com/#projects)
