Instalacja serwera

# poldek -uvh ejabberd

Konfiguracja

Edytujemy naszym ulubionym edytorem plik /etc/jabber/ejabberd.cfg

    {acl, admin, {user, "admin"}}.
    % user z prawami administratora, dowolny login

    {acl, local, {user_regexp, ""}}.

    {access, pubsub_createnode, [{allow, all}]}.

    {access, configure, [{allow, admin}]}.

    {access, register, [{deny, all}]}.

    {welcome_message,
    {"Welcome!",
    "Welcome to Jabber.",
    "For information about Jabber visit http://jabber.org"}}.

    {registration_watchers, ["user@localhost"]}.
    % user, który będzie powiadamiany o rejestracjach do serwera jabbera

    {access, announce, [{allow, admin}]}.

    {access, c2s, [{deny, blocked},
    {allow, all}]}.

    {shaper, normal, {maxrate, 1000}}.

    {shaper, fast, {maxrate, 50000}}.

    {access, c2s_shaper, [{none, admin},
    {normal, all}]}.

    {access, s2s_shaper, [{fast, all}]}.

    {access, muc_admin, [{allow, admin}]}.

    {access, muc, [{allow, all}]}.

    {access, local, [{allow, local}]}.

    {auth_method, internal}.

    {hosts, ["localhost", "jabber.nasza_domena.pl"]}.
    % nasze hosty, które będziemy używać (zewnętrzne domeny muszą istnieć)

    {max_user_sessions, 10}.

    {language, "en"}.

    {listen,
    [{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper},
    {max_stanza_size, 65536},
    starttls, {certfile, "/etc/jabber/jabber.pem"}
    ]},
    {5223, ejabberd_c2s, [{access, c2s},
    {max_stanza_size, 65536},
    tls, {certfile, "/etc/jabber/jabber.pem"}]},
    {5269, ejabberd_s2s_in, [{shaper, s2s_shaper},
    {max_stanza_size, 131072}
    ]},
    {5348, ejabberd_service, [{access, all},
    {host, "msn.jabber.nasza_domena.pl",
    [{password, "hasło z /etc/jabber/secret"}]}]},
    {5349, ejabberd_service, [{access, all},
    {host, "gg.jabber.nasza_domena.pl",
    [{password, "hasło z /etc/jabber/secret"}]}]},
    {5347, ejabberd_service, [{access, all},
    {hosts, ["ircnet.jabber.nasza_domena.pl", "freenode.jabber.nasza_domena.pl"],
    [{password, "hasło z /etc/jabber/secret"}]}]},
    {5280, ejabberd_http, [http_poll, web_admin]}
    ]}.

    {s2s_use_starttls, true}.
    {s2s_certfile, "/etc/jabber/jabber.pem"}.
    {domain_certfile, "jabber.nasza_domena.pl", "/etc/jabber/jabber.pem"}.

    {outgoing_s2s_port, 5269}.

    {modules,
    [
    {mod_register, [{access, register}]},
    {mod_roster, []},
    {mod_privacy, []},
    {mod_adhoc, []},
    {mod_configure2, []},
    {mod_disco, []},
    {mod_stats, []},
    {mod_vcard, []},
    {mod_offline, []},
    {mod_echo, [{host, "echo.nasza_domena.pl"}]},
    {mod_private, []},
    {mod_irc, []},
    {mod_muc, [{access, muc},
    {access_create, muc},
    {access_admin, muc_admin}]},
    {mod_pubsub, [{access_createnode, pubsub_createnode}]},
    {mod_time, []},
    {mod_last, []},
    {mod_version, []}
    ]}.

Certyfikaty dla połączeń SSL/TLS

# openssl genrsa -out /etc/jabber/jabber.key 1024
# openssl req -new -x509 -days 365 -key /etc/jabber/jabber.key -out /etc/jabber/jabber.crt
# cat /etc/jabber/jabber.crt >> /etc/jabber/jabber.key
# mv /etc/jabber/jabber.key /etc/jabber/jabber.pem
# rm -f /etc/jabber/jabber.crt

Transport Gadu-Gadu

# poldek -uvh jggtrans

Ustawiamy najważniejsze opcje w /etc/jabber/jggtrans.xml

    <service jid="gg.jabber.nasza_domena.pl"/>
    <connect id="gglinker">
    <ip>127.0.0.1</ip>
    <port>5349</port>
    <secret>hasło z /etc/jabber/secret</secret>
    </connect>
    <spool>/var/spool/jabber/gg.jabber.atwa.us/</spool>
    <admin>admin@jabber.nasz_domena.pl</admin>
    <acl>
    <allow who="admin@jabber.nasza_domena.pl" what="iq/query?xmlns=http://jabber.org/protocol/stats"/>
    <deny who="*" what="iq/query?xmlns=http://jabber.org/protocol/stats"/>
    <allow who="*"/>
    <deny what="iq/query?xmlns=jabber:x:register"/>
    <allow what="presence"/>
    <deny/>
    </acl> 

Następnie tworzymy katalog, w którym będą trzymane dane userów używających transportu

# mkdir -p /var/spool/jabber/gg.jabber.nasza_domena.pl
# chown -R root:jabber /var/spool/jabber/
# chmod -R g+w /var/spool/jabber/

Transport MSN

Instalujemy najważniejsze rzeczy:

# poldek -uvh python-Twisted python-Twisted-ssl python-TwistedWords python-TwistedWeb python-TwistedXish python-Imaging python-pyOpenSSL

Teraz trzeba już ręcznie ściągnąć transport stąd. Wypakowujemy go i ustawiamy config. W src/config.py:

    jid = "msn.jabber.nasza_domena.pl"
    host = "127.0.0.1"
    compjid = ""
    spooldir = "/var/lib/ejabberd/"
    discoName = "MSN Transport"

    mainServer = "127.0.0.1"
    website = ""
    port = "5348"
    secret = "hasło z /etc/jabber/secret" 

Natomiast w config.xml (jeśli nie ma to tworzymy z templatu) ustawiamy te same opcje tylko w formacie XMLowym. Musimy niestety utworzyć jeszcze 2 symlinki bo PyMSNt źle szuka naszych zainstalowanych rozszerzeń pythona:

# ln -s /usr/share/python2.4/site-packages/twisted/words /usr/lib[64]/python2.4/site-packages/twisted/words
# ln -s /usr/share/python2.4/site-packages/twisted/xish /usr/lib[64]/python2.4/site-packages/twisted/xish

Odpalamy PyMSNt:

# ./PyMSNt &

Konfiguracja domeny

W domenach które ma obsługiwać nasz jabber dopisujemy odpowiednie rekordy SRV. Dzięki temu adres jabbera może być inny od adresu rekordu A danej domeny:

jabber.example.net.                  A       1.2.3.4
_jabber._tcp.example.net.            SRV     20 0 5269       jabber.example.net.
_xmpp-server._tcp.example.net.       SRV     20 0 5269       jabber.example.net.
_xmpp-client._tcp.example.net.       SRV     20 0 5222       jabber.example.net.

Uruchamiamy eJabberda i tworzymy konto administratora

# service ejabberd start
# ejabberdctl ejabberd@localhost register admin jabber.nasza_domena.pl hasło_do_konta_admina
# service jggtrans start

I to praktycznie cała filozofia. Pod adresem http://server:5280/admin/ zastaniemy ładnego web admina dzięki któremu możemy trochę monitorować nasz serwer, dodawać i usuwać userów, zmieniać im hasła itd. Sam user ma oczywiście możliwość zmiany hasła przez swojego klienta jabbera. Czy ja czasem nie zapomniałem o transporcie ircowym? Nie, eJabberd ma wbudowany transport IRCa i stąd wystarczyło tylko odblokować odpowiedni port i usługę w ejabberd.cfg i transport od razu działa.

Podziękowanie

Powyższe howto jest w dużywm stopniu przepisane z blogu shadzika. Oryginał można obejrzeć pod tym adresem:

http://shadzik.jogger.pl/2007/08/09/ejabberd-on-pld-msn-irc-gg-transports/

Polecam również drugi artykuł shadzika dotyczący konfiguracji ejabberd:

http://shadzik.jogger.pl/2007/09/26/ejabberd-migrating-from-mnesia-to-mysql-native-driver/

TODO

* Zaktualizować powyższe howto do configów aktualnych wersji ejabberd i jggtrans. * pymsnt podobno już działa z paczki PLD

pl/przewodniki/ejabberd.txt · ostatnio zmienione: 2009/04/12 18:11 przez pawelz
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0 Powered by Lighttpd - fly light