Prosody to serwer XMPP, który łączy w sobie lekkość i prostotę z potężnymi możliwościami. Wspiera wszystko, co potrzebne do sprawnego komunikowania się – od podstawowych czatów, przez grupowe dyskusje, aż po zaawansowane funkcje bezpieczeństwa. Dodatkowo, dzięki modułowej budowie, możesz łatwo dostosować serwer do swoich potrzeb.
Instalacja Prosody:
apt install prosody
Dodatkowe moduły powiadomienia itd:
apt -y install prosody-modules
Edycja pliku konfiguracyjnego:
vim /etc/prosody/prosody.cfg.lua
Podstawowe parametry do zmiany:
VirtualHost "twoja_domena.com"
ssl = {
key = "/etc/prosody/certs/twoj_cert.com.key";
certificate = "/etc/prosody/certs/twoj_cert.com.crt";
}
Ważne jest aby do plików certyfikatu XMPP miał dostęp, dlatego zmień uprawnienia:
sudo chown prosody: /etc/prosody/certs/fullchain.pem sudo chown prosody: /etc/prosody/certs/privkey.pem
Aby Twój serwer Prosody działał prawidłowo i oferował podstawowe funkcje protokołu XMPP, musisz włączyć zestaw podstawowych modułów. Oto lista rekomendowanych modułów, które powinieneś rozważyć do włączenia w swojej konfiguracji:
modules_enabled = {
"cloud_notify"; -- Powiadomienia w klientach - WAŻNE
"roster"; -- Pozwala użytkownikom zarządzać swoimi kontaktami
"saslauth"; -- Autentykacja w SASL
"tls"; -- Dodaje wsparcie dla szyfrowania TLS
"dialback"; -- Umożliwia serwerom weryfikowanie siebie nawzajem
"disco"; -- Service Discovery
"carbons"; -- Kopie wiadomości dla wielu urządzeń
"pep"; -- Publikuj i subskrybuj informacje o obecności
"private"; -- Prywatne przechowywanie danych na serwerze
"blocklist"; -- Pozwala użytkownikom blokować inne kontakty
"vcard4"; -- vCard support
"vcard_legacy"; -- Obsługa starszych wersji vCard
"limits"; -- Umożliwia ograniczanie obciążenia serwera
"groups"; -- Zarządzanie grupami użytkowników
"register"; -- Rejestracja kont przez klientów
"mam"; -- Message Archive Management; archiwizacja wiadomości
"csi_simple"; -- Simple Client State Indication
"http_upload"; -- HTTP file upload
"version"; -- Odpowiada na zapytania o wersję
"uptime"; -- Czas działania serwera
"time"; -- Umożliwia klientom zapytanie serwera o czas
"ping"; -- XMPP Ping
"admin_adhoc"; -- Komendy administracyjne
"bosh"; -- BOSH (dla połączeń HTTP)
"websocket"; -- WebSocket support
"smacks"; -- Stream Management (XEP-0198)
};
Mój plik konfiguracyjny sekcja Modules
modules_enabled = {
"cloud_notify";
"mam";
"smacks";
"pep_plus"; -- Wymaga pobrania z zewnętrznych źródeł, sprawdź https://modules.prosody.im/
"muc";
"amp";
"csi_simple";
-- Generally required
"roster"; -- Allow users to have a roster. Recommended ;)
"saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
"tls"; -- Add support for secure TLS on c2s/s2s connections
"dialback"; -- s2s dialback support
"disco"; -- Service discovery
-- Not essential, but recommended
"carbons"; -- Keep multiple clients in sync
"pep"; -- Enables users to publish their avatar, mood, activity, playing music and more
"private"; -- Private XML storage (for room bookmarks, etc.)
"blocklist"; -- Allow users to block communications with other users
"vcard4"; -- User profiles (stored in PEP)
"vcard_legacy"; -- Conversion between legacy vCard and PEP Avatar, vcard
-- Nice to have
"version"; -- Replies to server version requests
"uptime"; -- Report how long server has been running
"time"; -- Let others know the time here on this server
"ping"; -- Replies to XMPP pings with pongs
"register"; -- Allow users to register on this server using a client and change passwords
--"mam"; -- Store messages in an archive and allow users to access it
--"csi_simple"; -- Simple Mobile optimizations
-- Admin interfaces
"admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands
--"admin_telnet"; -- Opens telnet console interface on localhost port 5582
-- HTTP modules
--"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
--"websocket"; -- XMPP over WebSockets
--"http_files"; -- Serve static files from a directory over HTTP
-- Other specific functionality
"posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
--"limits"; -- Enable bandwidth limiting for XMPP connections
--"groups"; -- Shared roster support
--"server_contact_info"; -- Publish contact information for this service
--"announce"; -- Send announcement to all online users
--"welcome"; -- Welcome users who register accounts
--"watchregistrations"; -- Alert admins of registrations
--"motd"; -- Send a message to users when they log in
--"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
--"proxy65"; -- Enables a file transfer proxy service which clients behind NAT can use
}
Lista komend
Sprawdzenie konfiguracji:
prosodyctl check config
Status serwera:
systemctl status prosody
Utworzenie użytkownika:
prosodyctl adduser uzytkownika@krawaczynski.pl
Przeładowanie ustawień bez restartu serwera:
prosodyctl reload
Restart serwera:
systemctl reload prosody
Sprawdź czy serwer nasłuchuje na portach:
sudo netstat -tuln | grep -E '5222|5269'
Logi XMPP:
sudo tail -f /var/log/prosody/prosody.log
Dokumentacja https://prosody.im/doc/