PIONEERS Incredible PBX 2026 for Raspberry Pi

wardmundy

Nerd Uno
Joined
Oct 12, 2007
Messages
20,410
Reaction score
6,127
If you have a RasPi 4, 400, 5, or 500 with at least 4GB of RAM, today is your lucky day.

On your PC, Mac, or Linux Desktop

1. Download the latest Raspberry Pi Imager for your platform.
2. Insert a 32GB MicroSD card into one of these devices
3. Plug the device into your computer
4. Run the Imager app and follow these steps: choose your Pi 4/400 or 5/500 platform, and choose Raspberry Pi other image
5. Select Raspberry Pi OS Lite (64-bit) image for trixie.
6. Choose your SD card destination and Skip Customization, then Write and Finish by removing device.

On your Raspberry Pi

1. Insert the microSD card and boot the machine
2. Specify nerd as new user with password for the password
3. Login as nerd
4. Run: sudo passwd root
5. Logout and log back in as root
6. Run: userdel nerd
7. Run: raspi-config and configure WiFi in System Options and Expand Disk in Additional Options
8. Run: systemctl stop nftables
9. Run: systemctl disable nftables
10. Run: systemctl mask nftables
11. Run: nano -w /etc/ssh/sshd_config and Change then Save:
PermitRootLogin yes
PasswordAuthentication yes
KbdInteractiveAuthentication yes

12. Run: systemctl restart ssh
13. Run: reboot
14. Login via SSH as root and issue the following commands to install Incredible PBX 2026:
Code:
wget https://filedn.com/lBgbGypMOdDm8PWOoOiBR7j/IncrediblePBX2026/IncrediblePBX2026-raspi.sh
chmod +x IncrediblePBX2026-raspi.sh
./IncrediblePBX2026-raspi.sh
 
Last edited:
@KNERD: Agreed. And ARM devices are still a pain in the :asshole:. But there are many with old RasPi devices still lying around. Gotta say I still love their all-in-one keyboards, but they've gotten pricey, too. Almost $300...

1789310205262.png
 
Last edited:
Adding Tailscale support including IPtables Whitelist

Code:
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up
# then connect to your account with the provided browser link
/root/add-ip tailscale 100.64.0.0/10
 
Getting Started

1. Change your Time Zone with the script in /root
2. Change your FreePBX admin password with the script in /root
3. Replace SendMail with Postfix and Enable Gmail Smarthost with the script in /root
4. Update your root password when needed: passwd
5. If you downloaded the installer before noon on Sunday, 9/13, restore CDR to the living:
Code:
sed -i 's|x86_64|aarch64|' /etc/odbcinst.ini
reboot
 
Last edited:
Want the new pbxstatus app for your RasPi?
Code:
cd /usr/local/sbin
wget https://filedn.com/lBgbGypMOdDm8PWOoOiBR7j/IncrediblePBX2026/pbxstatus-raspi5
mv pbxstatus-raspi5 pbxstatus
chmod +x pbxstatus
RasPi-pbxstatus.png
 
SMS Messaging From Your Raspberry Pi 4/5 or Incredible PBX 2026 Platform

If you have a VoIP.ms DID with SMS Messaging enabled, here's how to send SMS messages from the Linux CLI.
Special thanks to Gemini for an hour's worth of AI help on this.

1. Add the sms-outbound context to the end of /etc/asterisk/extensions_custom. conf:
Code:
[sms-outbound]
 exten => _X.,1,NoOp(Outbound PJSIP SMS Routing Framework)
 exten => _X.,n,Answer()
 exten => _X.,n,Set(MESSAGE(body)=${SMS_BODY})
 exten => _X.,n,Set(ACTUAL_FROM="SMS" <sip:${SMSROUTING_DID}@${SMSROUTING_POP}>)
 exten => _X.,n,Set(ACTUAL_TO=pjsip:VoIPms-Registered/sip:${EXTEN}@${SMSROUTING_POP})
 exten => _X.,n,MessageSend(${ACTUAL_TO},${ACTUAL_FROM})
 exten => _X.,n,NoOp(Final SMS Dispatch State: ${MESSAGE_SEND_STATUS})
 exten => _X.,n,Hangup()

2. Reload your dialplan: asterisk -rx dialplan reload

3. In your /root folder, create a send-sms script:
Code:
#!/bin/bash

# Ensure destination number and message body are provided
if [ -z "$1" ] || [ -z "$2" ]; then
    echo "Usage: send-sms [destination_number] \"Your message here\""
    exit 1
fi

DST_NUM=$(echo "$1" | tr -cd '0-9')
SMS_BODY="$2"

if [ ${#DST_NUM} -lt 10 ]; then
    echo "Error: Destination number must be at least 10 digits."
    exit 1
fi

# Fetch active module settings from FreePBX database
SMS_DID=$(mysql -u root -ppassw0rd -N -B -e "SELECT data FROM asterisk.module_xml WHERE id='sr_DID';" 2>/dev/null)
SMS_POP=$(mysql -u root -ppassw0rd -N -B -e "SELECT data FROM asterisk.module_xml WHERE id='sr_POP';" 2>/dev/null)

# Fallbacks if database returns empty or null... plug in your VoIP.ms DID below
if [ -z "$SMS_DID" ] || [ "$SMS_DID" = "NULL" ]; then
    SMS_DID="8431234567"
fi

if [ -z "$SMS_POP" ] || [ "$SMS_POP" = "NULL" ]; then
    SMS_POP="atlanta2.voip.ms"
fi

# Push variables into Asterisk global memory so [sms-outbound] context evaluates properly
asterisk -rx "core set global SMSROUTING_DID ${SMS_DID}" >/dev/null 2>&1
asterisk -rx "core set global SMSROUTING_POP ${SMS_POP}" >/dev/null 2>&1

TMP_FILE="/tmp/sms_$(date +%s)_$RANDOM.call"
SPOOL_DIR="/var/spool/asterisk/outgoing"

cat << EOF > "$TMP_FILE"
Channel: Local/${DST_NUM}@sms-outbound
Context: sms-outbound
Extension: ${DST_NUM}
Priority: 1
Archive: Yes
Set: SMS_BODY=${SMS_BODY}
Set: SMSROUTING_DID=${SMS_DID}
Set: SMSROUTING_POP=${SMS_POP}
EOF

chown asterisk:asterisk "$TMP_FILE"
chmod 660 "$TMP_FILE"
mv "$TMP_FILE" "$SPOOL_DIR/"

echo "Message spooled successfully to destination: ${DST_NUM}"

4. Issue command: chmod +x send-sms

5. Test things out: ./send-sms 10-DIGIT-DEST-FAX# "Here is a test message"
 
Last edited:
Thanks for all of this. I still tinker with IPBX on my Pi4 (Purchased for, I think, $35 at MicroCenter), so maybe I will update it to this so I can somewhat future-proof it and keep it for posterity. :)
 
Get 3CX - Absolutely Free!

Link up your team and customers Phone System Live Chat Video Conferencing

Hosted or Self-managed. Up to 10 users free forever. No credit card. Try risk free.

3CX
A 3CX Account with that email already exists. You will be redirected to the Customer Portal to sign in or reset your password if you've forgotten it.
Back
Top