Prosody XMPP Serwer

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/