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
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 = firstname.lastname@example.org 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.
Using the excellent irssi client (
net-irc/irssi on Gentoo):
$ irssi -c localhost
When you specify a server on the command line with
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
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.