User Tools

Site Tools


installing_irc_at_home

This is an old revision of the document!


Installing IRC at Home

Not because you need to, but because you can.

Summary

This how-to covers installing and IRC server and clients for a typical home LAN. The hardware and OS used is a Raspberry Pi 2 with FreeBSD 12.1, but any system with a recent BSD variant should work with little need or no modification.

At the time of writing, the SDF servers run InspIRCd for the server side and ircII for the default client. The same software is used in this document. In addition, this how-to covers Pidgin, a Windows/Mac GUI client that can be used for IRC as well as other instant messaging protocols.

Installing Server-Side Software

This section details how to install the InspIRCd server as well as ircII client using pkgtool.

Log in as root to run the following pkg commands:

  • pkg update
  • pkg install inspircd
  • pkg install ircii

Configuring InspIRCd

Configuring the server software is by far the majority of effort required. I am adding some diffs of the config at the end of this document so you can check your work.

You'll need to run everything in this section as the root user.

First, change directory to /usr/local/etc/inspircd. This is where all of the configuration files are.

inspircd.conf

Next, use your favorite text editor to open up inspircd.conf.

The file is quite large, but the majority is comments and instructions. The changes to be made will include section names. Section names are in centered and written in all caps inside the file, so they're easy to find.

SERVER DESCRIPTION

Start with the section entitled SERVER DESCRIPTION. Here you will find the server configuration spread out over several lines and interspersed with comments. For the examples in this document, I am naming the server “beastie” after the FreeBSD mascot. My server section (without the comments) looks like this:

<server name="beastie.home.lan"
  description="Beastie’s World"
  network="Home">

As noted in the configuration file's comments, this DNS name does not need to resolve to an IP address, so don't worry if your only DNS is provided by your ISP.

ADMIN INFORMATION

The next section to be edited is ADMIN INFORMATION. This is where the server administrator's contact information goes. Like the server description, it is purely informational and does not have to be a real email address or resolvable DNS name. Following my example so far, here's what I have:

<admin
  name="Beastie"
  nick="beastie"
  email="beastie@beastie.home.lan">

Again, this is all just a made-up tribute to the FreeBSD mascot. You can enter whatever you like for your set-up.

CONNECTIONS CONFIGURATION

No changes are needed for the PORT CONFIGURATION, so we can move on to CONNECTIONS CONFIGURATION. The changes here involve changing resolvehostnames=“yes” to resolvehostnames=“no”.

The reason for this is entirely because of DNS. Unless you are running a robust DNS infrastructure on your LAN, chances are good that your ISP's router (the typical home LAN DNS server) will not do reverse look-ups. Setting resolvehostnames=“no” will instruct InspIRCd to not even try, sparing you countless warning messages.

If you have a more robust DNS server on your network, you can certainly leave this as-is. If you see errors like “Could not resolve your hostname: Malformed answer” when logging in, it means the reverse lookups are not working.

There are two resolvehostnames=“yes” entries that must be changed. They should look like this when you're done:

resolvehostnames="no"

Do not give into the temptation to comment the lines out. This is not the same as setting it to no.

Sections left as default

These are the sections that do not need changes and can be skipped over:

  • CIDR CONFIGURATION
  • MISCELLANEOUS CONFIGURATION
  • DNS SERVER
  • PID FILE
  • LIST MODE LIMITS
  • SERVER OPTIONS
  • PERFORMANCE CONFIGURATION
  • SECURITY CONFIGURATION
  • LIMITS CONFIGURATION
  • PATHS CONFIGURATION
  • WHOWAS OPTIONS
  • BAN OPTIONS
  • INSANE BAN OPTIONS

MODULES

The next section to need editing is MODULES. You will have scrolled by quite a few sections to get there.

There is only one change to be made in the MODULES section and that is to uncomment the line that reads: #<include file=“modules.conf”>, by removing the leading hash character.

It should look like this when you're done:

<include file="modules.conf">

This has the effect of instructing InspIRCd to process all the directives in modules.conf as well as the ones in the main configuration file. The reason for doing this is to enable the permanent channels feature. We'll get to that as soon as we save the changes to the inspircd.conf file.

There is no need to change anything in the SERVICES CONFIGURATION section or anything else in inspircd.conf.

modules.conf

After including modules.conf inside of inspircd.conf, the next step is to edit modules.conf. The entire reason for using modules.conf in this how-to document is to use the permanent channel feature. This involves uncommenting one line and adding a line just below.

Open modules.conf and search for: #<module name=“permchannels”>. Uncomment the line by removing the leading hash (#).

It should look like this:

<module name="permchannels">

A little less than 20 lines later, you will see: #<permchannels channel=“#opers” modes=“isP” topic=“Opers only.”>

This is an example line showing how to configure a permanent channel. On the line after that, you can add your own. Mine looks like this:

<permchannels channel="#home" topic="Is where the <3 is.">

Notice I removed the modes attribute. It is not required, and defaults suit me fine here.

There is no more configuration needed for the modules.conf file.

motd.txt

Finally, we get to the last InspIRCd file that needs to be edited. This is the motd.txt file that is displayed whenever users log onto the IRC server.

The reason for editing this is to simplify things. The included motd.txt file includes some fabulous ASCII art that causes any server messages to scroll right off the screen. I've changed mine to be a simple one-liner, like this:

Welcome to Beastie's World.

And that's it for configuration of the InspIRCd server. There are diffs at the end of this document if you want something to check against. Otherwise, it's time to start it up.

Starting InspIRCd

The following two commands will enable and start inspircd:

  • sysrc inspircd_enable=“YES”
  • service inspircd start

To verify it's up and running, use:

  • service inspircd status
  • sockstat | grep 6667

If all is well, you should see something like this:

root@beastie:/usr/local/etc/inspircd # service inspircd status
inspircd is running as pid 7179.
root@beastie:/usr/local/etc/inspircd # sockstat -l | grep 6667
ircd     inspircd   7179  13 tcp46  *:6667                *:*

Port 6667/TCP is the de facto standard port for IRC. Sockstat -l shows that it's a listening port.

Local Client Connection

Seeing InspIRCd running is one thing. Connecting to it is another. We'll use the ircII client that was installed at the beginning of this how-to to verify.

For this part you will need to be a regular, non-root user.

The command is: irc <nickname> localhost

It should look something like this when successful:

$ irc beastie localhost
*** Connecting to port 6667 of server localhost
*** Welcome to the Home IRC Network beastie!user@127.0.0.1 (from
+beastie.home.lan)
*** Your host is beastie.home.lan, running version InspIRCd-3
*** This server was created 07:39:10 Jul 02 2020
*** umodes available iosw, channel modes available Pbiklmnopstv
*** AWAYLEN=200 CASEMAPPING=ascii CHANLIMIT=#:20 CHANMODES=b,k,l,Pimnpst
+CHANNELLEN=64 CHANTYPES=# ELIST=CMNTU HOSTLEN=64 KEYLEN=32 KICKLEN=255
+LINELEN=512 MAXLIST=b:100 are supported by this server
*** MAXTARGETS=20 MODES=20 NETWORK=Home NICKLEN=30 PREFIX=(ov)@+ SAFELIST
+STATUSMSG=@+ TOPICLEN=307 USERLEN=10 WHOX are supported by this server
*** There are 0 users and 0 invisible on 1 servers
*** 1 unknown connections
*** 0 channels have been formed
*** This server has 0 clients and 0 servers connected
*** Current local users: 0  Max: 1
*** Current global users: 0  Max: 1
*** beastie.home.lan message of the day
***  Welcome to Beastie's World.

If you've made it to this point without any errors, congratulations, InspIRCd is up and running.

The remainder of this how-to will focus on the IRC client.

Customizing ircII

In this section, there are a couple of time saving customizations that can be made. One is to specify a default server and the other is to specify a default channel. Neither are strictly necessary, but are included to save some keystrokes.

By the time you complete this short section, you can simply type irc on the command-line and go to channel #home on your server.

ircII.servers

The first file is created in the /usr/local/share/irc/ directory. It's called ircII.servers and contains a list of server names, each on its own line.

Here's what it looks like if you've been using the names in this how-to:

# cat /usr/local/share/irc/ircII.servers
beastie

You need to be root to create or modify the file and the effect is system-wide. Anyone using the ircII client will have the same server.

.ircrc

The next file is .ircrc and it resides in the root of each user's home directory. You should be logged in as a non-root user to create it.

To go straight to the #home channel when logging on, .ircrc should look like this:

$ cat .ircrc
channel #home

Of course, if you then decide to connect to the SDF IRC server using your shiny new installation of ircII at home, you will end up creating a channel called #home. Further customization of this file can be done, but is beyond the scope of this how-to.

InspIRCd Diffs

I promised you diffs of the customizations made to the InspIRCd configuration. Here they are:

inspircd.conf

89c89
<         name="penguin.omega.org"
---
>         name="beastie.home.lan"
92c92
<         description="Waddle World"
---
>         description="Beastie's World"
102c102
<         network="Omega">
---
>         network="Home">
113c113
<        name="Johnny English"
---
>        name="Beastie"
116c116
<        nick="MI5"
---
>        nick="beastie"
120c120
<        email="MI5@the.best.secret.agent">
---
>        email="beastie@beastie.home.lan">
313c313
<          resolvehostnames="yes"
---
>          resolvehostnames="no"
449c449
<          resolvehostnames="yes"
---
>          resolvehostnames="no"
1044c1044
< #<include file="modules.conf">
---
> <include file="modules.conf">

modules.conf

1683c1683
< #<module name="permchannels">
---
> <module name="permchannels">
1700a1701
> <permchannels channel="#home" topic="Is where the <3 is.">

motd.txt

motd.txt is not included since it is simply removing everything and replacing with a single line.

Pidgin for GUI clients

There are many IRC clients available for GUI clients like Windows or MacOS. Pidgin was chosen because it is available on a wide variety of platforms and also supports more than one messaging protocol. It's also very simplistic compared to IRC-specific software and that can be a plus for novice users.

Start by downloading from http://pidgin.im/ and installing.

Next, create an account.

  • Choose a protocol of IRC.
  • Fill in the login, server, and password with the information you use to log into the FreeBSD server.
  • Check the remember password if you like, but be aware that it is saved in clear text in the %APPDATA% directory.
  • The remaining tabs may be left with default settings.

Once you can successfully connect to the server, you can add the default channel in Pidgin's Buddy List.

  • Open the Buddy List.
  • Choose the Buddies menu item and select Add Chat from the drop-down.
  • Make sure your IRC Account is shown at the top.
  • Fill in the channel name.
  • Check the box for Automatically join…

Finally, give the new connection a test and see if you end up in the #home channel on your local server.

See this WikiHow article for a guided step-by-step with pictures: https://www.wikihow.com/Automatically-Join-an-IRC-Channel-in-Pidgin

Go Forth and Conquer

Now that you're running IRC at home, remember to get everyone else in your household using ircII or Pidgin so you can pester them with messages with just the stroke of a keyboard.

installing_irc_at_home.1593709557.txt.gz · Last modified: 2020/07/02 17:05 by waxphilosophic