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
|
||||
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)
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
---
|
||||
|
||||
## 📘 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