Deploying An IRC Server

[linkstandalone] IRC

IRC stands for Internet Relay Chat. It is a protocol for chat room service, and it is one of the oldest. These days some of the most popular networks are places like, Freenode, Rizon, EFNet, and Snoonet. You connect up to a particular network, and from there can pick through their various different channels.

Why run your own server?

With the rise of Slack, Gitter, etc. why would anyone want to run their own IRC server? From 2003 to 2012 there was a loss of about 600k users from IRC networks source. Maybe you just have a spare computer at home you want to make use of, or maybe you are on a small team that needs their own private chat room. There are some benefits to be had from picking IRC.

  1. No web browser needed. I can chat from a headless server if I need.
  2. Own your data. No ads or bothers to upgrade your service.
  3. It’s free. (Minus whatever hosting/electricity costs).
  4. It’s secure. Most daemons offer connections over SSL.

Which server?

Inspircd, UnrealIRCd, IRCd-Hybrid? One of the benefits of IRC being an older protocol is that there is a wide variety of daemons available out there to suit your needs. The one I ended up going with was ngIRCd, which stands for next generation IRC daemon. I wanted a server which would be easy to maintain without many fancy extra features. Plus it was widely available on most Unix platforms.

Install

Depending on what OS you are running the difficulty of installation may vary. On Ubuntu installation is as simple as $ sudo apt install ngircd. It should be available in your distro’s package manager (or Port system on Free/OpenBSD). Otherwise, you can always compile it from source here

Configure

All of the configuration will take place in /etc/ngircd. There should be two files; ngircd.conf, and ngircd.motd. You can edit the motd file to show whatever message you would like displayed to the users upon their login. For the uninitiated MOTD is an acronym for Message Of The Day. Maybe that could be a warning, maybe a fun banner, maybe you don’t want anything. All the other configuration takes place in the conf file. Here is a link an example ngircd.conf file. Feel free to use it if you’d like. The documentation here I found very helpful as well. Spend a few bucks and get a fancy domain name to go along with your fresh server as well! (or a free subdomain from someone like freedns.afraid.org)

Security

I recommend using a small VPS for you IRC server. If you know what you are doing, you can always host it from your home as well. Be sure to have a proper firewall and other precautions in place. For my configuration I only allow SSL connections on port 6697, the users must know the password to connect, and additional security features are enabled from the ngircd.conf file. The most important part is generating a strong SSL/TLS certificate. Follow the instructions here depending on which protocol your daemon was built with.

Final Thoughts

There are some other alternatives if IRC still doesn’t fit your needs. It can’t do fancy things like voice/video chat, it’s not the best at sharing multimedia. For those types of tasks one might look at some of the current open source Slack-a-likes; Rocket.chat, or Let’s Chat. There is also a very cool new distributed chat platform called Matrix, with its glossy interface being Riot.im. I’ll leave you with that thought and those other options to explore. Happy chatting!

[ originally posted 2018 ]