Avatar

Ps0ke

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

Nocturnal Inclination

Nerdkram, Internethumor und der ganzen Rest.

Eigenen IRC Server ohne root-Rechte installieren

Info

Eine kurze Anleitung, wie man einen IRC-Server ohne root-Rechte installiert. In diesem Beispiel gehe ich von der Serverkonfiguration von uberspace.de aus, es sollte aber ähnlich auch überall sonst funktionieren.

Installation

Als erstes laden wir ngircd runter, ein kleiner IRC Server, der kaum Konfiguration braucht und einfach funktioniert.

Entweder über den package manager toast

$ toast arm ngircd

oder mit cURL (aktuellste Version raussuchen)

$ curl http://ngircd.barton.de/pub/ngircd/ngircd-19.1.tar.gz -O
$ tar -zxvf ngircd-19.1.tar.gz

Die Variante bei toast hat dabei den Vorteil, dass Toast bereits alle nötigen Ordner und Strukturen perfekt einrichtet, dass ngircd nicht in den normalen, nur für root zugänglichen Pfaden sucht und waltet. Wie man das manuell einstellt weiß ich nicht. Da dies ein uberspace.de Tutorial sein soll, und toast bei uberspace.de standardmäßig installiert ist, kümmere ich mich auch nicht weiter darum.

Einstellungen

Nun richten wie die Konfiguratinsdateien ein.

$ ln -s ~/.toast/pkg/ngircd/v19.1/1/root/etc ~/ngircd
$ cd ngircd
$ cp ngircd.conf ngircd.org.conf
$ chmod 444 ngircd.org.conf

Dies erstellt einen symbolischen Link ngircd in euer Homeverzeichnis und erstellt eine nicht beschreibbare Kopie der Standardkonfigurationsdatei. Nun müsst ihr an der eigentlichen Konfigurationsdatei noch einige Einstellungen vornehmen. Benutzt dafür einen Terminaleditor euerer Wahl wie zum Beispiel vim oder nano.

$ nano ngircd.conf

[Global]
    Name = irc.{username}.{server}.ubserspace.de
    Info = Info Text
    # Globales Serverpasswort. Das ; am Anfang entfernen um es zu aktivieren
    ;Password = {password}

    # Information about the server and the administrator, used by the
    # ADMIN command. Not required by server but by RFC!
    AdminInfo1 = Description
    AdminInfo2 = Location
    AdminEMail = admin@irc.server

    # Bitte einen anderen als den Standard '6667' verwenden
    Ports = {port}

    MotdFile = /home/{username}/ngircd/ngircd.motd

    ServerUID = {username}
    ServerGID = {username}

[Operator]
    Name = {name}
    Password = {password}

Ihr müsst die Werte in den geschweiften Klammern natürlich mit euren Werten ersetzen (ohne Klammern dann). Wenn ihr wollt könnt ihr dann noch einige permanente Channels einrichten. Die Konfiguration dafür sieht so aus:

# ein passwortgeschützter Channel
[Channel]
    Name = #protected
    Topic = a closed channel
    Modes = tnPk
    Key = password

# ein offener Channel
[Channel]
    Name = #open
    Topic = an open channel
    Modes = tnP

Aus nano kommt ihr mit ^x wieder raus, dann zum speichern bestätigen und fertig.

Jetzt noch eine "Message of the Day" Datei anlegen

$ echo "Willkommen auf meinem IRC Server!" > ngircd.motd

Test

Jetzt testen wir die Konfiguration. Das geht mit

$ ngircd -t

Dabei sollten keine Fehler auftreten, wenn doch, nochmal genau die Konfigdatei anschauen! Jetzt testen wir ob der Server überhaupt funktioniert und starten ihn dafür im Vordergrund:

$ ngircd -n

Und von einer anderen Shell versuchen wir in den Server zu "telneten" (schnell tippen!)

$ telnet localhost {port}
USER tester localhost tester :name
NICK tester

Dabei sollten wir eine Antwort vom Server bekommen und in der Shell des Servers sollten wir den Client connecten sehen

Einen Service aufsetzen

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 ngircd Service einrichten

$ uberspace-setup-service ngircd "ngircd -n"

Nun müsst ihr noch ein Portforwarding bei den Leuten von uberspace.de beantragen und fertig :)