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|SSH]] 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. [IRC]: http://en.wikipedia.org/wiki/Internet_Relay_Chat [freenode]: http://freenode.net/ [ngIRCd]: http://ngircd.barton.de/ [[!tag tags/web]] [[!tag tags/tools]]