Avatar

Ps0ke

Φίλιππος Στέφανος

Nocturnal Inclination

Nerdkram, Internethumor und der ganzen Rest.

IRC Webinterface auf dem eigenen Server installieren

Info

Nach dem ich in einem vorherigen Artiel bereits erklärt habe, wie man einen IRC-Server aufsetzt, möchte ich jetzt noch beschreiben, wie man ein Web-Frontend, qwebirc installiert. Damit können besucher auch ohne Client nur mit einem Webbrowser den Chat verwenden. qwebirc wird auch vom QuakeNet IRC Netzwerk verwendet, einem der größten IRC Netzwerke der Welt--sollte also gut skalieren ;)

Dependencies

Als erstes laden wir die Dependaecies für das in Python geschriebene qwebirc herunter. Das zope.interface ist über den Python-Package-Manager easy_install verfügbar.

$ easy_install zope.interface

Als nächstes brauchen wir das Twisted framework. In einem temporären Verzeichnes laden wir es herunter und installieren es. (Auf aktuelle Downloads prüfen!)

$ cd tmp
$ wget http://twistedmatrix.com/Releases/Twisted/12.1/Twisted-12.1.0.tar.bz2
$ bunzip2 Twisted-12.1.0.tar.bz2
$ tar xvf Twisted-12.1.0.tar
$ cd Twisted-12.1.0
$ python setup.py install

Installation & Konfiguration

Nun, da alle wichtigen Dependancies installiert sind (optionale können auf der qwebirc Website nachgeschlagen werden), können wir qwebirc installieren. Dazu wechseln wir ins Homeverzeichnis und laden den aktuellen Source-tree mit der Versioningsoftware 'Mercurial' herunter (Wer möchte kann auch tarballs auf der Website finden).

$ cd
$ hg clone http://hg.qwebirc.org/qwebirc/

Jetzt müssen wir den Service noch konfigurieren. Dafür kopieren wir die Standardeinstellungen und ändern nur die wichtigsten Details.

$ cd qwebirc
$ cp config.py.example config.py

Benutzt dafür den Terminaleditor eurer Wahl z.B. vim oder nano.

$ nano config.py

Hier einfach die Verbindungsdaten eures IRC-Servers eintragen

# OPTION: IRCSERVER
#         Hostname (or IP address) of IRC server to connect to.
# OPTION: IRCPORT
#         Port of IRC server to connect to.
IRCSERVER, IRCPORT = "irc.ps0ke.de", 2342

Verwendet hier am besten eine Subdomain, vielleicht auch die, unter der euer IRC Server sowieso läuft.

# OPTION: BASE_URL
#         URL that this qwebirc instance will be available at, add the
#         port number if your instance runs on a port other than 80.
BASE_URL = "http://irc.ps0ke.de"

So wie ihr euer Netzwerk auf im ngircd genannt habt.

# OPTION: NETWORK_NAME
#         The name of your IRC network, displayed throughout the
#         application.
NETWORK_NAME = "EosinIRC"

Aus nano kommt ihr mit ^x wieder raus, dann zum speichern bestätigen und fertig. Damit ist die Konfiguration abgeschlossen!

Jetzt noch das ganze "kompilieren".

$ ./compile.py

qwebirc verwendet einen eigenen Webserver, nicht den normalen Apache. Damit dieser Server von außen auch erreichbar ist, müssen wir dem Apache noch sagen, wie er Anfragen durch zu reichen hat. Dafür erstellen wir im DocumentRoot eine Subdomain (hier mal irc.ps0ke.de genannt. Das muss die gleiche sein, die ihr in config.py als BASE_URL eingetragen habt.)

$ cd /var/www/virtual/ps0ke
$ mkdir irc.ps0ke.de
$ cd irc.ps0ke.de
$ nano .htaccess

Hier müsst ihr nun den richtigen Port angeben.

RewriteEngine On
RewriteRule (.*) http://localhost:9090/$1 [P]

Test

Um die Funktionstüchtigkeit zu Testen, starten wir den Server erstmal im Vordergrund.

$ cd ~/qwebirc
$ python run.py --no-daemon

Wenn ihr den Server jetzt unter der von euch eingerichteten Adresse erreichen könnt, habt ihr alles richtig gemacht ;)

Falls ihr Fehlermeldungen bekommt weil Port 9090 schon belegt ist, müsst ihr beim starten des Servers noch mit --port=xxxx einen anderen Port angeben und diesen dann auch in der .htaccess richtig eintragen.

Service Einrichten

Damit der Server auch nach einem crash oder einer downtime wieder automatisch angeht, verwenden wir ihn als Service. Uberspace.de hat dafür deamontools installiert. Falls noch nicht geschehen einfach ein eigenes ~/service Verzeichnis mit dem mitgelieferten Skript erstellen

$ uberspace-setup-svscan

und dann einen einen qwebric Service einrichten

$ uberspace-setup-service qwebirc "~/qwebirc/run.py --no-daemon"

Allerdings produziert der Server so Fehlermeldungen und wird nicht funktionieren. qwebirc erwartet nämlich genauso wie etherpad-lite, in seinem Verzeichnis gestartet zu werden. Vorher natürlich den Service runterfahren.

$ svc -d ~/service/qwebirc
$ cd ~/service/qwebirc
$ nano run

Deshalb ändern wir das run-Skript des Services noch kurz ab und wechseln vor dem Start in das ~/qwebirc Verzeichnis.

# Now let's go!
cd ~/qwebirc

Jetzt den Service wieder hochfahren und alles sollte gehen!

$ svc -u ~/service/qwebirc