Szukaj

Instalacja FreePbx 16 na Debianie 12 w oparciu o Asteriska 18

Instalacja FreePbx 16 na Debianie 12 w oparciu o Asteriska 18

FreePBX to potężna platforma do zarządzania centralą telefoniczną, oferująca szereg funkcji, elastyczność w dostosowywaniu, a także bogate możliwości integracji. Dzięki interfejsowi webowemu, konfiguracja i zarządzanie systemem staje się intuicyjne nawet dla osób nieposiadających specjalistycznej wiedzy z zakresu telekomunikacji.

Pokażemy, jak zainstalować ją na stabilnej, bezpiecznej i szeroko używanej bezpłatnej dystrybucji systemu operacyjnego Debian. Wykorzystamy też znakomity silnik PBX, który zapewnia nie tylko niezawodność, ale także nowoczesne funkcje zgodne z najnowszymi standardami VoIP. Oczywiście chodzi o również bezpłatny Asterisk.

Spis treści

1) Przygotowanie środowiska

Do instalacji Debiana proponuję wykorzystać wirtualną maszynę stworzoną na proxmoxie. Jeżeli nie miałeś jeszcze doczynienia z tym środowiskiem do wirtualizacji zajrzyj na naszego bloga i spróbuj samodzielnie zainstalować i skonfigurować proxmoxa. W innym poście opisujemy jak zainstalować przykładowego Linuxa na takim środowisku. Zachęcam Cię też do przejrzenia opisu instalacji Asteriska 20 na Debianie 12 oraz do zwrócenia uwagi na to jak rozwiązać ewentualny problem z biblioteką libasteriskssl lub libasteriskpj

Po zasadniczej instalacji systemu operacyjnego dobrą praktyką jest jego upgrade i aktualizacja. Mamy dzięki temu pewność, że korzystamy z najnowszych wersji aktualizacji i poprawek. Dzięki temu podnosimy poziom bezpieczeństwa i niezawodności naszego środowiska.

				
					apt update
apt upgrade
				
			

Po standardowej instalacji systemu Debian mamy już w pakiecie przydatnie narzędzia takie jak nano, wget i tar. Doinstalujemy sobie jeszcze na nasze potrzeby pakiet curl.

				
					apt install curl
				
			

Do przechowywania pakietów instalacyjnych używam dedykowanej do tego lokalizacji jaką jest katalog /usr/src tam też ściągnę odpowiednią wersję Asteriska i ja rozpakuję. Chociaż moglibyśmy ściągnąć najnowszą wersję 20 to jednak na stronie FreePBX widzimy, że nie jest ona jeszcze wspierana oficjalnie. Pozbędę się spakowanego pliku i przejdę do katalogu, gdzie będę miał już dostęp do zasadniczego instalatora.

				
					cd /usr/src/
wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz
tar -zxvf asterisk-18-current.tar.gz
rm asterisk-18-current.tar.gz
cd asterisk-18.*
				
			

2) Instalacja Asteriska

Najpierw zainstalujemy niezbędne zależności i komponenty wymagane przez Asteriska. Ułatwi nam to dołączony do instalatora skrypt, który teraz uruchomimy. Gdy pojawi się okno do wpisania kodu kraju, w którym będziemy używać naszego systemu, wpiszmy 48 (dla Polski)

				
					contrib/scripts/install_prereq install
				
			

Zalecam uruchomienie jeszcze jednego przygotowanego skryptu umożliwiającego potem obsługę nagrań w formacie mp3.

				
					contrib/scripts/get_mp3_source.sh
				
			

Kolejnym niezbędnym krokiem jest konfiguracja zasadniczego instalatora i przygotowanie odpowiednich plików, które dostosują Asteriska do naszej maszyny i systemu operacyjnego. 

				
					./configure
				
			

Poprawne zakończenie działania konfiguratora zaowocuje wyświetleniem logo Asteriska podobnego do tego poniżej.

Przed skompilowaniem oprogramowania na potrzeby FreePBX dodamy wymagane komponenty. Poniższe polecenie da nam graficzny dostęp do menu w którym, po pierwsze: dodamy obsługę formatu mp3 i kanału obsługującego komunikację przy użyciu protokołu H.323 (chan_ooh323)

				
					make menuselect
				
			

Po drugie w menu Applications należy dodać aplikację app_macro i po trzecie dodać kilka pakietów z muzyką systemową. (Core Sound Packages: EN-WAV, EN-ULAW, EN-ALAW, EN-GSM, EN-G729, EN-G722, EN-SLN16; Music On Hold File Packages: OPSOUND-WAV, OPSOUND-ULAW, OPSOUND-ALAW, OPSOUND-GSM, OPSOUND-G729, OPSOUND-G722, OPSOUND-SLN16; Extras Sound Packages: EN-WAV, EN-ULAW, EN-ALAW, EN-GSM, EN-G729, EN-G722,  EN-SLN16). Dodawanie pakietów z muzyką systemową można ograniczyć do jednego lub dwóch kodeków. Im więcej ich załadujemy, tym bardziej zaoszczędzimy zasobów systemu, gdy będziemy korzystać z wielu różnych plików dźwiękowych.

PODPOWIEDŹ

Zamiast używać graficznego interfejsu i ręcznie wybierać dodatkowe moduły i muzykę można wykonać poniższe polecenie:

				
					make menuselect.makeopts \
&& menuselect/menuselect --enable CORE-SOUNDS-EN-WAV CORE-SOUNDS-EN-ULAW CORE-SOUNDS-EN-ALAW CORE-SOUNDS-EN-GSM CORE-SOUNDS-EN-G729 CORE-SOUNDS-EN-G722 CORE-SOUNDS-EN-SLN16 \
&& menuselect/menuselect --enable MOH-OPSOUND-WAV MOH-OPSOUND-ULAW MOH-OPSOUND-ALAW MOH-OPSOUND-GSM MOH-OPSOUND-G729 MOH-OPSOUND-G722 MOH-OPSOUND-SLN16 \
&& menuselect/menuselect --enable EXTRA-SOUNDS-EN-WAV EXTRA-SOUNDS-EN-ULAW EXTRA-SOUNDS-EN-ALAW EXTRA-SOUNDS-EN-GSM EXTRA-SOUNDS-EN-G729 EXTRA-SOUNDS-EN-G722 EXTRA-SOUNDS-EN-SLN16 \
&& menuselect/menuselect --disable BUILD_NATIVE --enable format_mp3 --enable chan_ooh323 --enable app_macro
				
			

Upewnij się mimo wszystko, że każda z tych opcji została zaznaczona wywołując make menuselect

Kolejne polecenia skompilują nam Asteriska, dokonają jego instalacji, wygenerują przykładowe pliki konfiguracyjne oraz pliki startowe.

				
					make
make install
make samples
make config
				
			

Opcjonalnie na koniec można wykonać jeszcze jedno polecenie, które pomaga systemowi operacyjnemu skonfigurować i zarządzać bibliotekami współdzielonymi. Przeszuka ono standardowe lokalizacje, w których system przechowuje biblioteki współdzielone i zaktualizuje informacje o nich w bazie danych, dzięki czemu system będzie mógł efektywniej je odnaleźć podczas wykonywania programów.

				
					ldconfig
				
			

3) Konfiguracja Asteriska

Teraz skonfigurujemy Asteriska pod konkretne rozwiązanie jakim jest platforma telefoniczna FreePBX.

Najpierw stworzymy dedykowaną grupę i użytkownika asterisk. Jego katalogiem domowym będzie /var/lib/asterisk

				
					groupadd asterisk
useradd -r -d /var/lib/asterisk -g asterisk asterisk
				
			

Następnie dodamy użytkownika do grup audio i dialout. Grupa audio ma uprawnienia związane z obsługą dźwięku, natomiast grupa dialout ma uprawnienia związane z dostępem do urządzeń do obsługi połączeń (na przykład modemy). Dodanie użytkownika asterisk do tych grup jest potrzebne, aby umożliwić mu dostęp do pewnych funkcji systemu, związanych z obsługą dźwięku i połączeń.

				
					usermod -aG audio,dialout asterisk
				
			

Ustawimy też użytkownika asterisk i grupę asterisk jako właściciela katalogów używanych przez system telefoniczny.

				
					chown -R asterisk:asterisk /etc/asterisk
chown -R asterisk:asterisk /var/{lib,log,spool}/asterisk
chown -R asterisk:asterisk /usr/lib/asterisk
				
			

W dwóch plikach konfiguracyjnych Asteriska ustawimy naszego użytkownika asterisk jako domyślnego na którym będzie uruchamiany sam system Asterisk. Należy odkomentować poniższe wiersze do stanu pokazanego poniżej: 

				
					nano /etc/default/asterisk
				
			
				
					AST_USER="asterisk"
AST_GROUP="asterisk"
				
			
				
					nano /etc/asterisk/asterisk.conf
				
			
				
					runuser = asterisk
rungroup = asterisk
				
			

Na koniec tej części wystartujemy Asteriska dodamy go do autostartu i zalogujemy się testowo do konsoli.

				
					systemctl restart asterisk
systemctl enable asterisk
asterisk -rvvv
				
			

Jeżeli po uruchomieniu Asteriska zobaczymy trochę ostrzeżeń i błędów związanych z ładowaniem modułów, podobnych do tych poniżej nie jest to ważny problem, którym trzeba było się teraz zająć.

W pliku modules.conf można wyłączyć opcję autoload = yes i ładować moduły ręcznie. 

				
					nano /etc/asterisk/modules.conf
				
			

Można też w trakcie polecenia make menuselect (punkt 2) odznaczyć niepotrzebne moduły, na przykład te widoczne na zrzucie ekranu powyżej. 

4) Instalacja i konfiguracja bazy danych

Do prawidłowego działania FreePBX wymaga bazy danych. Zainstalujemy instancję bazy MariaDB.

				
					apt install mariadb-server mariadb-client
				
			

Następnie uruchomimy skrypt zabezpieczający nam środowisko bazodanowe. Będzie wymagał kilku interakcji z nami. Poprosi nas o hasło, którego nie wpisujemy, ponieważ jest puste (klikamy Enter) Odpowiadamy n (nie) na kolejne pytanie a potem Y (tak) aby ustawić hasło roota i wpisujemy je w kolejnym kroku. Upewnijmy się, że będzie na prawdę bezpieczne i je zapamiętamy. Zgadzamy się na zablokowanie anonimowych użytkowników oraz zdalnego dostępu. Usuwamy testową bazę i przeładowujemy uprawnienia.

				
					/usr/bin/mysql_secure_installation
				
			

Poniższe polecenie pokaże nam czy baza danych została poprawnie zainstalowana pokazując nam jej wersję.

				
					mysql -V
				
			

5) Instalacja Node.js

Node.js to kolejny komponent, którego wymaga FreePBX do właściwej interakcji ze stroną internetową. Instalator wymaga niewielkiej interakcji z użytkownikiem, więc po uruchomieniu klikamy Y. Instalujemy też menedżera pakietów dla środowiska Node.js, czyli npm. Bez tego nasza strona www by działała, ale dostawalibyśmy bardzo dużo błędów i nie moglibyśmy na przykład przeładować konfiguracji FreePBX.

				
					apt install nodejs npm
				
			

Poniższe polecenie pokaże nam czy Node.js został poprawnie zainstalowany pokazując nam jego wersję.

				
					node -v
				
			

6) Instalacja i konfiguracja Apache

Instalacja apache jest niezbędna do działania FreePBX. Ten instalator również wymaga niewielkiej interakcji z administratorem więc w pewnym momencie po prostu klikamy Y

				
					apt install apache2
				
			

Dobrą praktyką jest zachowanie oryginalnych plików konfiguracyjnych przed ich modyfikacją. Utworzymy więc kopię pliku apache2.conf i zajrzymy w najbardziej interesujące nas miejsce ukazane na wycinku poniżej.

				
					cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_backup
nano /etc/apache2/apache2.conf
				
			

Warto zwrócić uwagę, że informacje o użytkowniku musimy zmienić w innym pliku, który przechowuje wartości zmiennych: /etc/apache2/envvars . Dokonajmy więc tam niezbędnych zmian. Należy wprowadzić naszego użytkownika asterisk. Odpowiedni fragment tego pliku będzie wyglądał następująco:

				
					cp /etc/apache2/envvars /etc/apache2/envvars.backup
nano /etc/apache2/envvars
				
			
				
					export APACHE_RUN_USER=asterisk
export APACHE_RUN_GROUP=asterisk
				
			

W głównym pliku konfiguracyjnym /etc/apache2/apache2.conf musimy zastąpić wszystkie wystąpienia tekstu AllowOverride None tekstem AllowOverride All . Umożliwi to FreePBXowi elastyczną konfigurację serwisu webowego.  Można to zrobić edytując plik ręcznie, ale bardziej eleganckie jest wykorzystanie polecenia sed do czego zachęcam.

				
					sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
				
			

Na koniec tej części musimy jeszcze usunąć plik index.html

				
					rm -f /var/www/html/index.html
				
			

7) Instalacja PHP

W naszym systemie jest już zainstalowany php, ale w wersji 8.x Niestety FreePBX nie obsługuje jeszcze tej wersji, więc będziemy musieli przejść do wersji wspieranej przez naszą docelową aplikację, czyli 7.4. Jest to oczywiście obarczone pewnym ryzykiem związanym z bezpieczeństwem, ale nie możemy na to nic poradzić. Stworzymy nowy plik repozytorium php.list dla starszej wersji php i uzupełnimy go poniższą zawartością. Dodatkowo sprawdzimy jaką nazwę kodową ma nasz system Debian (w naszym przypadku to bookworm)
				
					lsb_release -sc
nano /etc/apt/sources.list.d/php.list
				
			
				
					deb https://packages.sury.org bookworm main
				
			
PODPOWIEDŹ

Zauważyliście z pewnością jak bardzo lubię eleganckie i skondensowane polecenia więc i tutaj tworzenie repozytorium można załatwić jedną komendą, oto ona:

				
					sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
				
			

Do poprawnego działania repozytorium potrzebujemy jeszcze odpowiedni klucz GPG, więc ściągniemy go i dodamy do naszego systemu za pomocą narzędzia apt-key. Oczywiście wszystko w jednym poleceniu.

				
					wget -qO - https://packages.sury.org/php/apt.gpg | apt-key add -
				
			

Po wykonaniu tego polecenia otrzymamy ostrzeżenie typu Warning: apt-key is deprecated Możemy je zignorować. Nie będziemy w tym przypadku korzystać z nowego sposobu zarządzania kluczami.

UWAGA

Jeżeli od razu spróbowalibyśmy zainstalować starszą wersję php otrzymamy błąd mówiący, że tamta wersja jest niedostępna. Musimy pamiętać o tym, aby najpierw zaktualizować listę dostępnych w naszym systemie pakietów.

				
					apt update
				
			

Teraz możemy zainstalować starszą wersję php oraz niezbędne moduły i pakiety, które są wymagane przez twórców FreePBX.

				
					apt install php7.4
apt install libapache2-mod-php7.4 php7.4-{cgi,common,curl,mbstring,gd,mysql,gettext,bcmath,zip,xml,imap,json,snmp,fpm}
				
			

Musimy jeszcze zmienić jeden wpis w dwóch plikach konfiguracyjnych odpowiadający za rozmiar ściąganych plików.

				
					sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/7.4/apache2/php.ini
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/7.4/cli/php.ini
				
			

Na koniec musimy jeszcze włączyć moduł Apache o nazwie rewrite. Moduł ten umożliwia korzystanie z funkcji przepisywania adresów URL (URL rewriting) w serwerze Apache. Aby wszystko działało, jak trzeba restartujemy serwis apache.

				
					a2enmod rewrite
systemctl restart apache2
				
			

8) Instalacja FreePBX

Nadszedł w końcu czas na zainstalowanie samego FreePBX. Ze strony producenta ściągniemy i rozpakujemy oprogramowanie do naszego katalogu ze źródłami czyli /usr/src

				
					cd /usr/src
wget https://mirror.freepbx.org/modules/packages/freepbx/freepbx-16.0-latest.tgz
tar -zxvf freepbx-16.0-latest.tgz
rm freepbx-16.0-latest.tgz
				
			

Przejdźmy teraz do katalogu z plikami instalacyjnymi i sprawdźmy czy nasz FreePBX może komunikować się z Asteriskiem.

				
					cd freepbx/
./start_asterisk start
				
			

Komunikacja jest poprawna, możemy więc uruchomić zasadniczego instalatora. Mam nadzieję, że hasło do bazy danych jakie wpiszesz będzie bardziej skomplikowane, niż to którego użyłem tutaj w celach testowych na potrzeby tego artykułu. (ustawialiśmy je w punkcie 4)

				
					./install -n --dbuser root --dbpass "SQLPa$$w0rd"
				
			

Brawo! FreePBX został zainstalowany! Wykonajmy jeszcze prewencyjnie reboot całej maszyny.

				
					reboot
				
			

9) Konfiguracja FreePBX

Teraz możemy zalogować się do graficznego interfejsu FreePBX przez przeglądarkę www. Wejdź na stronę wpisując adres IP pod jakim masz swój system.

				
					http://<ip address>/admin/config.php
				
			

Uzupełnij według swojego uznania dane takie jak nazwa i hasło administratora, e-mail dla powiadomień i identyfikator systemu. Kliknij Setup System

Na kolejnej stronie kliknij FreePBX Administration i wpisz username oraz password.

Na kolejnej stronie wybierz język zapowiedzi głosowych i język systemu.

Po tej krótkiej wstępnej konfiguracji otrzymujemy już gotowy panel administracyjny. Kliknijmy Apply Config, aby zapisać w Asterisku nasze pliki konfiguracyjne. Komunikat reloading zniknie po wykonaniu tej operacji. Jak widać mamy tu zakładkę System Overview a w niej możemy znaleźć potencjalne problemy i ostrzeżenia. Tym razem jest informacja o brakującym module SOX.

W tym przypadku możemy po prostu z powrotem przejść do naszej sesji ssh i doinstalować ten brakujący moduł.

				
					apt install sox
				
			

Jeżeli brakuje Ci nadal jakichś aplikacji bądź powiązań wybierz z Menu Admin -> Module Admin. Tam kliknij Check Online a następnie Download All i Process. Zobaczysz okienko ukazujące proces instalacji.

Kliknij Return. Wrócisz do głównego panelu. Tam jeszcze zatwierdź przeprowadzone operacje przyciskiem Apply Settings. Od tej chwili możesz cieszyć się w pełni wyposażonym i funkcjonalnym środowiskiem centrali telefonicznej. 

Jeżeli chciałbyś monitorować wszystko co dzieje się na Twojej centrali wypróbuj nasze autorskie oprogramowanie VOIPERO

Instalacja i konfiguracja zajmuje kilka minut a system jest obecnie udostępniany całkowicie za darmo.

Przeczytaj co potrafi nasz system VOIPERO w zakresie monitorowania na żywo i raportowania systemów VoIP opartych na Asterisku.

Share this post

Masz pytania lub potrzebujesz oferty?

Skontaktuj się z naszym doradcą.

Popularne wpisy

Powiązane posty

Projekt wystartował!

Monitorowanie i raportowanie Twojego serwera VoIP