ZNC RPi Bouncer



In letzter Zeit sind IRC-Chats für mich zu einem der Kommunikationskanäle geworden. Fast sofort wurde klar, dass dem "nackten" IRC einige der Annehmlichkeiten entzogen sind, an die ich bei Skype so gewöhnt bin, zum Beispiel:
  • Nachrichtenverlauf direkt im Chat-Fenster verfügbar
  • Möglichkeit, von mehreren Punkten aus eine Verbindung herzustellen


Um diese Probleme zu lösen, erschien nach einer Weile eine virtuelle Maschine mit einem IRC-Bouncer in unserer Firma, und alles wurde viel besser und bequemer. Es ist klar, dass es für ein Unternehmen absolut kein Problem ist, eine virtuelle Maschine für solche Zwecke zu haben, aber was ist, wenn Sie ein solches Tier für Ihre persönlichen Bedürfnisse haben möchten (und ich wollte es irgendwann)? Nachdem ich die Optionen für das Hosting (es ist das zusätzliche Geld nicht wert), einen separaten Computer (für Nein) und eine virtuelle Maschine für die vorhandene (100 W, die rund um die Uhr verbraucht werden, kosten ebenfalls) verworfen hatte, entschied ich mich für RaspberryPi, das zu diesem Zeitpunkt als NAS diente, aber die Tatsache war die meiste Zeit inaktiv.

Eine kurze Beschreibung dessen, worauf alles gesammelt wird und was im Artikel erwähnt wird:
  • Plattform - RaspberryPi Model B (512 Mb / Ethernet).
  • OS - Raspbian.
  • Merkmale der Betriebssysteminstallation - Die Root-Partition wird vollständig auf die USB 2.0-Festplatte übertragen, nur die Boot-Partition verbleibt auf der SD-Karte. Leider kein Wort dazu, aber ich kann schreiben, wenn es interessant ist.
  • Bouncer - ZNC, Version 1.2.
  • Features zur Installation eines Bouncers - Assembly aus dem Tarball, Installation in Chroot, Assembly des Modpython-Moduls (modperl, modtcl optional).


Ich habe mich aus folgenden Gründen für ZNC als Türsteher entschieden:
  • Ein ziemlich gewöhnlicher Türsteher.
  • Die Fähigkeit, die Funktionalität durch Module zu erweitern.
  • Genug der gleichen Module.
  • Die Fähigkeit, meine Module in Python zu schreiben (sowie Perl und Tcl, obwohl ich das nicht brauchte).
  • Nach dem Lesen des Projekt-Wikis wurde die Möglichkeit hinzugefügt, den Türsteher einfach auf chroot zu übertragen.


Zunächst habe ich versucht, ZNC auf das „normale“ Ubuntu zu setzen, nur um zu sehen, wie es in einem funktionierenden Zustand aussehen sollte. Alles erwies sich als einfach und klar, so dass ich, inspiriert von diesem Zwischenerfolg, RPi konfigurierte.

Die erste unangenehme Überraschung war das Vorhandensein eines sehr alten ZNC-Builds in den Repositories - anscheinend waren es 0,206. Dies hat jedoch nur meine Absicht bekräftigt, ZNC aus dem Archiv zusammenzusetzen, zumal der Prozess im Projekt-Wiki gut beschrieben ist.

Grundsätzlich gebe ich die in der Konsole eingegebenen Befehle ein, um die vorhandene und durchaus geeignete Installationsanleitung nicht zu duplizieren. Die meisten Kommentare werden nur an den Stellen abgegeben, an denen es Unterschiede zum offiziellen Dokument gibt.

Zuerst müssen Sie die erforderlichen Pakete für die Assembly installieren:
pi@raspberrypi ~ $ sudo apt-get install build-essential pkg-config libssl-dev


Wenn Sie ein Python-, Perl- oder Tcl-Unterstützungsmodul erstellen müssen, müssen Sie die entsprechenden Pakete aus der Liste installieren:
  • modpython ist das Paket python-dev.
  • modperl ist das Paket libperl-dev.
  • modtcl - tcl-dev-Paket.


Ich brauche nur ein Modul für Python:
pi@raspberrypi ~ $ sudo apt-get install python-dev


Laden Sie den Tarball herunter und entpacken Sie ihn:
pi@raspberrypi ~ $ wget http://znc.in/releases/znc-1.2.tar.gz
pi@raspberrypi ~ $ tar xzvf znc-1.2.tar.gz


Erstellen Sie einen Benutzer, um einen Türsteher zu starten:
pi@raspberrypi ~ $ sudo adduser bouncer
pi@raspberrypi ~ $ sudo passwd bouncer


Erstellen Sie eine Verzeichnisstruktur für chroot (alles wird in / opt / znc abgelegt ):
pi@raspberrypi ~ $ sudo mkdir /opt/znc
pi@raspberrypi ~ $ cd /opt/znc/
pi@raspberrypi /opt/znc $ sudo mkdir -p etc dev usr/lib usr/local/{share,bin,lib} lib home/bouncer
pi@raspberrypi /opt/znc $ sudo mkdir -p lib/arm-linux-gnueabihf usr/lib/arm-linux-gnueabihf
pi@raspberrypi /opt/znc $ sudo chown bouncer:bouncer home/bouncer/
pi@raspberrypi /opt/znc $ cd dev/
pi@raspberrypi /opt/znc/dev $ sudo mknod -m 644 random c 1 8
pi@raspberrypi /opt/znc/dev $ sudo mknod -m 644 urandom c 1 9
pi@raspberrypi /opt/znc/dev $ sudo mknod -m 666 null c 1 3
pi@raspberrypi /opt/znc $ sudo cp /etc/hosts etc/
pi@raspberrypi /opt/znc $ sudo cp /etc/resolv.conf etc/
pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libnss_dns.so.2 lib/arm-linux-gnueabihf/
pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libresolv.so.2 lib/arm-linux-gnueabihf/
pi@raspberrypi /opt/znc/dev $ cd


Wir konfigurieren Quellcodes für die Assemblierung. Zum Aufbau der Module für Perl oder TCL Bedarf hinzufügen --enable-perlund / oder --enable-tcljeweils:
pi@raspberrypi ~ $ cd znc-1.2/
pi@raspberrypi ~/znc-1.2 $ ./configure --enable-python


Wir beginnen mit der Montage (der Vorgang dauert ca. 1,5-2 Stunden):
pi@raspberrypi ~/znc-1.2 $ make


Installieren Sie das Verzeichnis in chroot. Bei dieser Installationsmethode ( DESTDIR=/opt/znc) werden alle Dateien sofort im angegebenen Unterverzeichnis angezeigt und haben keine Auswirkungen auf das Hauptsystem. Außerdem müssen wir keine Dateien mehr nach chroot kopieren, wie im Whitepaper vorgeschlagen:
pi@raspberrypi ~/znc-1.2 $ sudo DESTDIR=/opt/znc make install


Jetzt müssen Sie sehen, welche Bibliotheken benötigt werden, damit die Anwendung funktioniert ...
pi@raspberrypi ~/znc-1.2 $ ldd /opt/znc/usr/local/bin/znc


... und kopiere sie:
pi@raspberrypi ~/znc-1.2 $ cd /opt/znc/
pi@raspberrypi /opt/znc $ sudo cp /usr/lib/arm-linux-gnueabihf/libcofi_rpi.so ./usr/lib/arm-linux-gnueabihf/libcofi_rpi.so
pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libdl.so.2 ./lib/arm-linux-gnueabihf/libdl.so.2
pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libz.so.1 ./lib/arm-linux-gnueabihf/libz.so.1
pi@raspberrypi /opt/znc $ sudo cp /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 ./usr/lib/arm-linux-gnueabihf/libstdc++.so.6
pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libm.so.6 ./lib/arm-linux-gnueabihf/libm.so.6
pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libgcc_s.so.1 ./lib/arm-linux-gnueabihf/libgcc_s.so.1
pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libpthread.so.0 ./lib/arm-linux-gnueabihf/libpthread.so.0
pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libc.so.6 ./lib/arm-linux-gnueabihf/libc.so.6
pi@raspberrypi /opt/znc $ sudo cp /lib/ld-linux-armhf.so.3 ./lib/ld-linux-armhf.so.3


Es müssen nur noch ein paar Symlinks zu znc-Verzeichnissen erstellt werden, damit der Bouncer nicht nur von chroot aus, sondern auch "wie gewohnt" gestartet werden kann. Dies benötigen wir beim ersten Start (um eine Konfigurationsdatei zu erstellen) sowie in Zukunft, wenn wir mit dem Kompilieren von Modulen für ZNC beginnen müssen.

Erstellen Sie Symlinks:
pi@raspberrypi ~ $ sudo ln -sv /opt/znc/usr/local/lib/znc /usr/local/lib/
pi@raspberrypi ~ $ sudo ln -sv /opt/znc/usr/local/share/znc /usr/local/share/
pi@raspberrypi ~ $ sudo ln -sv /opt/znc/usr/local/include/znc /usr/local/include/


Bevor Sie einen Bouncer starten, müssen Sie eine Erstkonfiguration für ihn erstellen und die resultierende Konfiguration in das Chroot-Verzeichnis kopieren. Um dies zu tun, werde ein Benutzer von Bouncer , gehe in das Home-Verzeichnis und starte znc mit dem Schlüssel --makeconf:
pi@raspberrypi ~ $ su bouncer
bouncer@raspberrypi /home/pi $ cd
bouncer@raspberrypi ~ $ /opt/znc/usr/local/bin/znc --makeconf


Der Einrichtungsvorgang selbst ist dank sehr informativer Tipps recht einfach. Nach Abschluss des Setups sollten wir einen leistungsfähigen Türsteher bekommen. Sie können die Konfiguration fortsetzen, indem Sie das Webinterface des Bouncers (falls das Webadmin- Modul aktiviert wurde ) oder über den IRC-Client öffnen .

Als letztes müssen Sie die empfangene Konfiguration auf chroot verschieben und den Bouncer bereits von dort aus starten. Übrigens, bearbeiten Sie die Konfigurationsdatei des Browsers nicht mit Ihren Händen. Wir empfehlen hierfür die Verwendung von webadmin .

Halten Sie zuerst den Türsteher an. Der erste Befehl speichert die aktuelle Konfiguration in der Konfigurationsdatei und der zweite hält den Bouncer an:
bouncer@raspberrypi ~ $ pkill -SIGUSR1 znc
bouncer@raspberrypi ~ $ pkill znc


Kopieren Sie das Einstellungsverzeichnis nach chroot:
bouncer@raspberrypi ~ $ cp -r .znc /opt/znc/home/bouncer


Und starte schon aus dem chroot-Verzeichnis mit dem Befehl:
pi@raspberrypi ~ $ sudo start-stop-daemon --chroot /opt/znc/ --chuid bouncer:bouncer --start --exec /usr/local/bin/znc


Sie können den Türsteher mit dem folgenden Befehl stoppen:
pi@raspberrypi ~ $ sudo start-stop-daemon --chroot /opt/znc/ --chuid bouncer:bouncer --stop --exec /usr/local/bin/znc


Nun, das scheint alles zu sein. Um einen Bouncer beim Systemstart automatisch zu starten, können Sie /etc/rc.local einen Startbefehl hinzufügen .

Fragen und Kommentare sind wie immer willkommen.

Link zur Projektwebseite: ZNC

Jetzt auch beliebt: