Tonight I've been looking into ways to set up a local chat system for
students in one of my courses. My initial thought was to use the
NetKit talk
at talkd
programs, but I couldn't find an active
homepage. Maybe they are so mature that noone needs to touch the
code, but I expect they are actually just quietly dying in the corners
of assorted harddrives, without any users to love them.
Since part of the goal of my course is to get the students up to speed on common open source development tools, my next thought was to go with a local IRC server. I know that there many wonderful public IRC servers (e.g. freenode), but why use a free service when you can run the service locally? Anyhow, here's my setup.
Local IRC server
There seem to be a number of these out there. I chose ngIRCd,
because it's packaged for Gentoo (net-irc/ngircd
), and it seems to
be both cleanly coded and actively maintained (in Git ☺).
Installation was a simple:
# emerge -av ngircd
# emacs /etc/ngircd/ngircd.conf
# cat /etc/ngircd/ngircd.conf
[Global]
Name = irc.example.com
AdminInfo1 = John Doe
AdminInfo2 = 123 Street Rd.
AdminEMail = jdoe@example.com
Info = bla bla bla
ServerGID = nogroup
ServerUID = ngircd
[Options]
PAM = no
# /etc/init.d/ngircd restart
I didn't add ngircd
to the default runlevel. I'll just start it by
hand whenever I want to use it.
Local connections
Using the excellent irssi client (net-irc/irssi
on Gentoo):
$ irssi -c localhost
When you specify a server on the command line with -c server
,
irssi
won't connect to any other servers for which you've configured
automatic connection. In my case, this is what I want.
Exposing the IRC server on a remote host
Alright, I've got an IRC server running on my laptop, but I'm behind a firewall. I can expose my IRC server to the students by forwarding the IRC port to our department server, where the students all have shell accounts.
$ ssh -R localhost:6667:localhost:6667 physics.uni.edu
If someone else is already using port 6667 on the department server, it's easy to use another one:
$ ssh -R localhost:6668:localhost:6667 physics.uni.edu
Students can then connect by SSHing into the department server
and running irssi
there:
student@home $ ssh physics.uni.edu
student@physics $ irssi -c localhost -p 6668
And that's all there is too it! An easy way to introduce people to a popular tool.