Donald Burr is a wonderful human being; he’s what Steve calls “good people”. Out of plain old the goodness of his heart, he has been letting me mooch off of his server for the IRC chat we enjoy during the live show. I love that I get this free ride, but when something goes wrong, I have no way of fixing it myself and we have to bother Donald. If he’s not just sitting by his computer at 5pm on a Sunday night with nothing better to do, then we’re kind of stuck.
Whenever there’s an Apple announcement, the NosillaCastaways gather in the live chat room (even though I don’t broadcast during them). When we all trouped into the chat room this week, Donald’s IRC server’s voicebot had stopped functioning. That meant Steve, as the only admin other than Donald, had to give each person voice as they came in. Even I couldn’t chat without his permission, and you can just guess how well that went off. Then towards the end of the announcement, the server simply threw all of us out of the chat room.
So, I’ve decided it’s time to stop mooching off of him and create my own IRC chat server. All this Taming the Terminal stuff has really emboldened me to take on bigger and bigger challenges. I mean, how hard could this be, right?I wrote to Bart and told them what I was planning to do. Somewhere in the back of my mind it occurred to me that there might be a reason I shouldn’t just jump in and do this by myself. I had this weird feeling that it might have more challenges than I was expecting. Here’s what he wrote back:
Firstly – beware, you are trending on a mine field – IRC is one of the more troublesome protocols on the net.
I would strongly advise you consider keeping this server and your web server totally separate. That way, if the chat server gets compromised, podfeet continue to exist. A cheap $5 or $10 a month droplet on Digital Ocean, or a similar VM on Linnode should be plenty for a server that only has one job to do.
Secondly – check your TOS with any provider you may use for IRC – many hosting companies explicitly ban IRC on their networks because of its long long long history of use a command and control for malware. If you install IRC on a server hosted at a company that does not allow it, you may find your server killed without notice. You definitely don’t want that to happen if you use the same server you do for the web.
Well I guess my instincts were correct. Like Bart said, it sure sounds like fun, though, doesn’t it?
While I waited for the weekend come along when we could play with it together, I thought maybe there’s no harm in installing an IRC server on a spare Mac inside my network. Don’t worry, you don’t need to play discordant music of doom. Nothing bad happened, but it is relevant what we’re going to do.
Remember I recently installed iPerf to test my network and ImageMagick to modify images, both through the Homebrew repository through the command line on my Mac. I decided to start my search for IRC servers in Homebrew. I found a server called ngIRC, which stands for next generation IRC. I installed Homebrew on my spare Mac, and then ngIRC via Hombrew. Easy Peasy. The installation comes with a configuration file that’s well documented so it looked to be pretty easy to configure. After I installed ngIRC locally, I waited for the weekend to talk more to Bart.
On Saturday, Bart and I got together to talk about getting a real server set up. I remember hearing about DigitalOcean from Joe Hecht about a year ago, and if Bart endorsed it, who was I to argue? Bart has a code that gives him credits if others sign up with it, and it even gave me some credits too (use this URL if you want to help Bart and get credits too: https://m.do.co/c/5f33d053187b). I punched about 3 buttons, entered a credit card and I had a virtual server set up. Seriously, it was as easy as Joe said it was! Since IRC is totally text-based, I knew I didn’t need a big server, so I chose their $5/month plan. That gives me 1 CPU with 512MB of RAM, 20GB of storage on an SSD, and 1000GB (1TB) of data transfer. Seriously overkill for what I want to do. By the way, DigitalOcean doesn’t actually charge by the month, it’s by the hour so if you want to test something for a few hours and then destroy it, you’re only talking $0.007/hour!
Ok, so I’ve got a Linux (CentOS) server set up, now we need to find an IRC server package. Bart explained that Homebrew is really meant for experimenting with stuff, like, at home. He suggested I’d be better off using YUM. YUM, which stands for Yellowdog Updater, Modified, is an open-source command-line package-management utility for Linux. The benefit, as Bart explained it to me, is that it will allow me to keep the server updated without doing anything by hand.
We ran the command
yum search irc and didn’t find any IRC servers. Bart then suggested that we needed to get EPEL. EPEL is the Extra Packages for Enterprise Linux, especially Fedora. In other words, EPEL gives you more stuff you can install with YUM.
At this point I started to get a wee bit confused. I knew we’d installed CentOS as my Linux operating system, now we’re talking about Fedora but Bart also mentioned Red Hat. If you’re as confused as I was, let me explain what Bart explained to me. I also found a great diagram at danielmiessler.com/… that I’ve put in the shownotes that might help.
Fedora is run by the Redhat company. It’s community-driven, focused on quick releases to get features and functionality out quickly, and it is free. Redhat is based on Fedora, run by Redhat (not the community), focuses on long releases for stability, and it’s their commercial (paid-for) product. You may see it written RHEL which stands for Redhat Enterprise Linux. CentOS is based off of the commercial releases of Redhat (so think long, stable releases) but it’s run by the community. Basically centOS is Redhat without the cost OR support.
From this I gather that if EPEL is for Fedora, it will work with Redhat and CentOS. Ok, so we’ve got YUM, how do we get EPEL to work with it? Pretty easy, we just install it with YUM. Once we installed EPEL, we could search again for IRC and guess what we found? ngIRC, the exact same IRC server I installed on my spare Mac!
This was great news because now we know I can spend some time setting up the configuration files locally to get them the way I like them and then simply push that file up to my new fancy DigitalOcean server, and we’ll be good to go. I’m going to need Bart’s help with this for sure, and he says there’s some fancy firewall stuff he’ll have to do in order for people to actually get into the server.
The other thing we needed to do on the server side was connect the server somehow to podfeet. This was fun and helped me to understand even better something I’d done before. Let’s walk through the bits and bobs that make this work.
I now have three companies I’m working with. GoDaddy is where I have bought the domain registration for podfeet.com. I don’t have a physical server at GoDaddy, it’s simply where I control the domain and tell the Internet how to find podfeet-related things. For example, when you type podfeet.com, you’re directed to 126.96.36.199. This is accomplished through what’s called an A Record. With the A Record, when I moved my hosting services (the hardware where my web server lives) to BlueHost, I used the A Record for podfeet.com to link the domain name to that new IP address.
Now we’ve got a second server, the one at DigitalOcean that will be hosting the IRC Chat server. Bart and I decided chat.podfeet.com would be a good name for it, so I went into Go Daddy again and in the domain podfeet.com, I added a second A Record, this time linking chat.podfeet.com to 188.8.131.52, the IP address of my DigitalOcean server. If this is confusing. I created a pretty little diagram with draw.io showing the three services and how they’re interconnected with these fancy A Records.
The stage has now been set for phase 2, and that’s actually getting the server started with the right configuration file. I’m definitely going to need Bart’s help for this, even on my internal network, I haven’t figured out how to make the darn thing start up!
If you come to the live chat room from time to time, you actually care about this whole story because you will need to change your IRC chat room setting to get to the new server when it’s up and running. I’m giving you fair warning to pay attention to Twitter, Facebook, G+, LinkedIn and the podcast itself for instructions on how to connect when it goes live. Of course I will make sure that podfeet.com/live has the new server in the embedded chat client as a fallback.
The one thing we’ll probably lose is the chat for the NosillaCast app, because Donald has hard coded his server into it. I hope this isn’t too much of a hardship but it hasn’t been updated in ages and like I said up front, he has a life of his own so he hasn’t been able to spend too much time on it. If anyone out there wants to take a crack at writing a NosillaCast app, I’ll be glad to supply the assets and do whatever else I can to help make it happen.
Stay tuned for phase two of the chat.podfeet.com IRC server saga.