Configure IRC

From Organic Design
Jump to: navigation, search
Legacy.svg Legacy: This article describes a concept that has been superseded in the course of ongoing development on the Organic Design wiki. Please do not develop this any further or base work on this concept, this is only useful for a historic record of work done. You may find a link to the currently used concept or function in this article, if not you can contact the author to find out what has taken the place of this legacy item.
Procedure.svg Configure IRC
Organic Design procedure


An IRC server can be set up on the local LAN so that chat is available independently of the Internet connection. Traditionally the problem with setting up an IRC client has been configurational complexity, but the "Next Generation IRC client" (ngIRCd) can literally be set up in minutes. On Ubuntu or Debian systems it can be installed with apt-get install ngircd.


The Debian package is installed with gnu-tls for SSL support but we use openssl and due to this clients cannot make SSL connections with the package when ngircd is installed via apt-get as an error such as the following will be encountered (and logged into syslog).

ngircd[2639]: gnutls_handshake: Could not negotiate a supported cipher suite.

So we need to compile from source and configure it -with-openssl instead. First ensure you have the latest libssl-dev package installed and then download, unpack and configure. I prefer to keep its files in /etc/ngircd.

apt-get install libssl-dev
mkdir /etc/ngircd
cd /etc/ngircd
tar -zxf ngircd-20.2.tar.gz
cd ngircd-20.2
./configure --prefix=/usr --with-openssl

If it has successfully compiled you'll get something like the following message:

ngIRCd 20.2 has been configured with the following options:

               Host: x86_64-unknown-linux-gnu
           Compiler: gcc -std=gnu99
     Compiler flags: -g -O2 -pipe -W -Wall -Wpointer-arith -Wstrict-prototypes -fstack-protector -DSYSCONFDIR='"$(sysconfdir)"'
          Libraries: -lssl -lcrypto -lz 

    'ngircd' binary: /usr/sbin
 Configuration file: /usr/etc
       Manual pages: /usr/share/man
      Documentation: /usr/share/doc/ngircd

     Syslog support: yes     Enable debug code: no
   zlib compression: yes           IRC sniffer: no
   Use TCP Wrappers: no        Strict RFC mode: no
      IDENT support: no          IRC+ protocol: yes
      IPv6 protocol: no            I/O backend: "epoll(), select()"
        PAM support: no            SSL support: openssl
   libiconv support: no

You can then make and install in the usual fashion:

make install

Now a self-signed certificate needs to be generated, make sure to remember the password ("secret" in the following example) it asks for a the start of the procedure, and use your server's IRC domain address for the common name entry.

cd /etc/ngircd
openssl req -newkey rsa:2048 -x509 -keyout server-key.pem -out server-cert.pem -days 1461

The configuration file in /etc/ngircd/ngircd.conf need to be updated to refer to the certificate files.

    Ports = 6667
    KeyFile = /etc/ngircd/server-key.pem
    CertFile = /etc/ngircd/server-cert.pem
    KeyFilePassword = secret

If you're server connects to other server and you wish those connections to also be encrypted, you must add the following directive to their respective [Server] sections:

SSLConnect = yes


Only a few adjustments need to be made to the configuration in /etc/ngircd/ngircd.conf to get a functional server up and running; set the Name value of the server to an IP or domain name it can be reachable by within the LAN or Internet. You can set a global password which simplifies the set up of users (any username will work with the global password) by setting the Password value. We also add the PredefChannelsOnly = yes. You may wish to refine the configuration further by setting up specific users and channels.

  • You may beed to disable DNS lookups with DNS = no if connections are being refused due to IP addresses not matching their reverse lookup.
  • Another useful directive is MaxNickLength (all servers in the group must have the same value if this is used)

Connecting servers

To have IRC servers connect together to form larger channels, fill in [Server] sections in the configuration. For each server to connect to, specify the Name, Port (leave empty to allow only incoming connections from the remote server), and ensure that MyPassword and PeerPassword settings compliment each other in both directions.

  • Note: when one ngircd connects to another using SSL, then only local SSL clients will be connected to the remote server. To allow non-SSL clients to join a second [Server] section will need to be created which does not use SSL.

Debugging and testing

To get debugging output in the case of problems, stop the server from init.d and then run from shell with the -n switch to have output logged to STDOUT as follows:

/etc/init.d/ngircd stop
ngircd -n


We use the default instant messaging client that comes with Ubuntu which is Pidgin. First set up an account on your server from the "Buddies" menu. This is where you enter your name and the global password along with the address/Name of the server. In the advanced tab, there are options for connecting with SSL and for disabling the annoying Away message!

When the chat opens in the channel, select "Save" from the "Conversation" menu to save the channel in the "Buddies" list and allow it to connect on start up etc. You may want to right-click on it in the Buddie list and set it to "auto join" and "persistent" if you want to always be present in that channel while Pidgin is running.

If running Pidgin you can which is currently just all the Skype ones (we've all been using mainly skype until now and would like to keep the same emoticons). It's a zipped up folder called "OD" which should be unpacked into ~/.purple/smileys. Next open the main Pidgin "Buddy list" window, then go into Preferences from the Tools menu, go to the Themes tab and select "OD" for the "Smiley theme". See this link for details about finding the Smileys folder on Windows.

Note: The theme icons currently work only for IRC and XMPP, to make them also work for other protocols paste an additional section into the "theme" text file.


The MediaWiki IRC channel is on freenode, see freenode FAQ for details about registering a nickname etc

We have our #organicdesign channel running from, it uses a password to connect (ask your systems administrator for that) and connects over SSL on port 16667.

See also