Home phone system, part 5

The outside line

October 31, 2026

In part 4 we connected the cordless phones. All phones in the house can now call each other, but the house still can’t be reached from outside. In this part we connect MikoPBX to a SIP provider, so we get a real phone number.

Step 1: a phone number from a SIP provider

You need a VoIP subscription that gives you a phone number and SIP credentials. I use the prepaid VoIP service of CheapConnect, a Dutch provider. A phone number costs €8.95 a year, and you pay for your calls from a prepaid balance.

After signing up, you’ll find your SIP account under Prepaid VoIP → SIP accounts. According to the CheapConnect FAQ, the username is your phone number in international format, without the plus sign, and both the username and the password are in your welcome email and in the portal.

The SIP accounts page in the CheapConnect portal, with one SIP number account

CheapConnect also offers a free SIP trunk. A trunk is meant for connecting a PBX with several numbers. For a home with a single phone number, a regular SIP number works just as well.

The portal also offers a listing in the phone directory (Gidsvermelding). I deliberately skipped that. I don’t want sales calls on the house phones: only family and friends get this number. Companies get my mobile number.

If your number was configured on another device before, like a router with built-in phone features, disable it there first. Two devices registering with the same account will steal incoming calls from each other.

Step 2: add the provider in MikoPBX

In MikoPBX, go to Routing → Telephony providers and add a SIP provider:

Field Value
Provider name CheapConnect
Account type Outgoing registration
Provider server address voip.cheapconnect.net
Login Your SIP username
Password Your SIP password

The CheapConnect provider settings in MikoPBX: account type Outgoing registration, server voip.cheapconnect.net, and the status Registered

Outgoing registration means MikoPBX logs in to CheapConnect, just like a phone logs in to MikoPBX. When it works, the provider shows a green Registered label.

Under Advanced settings, two things matter:

The network filter for the provider stays at Connections from any addresses are allowed: CheapConnect isn’t on your home network, so the internal-network filter from part 3 won’t work here. Everything else can stay at its defaults.

The advanced provider settings in MikoPBX: two additional provider addresses, port 5060, and Maintain NAT session switched on with a frequency of 60 seconds

Step 3: incoming calls

When someone calls the house, which phones should ring? In MikoPBX you arrange that with a call queue: a group of extensions that ring together. Under Telephony → Call queues I created a queue called Extern gesprek (“outside call”) with number 99, and the strategy All simultaneously.

The members are the phones in the shared rooms and in our bedroom. The children’s rooms are not in the queue: they shouldn’t be woken by a call in the middle of the night. They can still be reached internally. I could have set up “off-work times” in MikoPBX, but at the moment there is not reason to let their phones ring on incoming calls at all. That might change in the future.

The call queues in MikoPBX: queue 99 Extern gesprek with five extensions ringing simultaneously, and queue 20 Woonkamer with two extensions

There’s a second queue in the screenshot: Woonkamer (“living room”), number 20. It rings the two phones in the living room at once, so you can call “the living room” without knowing which phone someone is near.

Then, under Routing → Incoming routes, send all calls from CheapConnect to queue 99. I set the default route, for calls that don’t match any rule, to the same queue.

The incoming routing in MikoPBX: calls to any number via CheapConnect are routed to queue 99, which is also the default route

Step 4: outgoing calls

Finally, calls to the outside world. That’s done under Routing → Outgoing routes. Thanks to the numbering plan it only takes two rules:

Rule Number begins with Digits after that Provider
112 bellen 112 0 CheapConnect
Naar buiten bellen 0 any CheapConnect

The first rule sends the emergency number to CheapConnect. The second sends every number that starts with 0 to CheapConnect, unchanged. No internal number starts with 0, so there’s never any doubt.

The outbound routing in MikoPBX: the rule 112 bellen for only 112, and the rule Naar buiten bellen for any number, both via CheapConnect

Next up

The phone system is complete: all phones can call each other and the outside world. In part 6 it gets more fun: we connect Home Assistant, so you can ask for the weather forecast by phone.