Update README.md
This commit is contained in:
parent
80d94ca886
commit
cf975762fc
1 changed files with 243 additions and 2 deletions
245
README.md
245
README.md
|
|
@ -1,2 +1,243 @@
|
||||||
# FreePBX---Tutorial
|
# ☎️ FreePBX – Complete IP PBX System (Asterisk + GUI)
|
||||||
This project provides a full step-by-step guide to install, configure, and optimize FreePBX with Asterisk on Ubuntu Server. It focuses on performance, security, TLS/SRTP encryption, and QoS. Ideal for ISPs or enterprise VoIP systems, including Mikrotik integration and remote SIP/VPN setups.
|
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📘 Overview
|
||||||
|
|
||||||
|
This repository documents the **entire process of installing, configuring, and optimizing FreePBX**, a full-featured web interface for **Asterisk**, enabling simple and efficient management of extensions, trunks, IVRs, queues, and call reports.
|
||||||
|
|
||||||
|
The goal is to provide a **practical and functional guide**, focused on:
|
||||||
|
|
||||||
|
- 🚀 **Performance and stability**
|
||||||
|
- 🔒 **Security (Fail2Ban, TLS, SRTP, strong passwords)**
|
||||||
|
- 🌐 **Support for local and remote networks (NAT, IPv6, VPN)**
|
||||||
|
- 🧩 **Integration with professional routers (e.g., Mikrotik)**
|
||||||
|
- 🏢 **Best practices for enterprise and ISP environments**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚙️ Installation Guide
|
||||||
|
|
||||||
|
### 1️⃣ Update the System
|
||||||
|
```bash
|
||||||
|
sudo apt update && sudo apt upgrade -y
|
||||||
|
sudo reboot
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2️⃣ Install Basic Dependencies
|
||||||
|
```bash
|
||||||
|
sudo apt install -y wget curl nano tar gnupg2 cron git net-tools
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3️⃣ Install Asterisk
|
||||||
|
```bash
|
||||||
|
cd /usr/src
|
||||||
|
sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz
|
||||||
|
sudo tar zxvf asterisk-18-current.tar.gz
|
||||||
|
cd asterisk-18*/
|
||||||
|
|
||||||
|
# Install build dependencies
|
||||||
|
sudo contrib/scripts/install_prereq install
|
||||||
|
|
||||||
|
# Configure and compile
|
||||||
|
./configure
|
||||||
|
make menuselect
|
||||||
|
make -j$(nproc)
|
||||||
|
sudo make install
|
||||||
|
sudo make samples
|
||||||
|
sudo make config
|
||||||
|
sudo ldconfig
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4️⃣ Install FreePBX
|
||||||
|
```bash
|
||||||
|
cd /usr/src
|
||||||
|
sudo git clone https://github.com/FreePBX/framework.git freepbx
|
||||||
|
cd freepbx
|
||||||
|
sudo ./start_asterisk start
|
||||||
|
sudo ./install -n
|
||||||
|
```
|
||||||
|
|
||||||
|
After installation, access the web panel at:
|
||||||
|
|
||||||
|
```
|
||||||
|
http://YOUR_IP/admin
|
||||||
|
```
|
||||||
|
|
||||||
|
On first launch, FreePBX will prompt you to create:
|
||||||
|
- Admin username
|
||||||
|
- Password
|
||||||
|
- Recovery email
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌐 Network Configuration
|
||||||
|
|
||||||
|
Go to **Settings → Asterisk SIP Settings**
|
||||||
|
|
||||||
|
Configure:
|
||||||
|
- **External Address:** your public IP
|
||||||
|
- **Local Networks:** your internal subnets
|
||||||
|
- **NAT:** enabled
|
||||||
|
- **RTP Range:** 10000–20000
|
||||||
|
|
||||||
|
Save and apply changes.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📡 SIP/PJSIP Protocol Configuration
|
||||||
|
|
||||||
|
Default channel: **PJSIP**
|
||||||
|
|
||||||
|
| Protocol | Port | Type | Status |
|
||||||
|
|-----------|------|------|--------|
|
||||||
|
| UDP | 5060 | SIP | ✅ Active |
|
||||||
|
| TLS | 5061 | SIP | 🔐 Enabled |
|
||||||
|
| SRTP | — | Media | 🔒 Enabled |
|
||||||
|
|
||||||
|
**Other settings:**
|
||||||
|
- Rewrite Contact → ✅ Enabled
|
||||||
|
- RTP Symmetric → ✅ Enabled
|
||||||
|
- Force rport → ✅ Enabled
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔒 Security & Protection
|
||||||
|
|
||||||
|
### 🧱 Fail2Ban
|
||||||
|
```bash
|
||||||
|
sudo apt install fail2ban -y
|
||||||
|
sudo systemctl enable fail2ban
|
||||||
|
sudo systemctl start fail2ban
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔥 Firewall
|
||||||
|
|
||||||
|
Block everything and allow only essential ports:
|
||||||
|
|
||||||
|
| Port | Protocol | Service |
|
||||||
|
|------|-----------|----------|
|
||||||
|
| 22/tcp | SSH | Administration |
|
||||||
|
| 80/tcp, 443/tcp | HTTP/HTTPS | Web Interface |
|
||||||
|
| 5060/udp, 5061/udp | SIP/PJSIP | Voice |
|
||||||
|
| 10000–20000/udp | RTP | Media |
|
||||||
|
|
||||||
|
### 🔑 Strong Passwords
|
||||||
|
Use passwords with **12+ characters**, mixing uppercase, lowercase, numbers, and symbols.
|
||||||
|
|
||||||
|
### 🔐 TLS & SRTP
|
||||||
|
Enable secure calls compatible with modern softphones such as **Zoiper** and **Linphone**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎚️ Quality of Service (QoS)
|
||||||
|
|
||||||
|
Prioritize voice traffic on Mikrotik routers:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
/ip firewall mangle
|
||||||
|
add chain=prerouting protocol=udp port=5060,5061,10000-20000 action=mark-packet new-packet-mark=voip passthrough=yes
|
||||||
|
|
||||||
|
/queue tree
|
||||||
|
add name="VOIP" parent=global packet-mark=voip priority=1
|
||||||
|
```
|
||||||
|
|
||||||
|
This ensures maximum priority for VoIP traffic, reducing latency and jitter.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚙️ General Optimizations
|
||||||
|
|
||||||
|
- Disable unused FreePBX modules.
|
||||||
|
- Use essential codecs only: **alaw**, **ulaw**, **g729**, **opus**.
|
||||||
|
- Configure **SRV Records** in DNS for redundancy.
|
||||||
|
- Enable **IPv6** when available.
|
||||||
|
- Set up **automatic backups**: *Admin → Backup & Restore*.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Monitoring and Logs
|
||||||
|
|
||||||
|
Useful commands:
|
||||||
|
```bash
|
||||||
|
asterisk -rvvvvv
|
||||||
|
pjsip show endpoints
|
||||||
|
pjsip show registrations
|
||||||
|
tail -f /var/log/asterisk/full
|
||||||
|
```
|
||||||
|
|
||||||
|
Web GUI reports:
|
||||||
|
- **Reports → Asterisk Info**
|
||||||
|
- **Reports → CDR Reports**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Updates & Maintenance
|
||||||
|
|
||||||
|
### Update FreePBX Modules
|
||||||
|
```bash
|
||||||
|
fwconsole ma upgradeall
|
||||||
|
fwconsole reload
|
||||||
|
fwconsole restart
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update the System
|
||||||
|
```bash
|
||||||
|
sudo apt update && sudo apt upgrade -y
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📈 Additional Recommendations
|
||||||
|
|
||||||
|
- 🧠 Set up a **local recursive DNS** (e.g., PowerDNS) for faster lookups.
|
||||||
|
- 🧩 Use **RPKI (Routinator or Krill)** to validate BGP prefixes.
|
||||||
|
- 📡 ISPs should **separate voice and data VLANs**.
|
||||||
|
- 🔐 Use **WireGuard or OpenVPN** for remote extensions.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 👨💻 Author & Credits
|
||||||
|
|
||||||
|
**Author:** Kauan Pollicarpo Pereira
|
||||||
|
**Project:** Complete VoIP Infrastructure – FreePBX + Asterisk
|
||||||
|
**License:** MIT
|
||||||
|
**Base System:** Ubuntu Server / Debian
|
||||||
|
**Date:** November 2025
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 Acknowledgements
|
||||||
|
|
||||||
|
This project is based on practical experience and official documentation from:
|
||||||
|
|
||||||
|
- [FreePBX Official Docs](https://www.freepbx.org/support/documentation/)
|
||||||
|
- [Asterisk Project](https://wiki.asterisk.org/)
|
||||||
|
- [VoIP Community & Mikrotik Wiki](https://wiki.mikrotik.com/wiki/Manual:VOIP)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧩 License
|
||||||
|
|
||||||
|
```text
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2025 Kauan Pollicarpo
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this documentation and associated files, to deal in the documentation
|
||||||
|
without restriction, including without limitation the rights to use, copy,
|
||||||
|
modify, merge, publish, distribute, sublicense, and/or sell copies.
|
||||||
|
```
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue