Szukaj

Bezpłatny Asterisk na platformie Google Cloud z wykorzystaniem ClouDNS

Bezpłatny Asterisk na platformie Google Cloud z wykorzystaniem ClouDNS

Któż z nas nie lubi czasami skorzystać z jakieś bezpłatnej aplikacji, darmowego serwisu internetowego albo nawet darmowej maszyny w chmurze. Tym razem trafia się gratka 3 w 1. Bezpłatny Asterisk na platformie Google Cloud z wykorzystaniem ClouDNS

Na stronie Google Cloud możesz przeczytać o całkowicie bezpłatnej instancji komputera.

Jak widać dotyczy to małej maszyny utworzonej w jednym z 3 regionów USA. Jednak wystarczy nam ona do zainstalowania i uruchomienia również bezpłatnej wersji Asteriska, a bezpłatny wariant usługi ClouDNS umożliwi nam utrzymanie widoczności naszego systemu pomimo zmian adresu IP. Zaczynamy zatem!

Spis treści

1) Tworzenie bezpłatnej instancji na Google Cloud

Przejdź do konsoli Google Cloud i wybierz z menu Compute Engine -> VM Instances i kliknij Create Instance

UWAGA: Jeżeli nie rozpocząłeś jeszcze pracy z Google Cloud przy pomocy konta rozliczeniowego, możesz je teraz założyć. Dostaniesz dodatkowo pulę pewnych darmowych środków do wykorzystania przez 90 dni. Jeżeli nie wybierzesz żadnych płatnych rozwiązań nie będziesz potem ponosił żadnych kosztów.

W Twojej nowej instancji najpierw wybierasz typ maszyny jako „e2-micro„. W okienku po prawej pojawiają się co prawda prognozowane koszty, ale nie przejmujemy się tymi informacjami, ponieważ potem okaże się, że zgodnie z wcześniejszym opisem będzie ona bezpłatna.

W sekcji Boot Disk wybieramy najnowszą stabilną wersję systemu Debian: GNU/Linux 12 (bookworm). Oczywiście można wybrac dowolny inny, Zwiększamy też pojemność dysku do 30 MB

Nadajemy przyjazną nam nazwę naszego systemu oraz wybieramy jeden z poniższych regionów, zgodnie z warunkami otrzymania bezpłatnej instancji: 

  • Oregon: us-west1
  • Iowa: us-central1
  • South Carolina: us-east1

Następnie klikamy „Create

2) Logowanie, update i upgrade

Do nowo utworzonej maszyny będziemy mogli się dostać po ssh korzystając z widniejącego przycisku SSH.  Google Cloud używa własnych kluczy SSH, które transferuje do maszyny.

Kliknij Authorize by zezwolić przeglądarce na bezpieczne połączenie z Twoją wirtualną maszyną.

Twój domyślny użytkownik, którego kluczem SSH właśnie się połączyłeś, ma uprawnienia sudo i domyslnie należy do grupy sudoers. Teraz w konsoli przejdź na konto root i wykonaj update systemu.

				
					sudo -i
apt update
				
			

Potem wykonaj ugrade systemu, klikając „y” by zgodzić się na przeprowadzenie całej operacji

				
					apt upgrade
				
			

Aby ułatwić sobie łączenie się z maszyną poprzez zewnętrznego klienta ssh np. putty dodaj swój publiczny klucz do pliku authorize_keys dla swojego użytkownika w Google Cloud.

3) Bezpłatny DNS

Czekając na wykonanie upgrade (to wolna maszyna, trwało to około 20 minut) założymy sobie darmowy DNS. Jest nam to potrzebne, ponieważ ta darmowa wersja maszyny otrzymuje co prawda publiczny adres IP, ale niestety po każdym restarcie on się zmienia. Na stronie ClouDNS mamy poszukiwany przez nas gratis. Przechodzimy zatem do stworzenia bezpłatnego wpisu i klikamy Free zone.

W polu Domain name wpisujemy przyjazną nam nazwę a w polu Enter your current IP address nasz aktualny adres IP który widoczny jest w panelu Google Cloud. Możemy też zaznaczyć od razu Activate Dynamic DNS. Na koniec kliknij Create

Za pomocą strony WhatsMyDNS  możemy sprawdzić, jak rozpropagowuje się nasz adres hotkey404-free-asterisk-gcp.cloudns.ph po całym świecie.

4) Instalacja Asteriska

Realizacja tej części na naszej darmowej maszynie zajmie nam około godziny. Cały ten proces opisany jest w innym naszym blogu więc zachęcam do przeczytania posta: Instalacja Asterisk 20 ze źródła na Debian 12 oraz wykonanie opisanych tam czynności.  Jeżeli wybierzesz inną wersję linuxa też możesz skorzystać z naszych podpowiedzi co do instalacji dla systemów UbuntuRockyCentOS 7CentOS Stream 8.

Po zasadniczej instalacji możemy też ustawić strefę czasową właściwą dla naszej fizycznej lokalizacji.

				
					timedatectl set-timezone Europe/Warsaw

				
			

5) Konfiguracja Firewalla

Jeżeli chcemy umożliwić logowanie się telefonom SIP do naszej centrali, to musimy dodać odpowiednią regułę na firewallu Google Cloud. Wybieramy menu: Firewall > Create firewall rule i tworzymy regułę allow-sip. Jej przykładowa konfiguracja jest na screenie poniżej. 

Możemy też skopiować plik rtp.conf z samples/ do katalogu roboczego Asteriska i ograniczyć w nim również porty rtp do wybranego zakresu, tutaj 10000 do 10030. Zazwyczaj nie ma potrzeby otwierać tysięcy portów, skoro taka mała maszyna nie pozwoli nawet na setki jednoczesnych połączeń.

				
					cp /etc/asterisk/samples/rtp.conf /etc/asterisk
nano /etc/asterisk/rtp.conf


				
			
				
					rtpstart=10000
rtpend=10030

				
			

6) Konfiguracja dynamicznego DNS

Co prawda nasza centrala jest już rozpoznawana w internecie po nazwie (FQDN), ale niestety po każdym pełnym wyłączeniu maszyny zmienia się adres IP, więc tracilibyśmy możliwość połączenia się po nazwie do nowego adresu IP. Serwisy typu ClouDNS umożliwiają nam odpowiednią konfigurację dynamicznego DNS. Na stronie ClouDNS kliknij w dwie przeciwstawne strzałki przy swoim darmowym wpisie, który skonfigurowaliśmy w punkcie 3 (Active Dynamic URL)

Otrzymasz gotowy skrypt do uruchamiania na Twoim systemie, aby aktualizował on wpisy w serwisie ClouDNS. Jak widzisz w Linuxie można to wykonać za pomocą polecenia wget wywołującego odpowiedni URL.

Musimy jednak pójść krok dalej i zrobić skrypt, który będzie uruchamiany po każdym pełnym wyłączeniu naszego systemu (poweroff). Mamy wtedy gwarancję niemal ciągłego dostępu do swoich usług przez określony adres FQDN. W kolejnej części opiszemy to krok po kroku.

6) Skrypt aktualizujący zmianę adresu IP

Do aktualizacji naszego adresu IP wykorzystamy nowo utworzony skrypt cloudns_update.sh

				
					nano /var/tmp/cloudns_update.sh
				
			
				
					#!/bin/bash
curl -s https://ipv4.cloudns.net/api/dynamicURL/?q=tutaj wklej zakodowaną wartość pozyskaną ze strony ClouDNS

EXTERNALIP=$(curl https://ipecho.net/plain)
sudo sed -i "s/^external_media_address =.*$/external_media_address = $EXTERNALIP/" /etc/asterisk/pjsip.conf
sudo sed -i "s/^external_signaling_address =.*$/external_signaling_address = $EXTERNALIP/" /etc/asterisk/pjsip.conf
				
			

Zawartość tego pliku obejmuje wywołanie dedykowanego linku dla usługi ClouDNS oraz odczytanie bieżącego adresu IP za pomocą usługi IPecho. Lokalna znajomość zmienionego adresu jest niezbędna dla modyfikacji konfiguracji naszego asteriska, aby zapewnić mu poprawność udostępniania usług. Dlatego skrypt zmodyfikuje również odpowiednie wpisy w pliku pjsip.conf .

Domyślnie po instalacji w pliku pjsip.conf linijki kodu, które zamierzamy zmieniać naszym skryptem są zakomentowane średnikiem. Należy je najpierw odkomentować (usunąć średnik) aby polecenie sed -i znalazło właściwy ciąg znaków do zamiany.

				
					nano /etc/asterisk/pjsip.conf
				
			

Zmian dokonujemy w dwóch linijkach

				
					external_media_address =
external_signaling_address =

				
			

Nadamy teraz uprawnienia do wykonywania dla stworzonego przez nas skryptu.

				
					chmod +x /var/tmp/cloudns_update.sh
				
			

Stworzymy teraz plik nowego serwisu, który będzie automatycznie uruchamiany przy każdym restarcie systemu.

				
					nano /etc/systemd/system/cloudns_update.service
				
			
				
					[Unit]
Description=Update my External IP on Cloudns
After=network.target

[Service]
Type=simple
ExecStart=/var/tmp/cloudns_update.sh
TimeoutStartSec=0

[Install]
WantedBy=default.target
				
			

Teraz przeładujemy usługę systemową, aby uwzględnić nowo utworzony serwis.

				
					systemctl daemon-reload
				
			

Nastęnie dodamy serwis do autostartu i go uruchomimy.

				
					systemctl enable cloudns_update.service
systemctl start cloudns_update.service
				
			

Teraz po wyłączeniu maszyny i ponownym jej uruchomieniu, zobaczymy tam nowy adres IP, a w naszym serwisie ClouDNS adres IP będzie zaktualizowany.

				
					poweroff
				
			

Maszynę startujemy z poziomu interfejsu GoogleCloud.

7) Zalogowanie konta telefonicznego

Sprawdźmy czy będziemy mogli już poprawnie zalogować przykładowe konto pjsip. Należy tylko pamiętać, aby wpisać opcjonalną nazwę: Autentication username. Wszystkie dane do logowania znajdziemy w pliku /etc/asterisk/pjsip.conf

Po chwili zobaczymy, że nasze konto telefonicznie będzie poprawnie zalogowane i dostępne.

Możesz w pełni cieszyć się swoim darmowym systemem telefonicznym. Miłej zabawy!

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