Setting up IRC the weird way

I’m not going into why you should use IRC here as that’s a full blog-post in it’s own. Just so much: When you’re doing OSS development then there is almost no ways around IRC.

But IRC in itself has had some major drawbacks for myself:

  • I couldn’t log into IRC from different devices under one name
  • conversations that took place when I wasn’t logged in where lost to me
  • I didn’t get notified of mentiones when I wasn’t logged in.

Setting up a bouncer

The first issue was solved easily by installing the ZNC-Bouncer on a DigitalOcean Dropplet. And installing literally meant running sudo apt-get install znc. But that didn’t leave me with a fully working system.

For one thing I wanted ZNC to run as it’s own user, so I created a new user sudo useradd zncadmin. That created the user and also created the home-directory in /home/zncadmin. Within that directory I created a directory .znc as home-directory for the ZNC-process.

The other thing that surprised me was that I now could start the process using /usr/bin/znc -f --datadir=/home/zncadmin/.znc but that didn’t restart the process after a reboot. So I also created a file /etc/systemd/system/znc.service with the following content:

[Unit]
Description=ZNC, an advanced IRC bouncer
After=network-online.target

[Service]
ExecStart=/usr/bin/znc -f --datadir=/home/zncadmin/.znc
User=zncadmin
Restart=always

[Install]
WantedBy=multi-user.target

Now I was able to run sudo service znc start to manually start the Bouncer and after a system reboot the bouncer would be started automatically.

So: First issue solved. Great. I can now log into IRC with one username using multiple devices. But I still didn’t get the conversations onto my devices after being logged off from the bouncer.

So let’s tackle that issue:

Staying up-to-date

There is the playback plugin for ZNC that allows clients to retrieve the “lost” conversations. That required me to also install the znc-dev-tools by running sudo apt-get install znc-dev. Then I could install the plugin using these few lines:

curl -O https://raw.githubusercontent.com/jpnurmi/znc-playback/master/playback.cpp
znc-buildmod playback.cpp
sudo mkdir /home/zncadmin/.znc/modules
sudo cp playback.so /home/zncadmin/.znc/modules/playback.so

After that I could enable the module via the ZNC-webinterface.

And don’t forget to remove the checks in your users settings for AutoClearChanBuffer and AutoClearQueryBuffer (also in the webinterface).

And now your clients will get the conversations that took place while you where logged off!

Now it would be nice to also get notified of mentions using PushNotifications.

That is highly dependent on your clients! I use Mutter as iOS-client and there is a ZNC-Plugin to enable push notifications for that client as well. But you will need to look what tools you can use for your specific setup.

Perhaps that helps in setting up an IRC-client that is almost as powerful as some other proprietary chat-clients out there 😉