Claude enabled me to work on projects with a speed never possible before. I would like to make the results public for other people to use that don't have access to sometimes expensive AI subscriptions. Furthermore, solving problems with AI does mean that the process is often not documented (chat just gets deleted without care). In the earlier days this information was often publicly visible because the work was done by a community in a forum or other form of textual chat. My intention is to fill this gap by uploading findings from AI chats to my website.
The information presented is not checked 100% for mistakes but was generated from a chat that lead to a confirmed working result.
Abstract
izPBX VoIP Setup Documentation — Abstract
Authors: Tobias OE3TEC, Claude (Anthropic)
==========================================
This document describes the complete setup of a self-hosted LAN VoIP system
based on izPBX (Asterisk 20 + FreePBX 16) running in Docker on a home server.
The guide covers the full process from software selection through to verified
HD audio calls, including all configuration decisions, the reasoning behind
them, and the troubleshooting steps encountered along the way.
SCOPE
The system consists of three components:
- izPBX in Docker (Asterisk engine + FreePBX web GUI + MariaDB)
- A Snom 715 SIP desk phone on the local LAN (extension 100)
- Linphone softphone clients on Ubuntu, accessible both on the LAN
and remotely over WireGuard VPN (extensions 101, 102)
No PSTN trunk is configured. This is a purely internal extension system
for home/lab use.
NOTE: The WireGuard + SIP integration has not been tested yet. The relevant
sections describe expected behaviour based on WireGuard's layer 3 VPN design
and should be verified before relying on them.
KEY TOPICS COVERED
- Why izPBX was chosen over a bare Asterisk install on OpenWRT
- Docker network architecture: the interaction between network_mode: host
(izpbx container) and the bridge-networked MariaDB container, and how
a fixed subnet solves the connectivity problem between them
- Pre-deployment port conflict analysis and resolution
- Annotated compose.yml and .env configurations with full reasoning
- FreePBX codec configuration for G.722 HD audio
- Snom 715 web interface registration and RTP settings
- Linphone (linphone-desktop) account setup and codec priority configuration
- Why G.722 reports as 8kHz in call stats despite being wideband (RFC 3551)
- WireGuard considerations for remote SIP clients (untested)
- Data persistence: what survives reboots, container restarts, and image
updates — and what does not. All FreePBX configuration and module updates
installed via the web UI are written to the /data Docker volume and are
fully persistent. The volume is stored on the host at
/home/tobias/izpbx/data/izpbx/ and is independent of the container image.
- Management commands, upgrade procedure, and future Hamnet integration notes
INTENDED AUDIENCE
Anyone looking to reproduce this setup on a similar home server environment
running Docker, with a SIP desk phone and/or softphone clients. Basic
familiarity with Docker Compose and Linux is assumed.
Downloads
The full documentation can be found here.
izpbx-setup.pdf