Modul Menü

Wer ist online?

Insgesamt sind 6 Besucher online: 2 registrierte, 0 unsichtbare und 4 Gäste
Der Besucherrekord liegt bei 226 Besuchern, die am 8. Jul 2012, 14:25 gleichzeitig online waren.

Mitglieder: frickelpit, Google [Bot]

basierend auf den aktiven Besuchern der letzten 5 Minuten

Statistik

6 Beiträge


Geburtstage

Heute hat kein Mitglied Geburtstag kein Mitglied hat in den nächsten 3 Tagen Geburtstag

Kalender

<< Juni 2013 >>
Mo Di Mi Do Fr Sa So
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Fest u. Feiertage Kalender-Ereignisse

Anstehende Termine:

jabber2 Server mit MySQL

HOWTOs zum c't Server

Moderator: Moderatoren Team

jabber2 Server mit MySQL

Beitragvon lucifer » 1. Feb 2006, 19:36

Hallo zusammen!

Folgendes will ich erreichen:
Einen Jabber 2.x Server mit MySQL-Anbindung zur Authetifizierung und Datenspeicherung. Dazu kommt bald noch die SSL-Unterstützung.

Ich gehe von einer "frischen" UML aus. Es sollte aber auch überall sonst funktionieren. ;-)

User and Gruppe
Code: Alles auswählen
groupadd jabber
useradd -g jabber jabber


PID-Verzeichnis
Code: Alles auswählen
mkdir -p /usr/local/var/jabberd/pid/
chown -R jabber:jabber /usr/local/var/jabberd/pid/


Log-Verzeichnis
Code: Alles auswählen
mkdir -p /usr/local/var/jabberd/log/
chown -R jabber:jabber /usr/local/var/jabberd/log


Pakete installieren
Code: Alles auswählen
apt-get install openssl libssl0.9.7 libssl-dev libidn11 libidn11-dev mysql-common-4.1 mysql-server-4.1 mysql-client-4.1 libmysqlclient14-dev build-essential


Jabberd2 herunterladen
Code: Alles auswählen
wget http://files.jabberstudio.org/jabberd2/jabberd-2.0s10.tar.gz

(aktuelle Versionen unter: http://jabberstudio.org/projects/jabberd2/releases/)

Jabberd2 entpacken
Code: Alles auswählen
tar -xzf jabberd-2.0s10.tar.gz


Jabberd2 konfigurieren und installieren
Code: Alles auswählen
cd jabberd-2.0s10
./configure --enable-mysql --enable-ssl --enable-idn
make
make install

Bei Fehlern während des Aufrufs von configure siehe Jabber FAQ

Dateirechte neu setzen und Symlink setzen, damit wir "halbwegs" Debian-konform bleiben
Code: Alles auswählen
chown -R root:jabber /usr/local/etc/jabberd/*
chmod -R 640 /usr/local/etc/jabberd/*
ln -s /usr/local/etc/jabberd/ /etc/jabberd


Konfiguration des Hostnamens
In der Datei "sm.xml" Zeile 7 anpassen (dort steht "localhost")
Code: Alles auswählen
<id>jabber.zuhause.xx</id>

In der Datei "c2s.xml" Zeile 77 anpassen (dort steht "localhost")
Code: Alles auswählen
<id>jabber.zuhause.xx</id>


MySQL-Konfiguration
In dem Verzeichnis, in das Ihr die Sourcen entpackt habt, findet Ihr ein Verzeichnis "tools". Wechselt in dieses Verzeichnis.
MySQL-Konsole starten: (wenn Ihr sowieso als root angemeldet seid, lasst die Parameter weg, es sei denn Ihr habt ein Passwort gesetzt)
Code: Alles auswählen
mysql -u root -p

Import der Datenbank-Struktur:
Code: Alles auswählen
mysql>\. db-setup.mysql

Benutzer anlegen:
Code: Alles auswählen
GRANT select,insert,delete,update ON jabberd2.* to jabberd2@localhost IDENTIFIED by '<Dein Passwort>';

Symlink anlegen, da Jabber immer einen Socket im Verzeichnis "/tmp" erwartet... :-(
Code: Alles auswählen
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock


Anpassen der Jabber-Konfiguration an MySQL (Storage)
In der Datei "sm.xml" die Zeile 88 anpassen (Passwort von gerade)
Code: Alles auswählen
<pass>secret</pass>


Anpassen der Jabber-Konfiguration an MySQL (Auth)
In der Datei "c2s.xml" die Zeilen 278 anpassen
Code: Alles auswählen
<pass>secret</pass>


Port-Weiterleitungen:
Ihr werdet sicherlich 5222 brauchen.
Code: Alles auswählen
Port 5222 — non-SSL client communication
Port 5223 — SSL client communication
Port 5269 — server to server communication


SSL-Unterstützung einschalten
Bei der Datei "c2s.xml" in den Zeilen 91 und 110 den Kommentar entfernen. (<pemfile> und <ssl-port>)

Zertifikat erzeugen
Scripte:
"cert.cnf":
Code: Alles auswählen
RANDFILE = ./mailcert.rand

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
C=Land
ST=Bundesland
L=Stadt
O=Organisation
OU=Organisations-Einheit (Abteilung)
CN=jabber.zuhause.xx
emailAddress=jabberadmin@zuhause.xx

[ cert_type ]
nsCertType = server


"mk_cert.sh":
Code: Alles auswählen
#! /bin/sh

test -x /usr/bin/openssl || exit 0

if test -f ./cert.pem
then
        echo "CAUTION:"
        echo "=> cert.pem already exists."
        echo ""
        echo "   Please delete this file before to be aware"
        echo "   of what you doing with this script... ;-)"
        echo ""
        exit 1
fi

cp /dev/null ./cert.pem
chmod 600 ./cert.pem
chown jabber ./cert.pem

cleanup() {
        rm -f ./cert.pem
        rm -f ./cert.rand
        exit 1
}

cd `pwd`

dd if=/dev/urandom of=./cert.rand count=1 2>/dev/null

/usr/bin/openssl req -new -x509 -days 365 -nodes \
        -config ./cert.cnf -out ./cert.pem -keyout ./cert.pem || cleanup

/usr/bin/openssl gendh -rand ./cert.rand 512 >> ./cert.pem || cleanup

/usr/bin/openssl x509 -subject -dates -fingerprint -noout -in ./cert.pem || cleanup

rm -f ./cert.rand


Code: Alles auswählen
./chmod 700 mk_cert.sh
./mk_cert.sh
cp -a ./cert.pem /usr/local/etc/jabberd/server.pem


Testen
Code: Alles auswählen
su jabber -c "/usr/local/bin/jabberd" &

Und versuchen eine Verbindung aufzubauen...

Startscript
Ist zwar nicht die "perfekte" Lösung, aber ich habe ausser dieser keine gefunden...
Code: Alles auswählen
#! /bin/sh
set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="jabber daemon"
NAME=jabberd
USER=jabber
DAEMON=/usr/local/bin/$NAME
SCRIPTNAME=/etc/init.d/$NAME

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

do_start ( ) {
        su $USER -c "$DAEMON" &
}
do_stop ( ) {
        for MYPID in `pgrep -u $USER`; do
                 kill $MYPID >/dev/null 2>&1
        done
}

case "$1" in
  start)
        echo -n "Starting $DESC: $NAME"
        do_start
        echo "."
        ;;
  stop)
        echo -n "Stopping $DESC: $NAME"
        do_stop
        echo "."
        ;;
  restart|force-reload)
        echo -n "Restarting $DESC: $NAME"
        do_stop
        sleep 5
        do_start
        echo "."
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0


Fertig! Viel Spass... ;-)

Gruß
Jens

Quellen:
- Startseite und Links:
http://www.jabberdoc.org/FrontPage
- Installationsguide:
http://www.jabberdoc.org/AdminGuide
Zuletzt geändert von lucifer am 5. Mai 2006, 11:50, insgesamt 4-mal geändert.
Gigabyte M61P-S3, AMD X2 BE-2350, 2GB RAM, 3xGBit, AVM, HFC, 2x DVB-T, ctsrv2, 500GB SATA, 400GB ATA, DomUs:
endian(2.2beta3); Mail (postfix, gld...); www (Apache2, php...); mld; mysql; comm (TSS2, Jabber); server (samba, dns, TwonkeyVision...); In Vorbereitung: ISDN/asterisk und VDR.
ocfs2 wird mit eigenem Subnetz zwischen den DomUs www, mld und server benutzt.
Hier ist die Kristallkugel...
lucifer
Moderator
Moderator
 
Beiträge: 979
Registriert: 27. Aug 2005, 17:27
Wohnort: Waltrop

Beitragvon lucifer » 2. Feb 2006, 12:16

Hallo zusammen,

habe gerade das Startscript nochmals geändert, da ein restart nicht funkionierte. Und ich habe den SSL-Teil fertiggestellt... ;-)

Gruß
Jens
Gigabyte M61P-S3, AMD X2 BE-2350, 2GB RAM, 3xGBit, AVM, HFC, 2x DVB-T, ctsrv2, 500GB SATA, 400GB ATA, DomUs:
endian(2.2beta3); Mail (postfix, gld...); www (Apache2, php...); mld; mysql; comm (TSS2, Jabber); server (samba, dns, TwonkeyVision...); In Vorbereitung: ISDN/asterisk und VDR.
ocfs2 wird mit eigenem Subnetz zwischen den DomUs www, mld und server benutzt.
Hier ist die Kristallkugel...
lucifer
Moderator
Moderator
 
Beiträge: 979
Registriert: 27. Aug 2005, 17:27
Wohnort: Waltrop

Beitragvon lucifer » 23. Feb 2006, 18:49

Hi,

noch ein Nachtrag:
hatte vergessen zu erwähnen, dass man das "Paket" build-essential ziehen sollte... :oops: Ohne das geht nix.

Gruß
Jens
Gigabyte M61P-S3, AMD X2 BE-2350, 2GB RAM, 3xGBit, AVM, HFC, 2x DVB-T, ctsrv2, 500GB SATA, 400GB ATA, DomUs:
endian(2.2beta3); Mail (postfix, gld...); www (Apache2, php...); mld; mysql; comm (TSS2, Jabber); server (samba, dns, TwonkeyVision...); In Vorbereitung: ISDN/asterisk und VDR.
ocfs2 wird mit eigenem Subnetz zwischen den DomUs www, mld und server benutzt.
Hier ist die Kristallkugel...
lucifer
Moderator
Moderator
 
Beiträge: 979
Registriert: 27. Aug 2005, 17:27
Wohnort: Waltrop

Beitragvon lucifer » 5. Mai 2006, 11:52

Schon wieder nur ich... ;-)

Habe die URLs angepasst, so dass die neuen Seiten (Guide und FAQ) passen...
Die neue Version des Servers selbst müsst Ihr euch immer noch selbst raussuchen... (sonst bin ich alle paar Tage dran)

Nur zur Info:
Man braucht nicht unbedingt den MySQL-Server in der selben UML...
Dann braucht man nur den paasenden mysql-client.

Gruß
Jens
Gigabyte M61P-S3, AMD X2 BE-2350, 2GB RAM, 3xGBit, AVM, HFC, 2x DVB-T, ctsrv2, 500GB SATA, 400GB ATA, DomUs:
endian(2.2beta3); Mail (postfix, gld...); www (Apache2, php...); mld; mysql; comm (TSS2, Jabber); server (samba, dns, TwonkeyVision...); In Vorbereitung: ISDN/asterisk und VDR.
ocfs2 wird mit eigenem Subnetz zwischen den DomUs www, mld und server benutzt.
Hier ist die Kristallkugel...
lucifer
Moderator
Moderator
 
Beiträge: 979
Registriert: 27. Aug 2005, 17:27
Wohnort: Waltrop

Re: jabber2 Server mit MySQL

Beitragvon ChristianKnorr » 2. Jan 2008, 16:46

Hi Jens.

Danke schonmal vorab für das HowTo, obwohl ich noch gar nicht fertig bin :) .
Da die Anleitung mittlerweile leicht veraltet ist, schreibe ich mal die Änderungen dazu:

lucifer hat geschrieben:
Code: Alles auswählen
apt-get install openssl libssl0.9.7 libssl-dev libidn11 libidn11-dev mysql-common-4.1 mysql-server-4.1 mysql-client-4.1 libmysqlclient14-dev build-essential

Die aktuelle Befehlszeile zum Installieren lautet z.B.:
Code: Alles auswählen
aptitude install openssl libssl0.9.7 libssl-dev libidn11 libidn11-dev mysql-common mysql-server mysql-client libmysqlclient15-dev build-essential

lucifer hat geschrieben:Konfiguration des Hostnamens
In der Datei "sm.xml" Zeile 7 anpassen (dort steht "localhost")
Code: Alles auswählen
<id>jabber.zuhause.xx</id>

In der Datei "c2s.xml" Zeile 77 anpassen (dort steht "localhost")
Code: Alles auswählen
<id>jabber.zuhause.xx</id>
Die Dateien sind in /etc/jabberd zu finden.
lucifer hat geschrieben:Benutzer anlegen:
Code: Alles auswählen
GRANT select,insert,delete,update ON jabberd2.* to jabberd2@localhost IDENTIFIED by '<Dein Passwort>';

Danach mit 'quit' die mysql-Konsole verlassen.

lucifer hat geschrieben:Anpassen der Jabber-Konfiguration an MySQL (Storage)
In der Datei "sm.xml" die Zeile 88 anpassen (Passwort von gerade)
Code: Alles auswählen
<pass>secret</pass>
...ist mittlerweile Zeile 89

lucifer hat geschrieben:Anpassen der Jabber-Konfiguration an MySQL (Auth)
In der Datei "c2s.xml" die Zeilen 278 anpassen
Code: Alles auswählen
<pass>secret</pass>
... Zeile 287

lucifer hat geschrieben:SSL-Unterstützung einschalten
Bei der Datei "c2s.xml" in den Zeilen 91 und 110 den Kommentar entfernen. (<pemfile> und <ssl-port>)
Aus
Code: Alles auswählen
<!--
<pemfile>...</pemfile>
-->
wird
Code: Alles auswählen
<pemfile>...</pemfile>
Analog zu <ssl-port>.

lucifer hat geschrieben:Zertifikat erzeugen
Scripte:
"cert.cnf": und "mk_cert.sh":
Diese müssen erstellt werden. Zuerst dachte ich, die seien irgendwo zu finden.
Dann gibt's ein Problem: Das Script mk_cert.sh löscht cert.pem, welches anschließend kopiert werden soll.
Deshalb habe ich mk_cert.sh folgender maßen geändert:
Code: Alles auswählen
cleanup() {
#rm -f ./cert.pem
rm -f ./cert.rand
exit 1
        }
Man beachte die #Raute.


lucifer hat geschrieben:Testen
Code: Alles auswählen
su jabber -c "/usr/local/bin/jabberd" &

Und versuchen eine Verbindung aufzubauen...
Bei mir kam die Fehlermeldung:
Code: Alles auswählen
ERROR: c2s died.  Shutting down server.
Die darauf zurück zu führen war, dass mindestens einer der Ports 5269, 5222 und 5223 nicht richtig auf den jabber geleitet wurde (Firewall-Arbeit).

Wie beende ich den jabber am elegantesten?
Ich habe das recht trivial so gelöst:
Code: Alles auswählen
jabber:/etc/jabberd# kill `pgrep -U jabber`


lucifer hat geschrieben:Startscript
Ist zwar nicht die "perfekte" Lösung, aber ich habe ausser dieser keine gefunden...


Das dann in /etc/init.d speichern und mit chmod 755 ausführend machen. Dann kann man es mit Webmin auch grafisch starten, stoppen und beim Rechnerstart automatisch starten lassen.

lucifer hat geschrieben:Fertig! Viel Spass... ;-)

Gruß
Jens


Tja, leider hat es trotz der guten Anleitung bei mir nicht funktioniert, aber der Fehler wird wohl irgendwo bei mir im Netzwerk zu finden sein (DNS?).
Der jabber scheint zwar zu laufen, aber ich kann mich nicht mit kopete registrieren.

MfG, Chris.....
c't Debian Server 2.1
ChristianKnorr
Starter
Starter
 
Beiträge: 5
Registriert: 1. Jan 2008, 14:30

Beitragvon lucifer » 4. Jan 2008, 20:49

Hallo Chris,

der jabberd schreibt log-Infos ins syslog...
Evtl. findest Du dort einen Hinweis auf den Fehler...

Gruß
Jens
Gigabyte M61P-S3, AMD X2 BE-2350, 2GB RAM, 3xGBit, AVM, HFC, 2x DVB-T, ctsrv2, 500GB SATA, 400GB ATA, DomUs:
endian(2.2beta3); Mail (postfix, gld...); www (Apache2, php...); mld; mysql; comm (TSS2, Jabber); server (samba, dns, TwonkeyVision...); In Vorbereitung: ISDN/asterisk und VDR.
ocfs2 wird mit eigenem Subnetz zwischen den DomUs www, mld und server benutzt.
Hier ist die Kristallkugel...
lucifer
Moderator
Moderator
 
Beiträge: 979
Registriert: 27. Aug 2005, 17:27
Wohnort: Waltrop


Zurück zu HOWTOs

Wer ist online?

Mitglieder: frickelpit, Google [Bot]

cron