Update README.md

This commit is contained in:
Kauan Pollicarpo 2025-11-05 09:47:32 -03:00 committed by GitHub
parent 80d94ca886
commit cf975762fc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

245
README.md
View file

@ -1,2 +1,243 @@
# FreePBX---Tutorial
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.
# ☎️ FreePBX Complete IP PBX System (Asterisk + GUI)
![FreePBX](https://img.shields.io/badge/FreePBX-16.0-green?style=for-the-badge&logo=asterisk)
![Asterisk](https://img.shields.io/badge/Asterisk-18-orange?style=for-the-badge&logo=voipdotms)
![Ubuntu](https://img.shields.io/badge/Ubuntu-Server-blue?style=for-the-badge&logo=ubuntu)
![License](https://img.shields.io/badge/License-MIT-lightgrey?style=for-the-badge)
![Status](https://img.shields.io/badge/Status-In%20Production-success?style=for-the-badge)
---
## 📘 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:** 1000020000
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 |
| 1000020000/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.
```