Raspberry Pi jako domowy serwer Jabbera

Każdy, kto ma wykupioną własną domenę, może mieć w niej własny serwer Jabber/XMPP do komunikowania się z innymi osobami. Jeżeli mamy VPSa to sprawa jest na prawdę prosta, bo wystarczy około 5 minut, aby zainstalować na nim dowolny serwer Jabber. Osoby, które mają jedynie hosting mogą skorzystać z rozwiązań jakie oferuje m.in. Tigase czy Hosted.IM. Jak można się domyśleć takie rozwiązania mają swoje wady i zalety. Koszt utrzymania VPSa jest dość duży i mając w swojej domenie jedynie bloga jest to po prostu nieopłacalne. Jeżeli chodzi o Tigase to też nie jest kolorowo, bo ma czasem problemy z połączeniem oraz wizytówkami. Podobnie jest z hosted.im, gdzie niby wszystko działa ale za transfery plików trzeba już zapłacić bagatela 8-10euro/miesiąc, nie wspominając już o tym, że wspiera na prawdę mało XEP’ów. To co w takim razie nam pozostaje?

Bardzo długo się zastanawiałem oraz czytałem sporo artykułów nt. prostego i w miarę taniego rozwiązania, aż wreszcie natrafiłem na opis stawiania serwera Jabber na Raspberry Pi. Szybka kalkulacja kosztów i masa testów na wirtualnej maszynie zaowocowała decyzją – kupuję! Wybrałem model B rev 2.0, czyli 512MB ramu, karta Ethernet i dwa porty usb.

Obecnie mój Raspberry Pi stoi pod kontrolą Raspbiana (specjalnie zoptymalizowany Debian) z zainstalowanym serwerem ejabberd, który sprawia się wyśmienicie! Na początku chciałem zainstalować Prosody, lecz miałem na nim problemy z certyfikatami SSL, przez co połączenia były nieszyfrowane. Podobna sytuacja była z OpenFire, który dodatkowo zżerał więcej zasobów przez Jave i ogólnie działał mało wydajnie. Tyle słowem wstępu – w dalszej części tego artykułu znajdziecie łopatologiczny opis jak zainstalować i skonfigurować ejabberd na Raspberry Pi.

Jak zainstalować i skonfigurować ejabberd na Raspberry Pi?

Na początku, po świeżej instalacji Raspbiana, wypada zaktualizować system.

Następnie trzeba otworzyć porty, z których będzie korzystać nasz serwer Jabbera. Można to zrobić edytując iptables, lecz jest na to znacznie wygodniejsza forma. Instalujemy więc ufw znany z Ubuntu.

Instalacja trwa parę chwil, jak już się skończy otwieramy porty dla serwera XMPP oraz połączeń SSH i domyślnych webowych.

Proste, prawda? Pozostało nam tylko uruchomić naszego firewall’a.

Porty otwarte ale to nie wystarczy do działania serwera w naszej sieci domowej. Po pierwsze, trzeba ustawić statyczny lokalny adres IP dla Raspberry Pi. Można to zrobić w ustawieniach systemu lub tak jak ja w ustawieniach routera – zwyczajnie dla adresu MAC karty Ethernet rezerwujemy lokalny adres IP. Po drugie, na wybrany przez nas lokalny adres IP ustawiamy forward portów w ustawieniach routera. Robimy to dla 4 portów TCP: 5222, 5223, 5269, 7777. Ponadto należy poprawnie skonfigurować naszą domenę dodając rekordy SRV, które będą wskazywać na nasz publiczny adres IP w sieci domowej.

Wracamy do malinki i instalujemy ejabberd.

Kolejna sprawa to utworzenie konta admina.

Po utworzeniu konta będziemy w stanie zalogować się do webowego intefejsu ejabberd (jako login wpisując nasz_login@localhost).

Nasz serwer już działa, pozostaje go tylko poprawnie skonfigurować!

Plik ustawień jest bardzo długi, pokażę Wam jedynie te rzeczy, które będą niezbędne do działania serwera. Na początek musimy zdefiniować administratora, więc szukamy:

i zmieniamy na:

Następnie musimy zdefiniować naszą domenę, szukamy:

i zmieniamy na np:

Kolejna rzecz do ustawienia, to serwer proxy, który obecnie nie będzie działać za NAT. Szukamy w pliku konfiguracyjnym frazy „mod_proxy65” i ustawiamy proxy w następujący sposób:

Kolejną ważną rzeczą jest wskazanie prawidłowego certyfikatu SSL dla naszej domeny. Jeżeli takiego jeszcze nie macie to od razu odradzam tworzenie certyfikatu self-signed, gdyż można uzyskać za darmo certyfikat od StartSSL. Mając już certyfikat (w jednym pliku kolejno klucz prywatny + certyfikat domeny + Class 1 Intermediate Server CA + StartCom Root CA) umieszczamy go w np. /etc/ejabberd/beherit.pl.pem i definiujemy w ustawieniach (szukając frazy „domain_certfile”):

Uff, mamy już za sobą konfigurację! Pozostaje jedynie restart serwera.

To wszystko, serwer działa i można z niego bez problemu korzystać. Aby stworzyć nowe konto należy zalogować się do webowego interfejsu lub zezwolić na rejestrację bezpośrednio z komunikatorów – jak to zrobić zostawiam już Wam, gdyż nie jest to zbyt trudne Oczywiście dodatkowo można wyłączyć inne zbędne rzeczy np. domyślnie włączony transport IRC.

Jak zauważycie ejabberd zużywa bardzo mało zasobów, więc na pewno można jeszcze w jakiś sposób wykorzystać nasze Raspberry Pi. Zapewne coś jeszcze wymyślę i z pewnością się z Wami tym podzielę.

4 komentarze do wpisu „Raspberry Pi jako domowy serwer Jabbera

  1. Na pewno sprzęt zrobił większą karierę niż ktokolwiek się spodziewał. Mam go od pół roku – pojawiły się akcesoria, ematador.pl ma choćby klawiaturkę, karty pamięci – możliwości sprzętu można mocno rozszerzyć.

Dodaj komentarz