Abstract: In response to an email request, I came up with this how-to on setting up a Gopher site.
“Talk Geek To Me” episode number Hex 14 was dedicated to the
Gopher protocol. Shortly after that episode was released, I got email asking me for a how-to on setting up a Gopher site.
However, before I get into it, I feel I need to make a few comments on Gopher’s relevance today. Some people think that talking about Gopher sites in 2010 is a joke. As part of my research on this How-to, I looked for info on setting up a blog via Gopher (called a phlog or glog in the slang.) What was google’s top page? A how-to on this topic, because it makes a fine April Fool’s day joke for you readership!
Gopher is relevant, but will it ever rival the web? Of course not. But the point is something I try to continually stress in these audiocasts. The right tool for the right job!
Should Apache be the only means of disseminating content on the interweb, “the right tool for the right job!”
Should web-pages replace all the other means of communication in the world, “the right tool for the right job!”
Should texting replace telephones, “the right tool for the right job!”
Sorry for the repetition, but I gotta get the point across. We need tools to fit the tasks, we need to make technology work for us, instead of fitting into whatever technology is put upon us!
Do you advocate taking Gopher off the net?! I have an idea, let’s force all people who advocate such a thing to use Windows only for the rest of their lives, and see how they like using something that is not their choice. Or we can take those Windows users who want to force a choice upon others and compel them to use UNIX. Get the point?
Okay, rant mode off. Why Gopher? Gopher serves the information underground. Some of us need a “back channel,” on the Interweb. Not everybody can be “mainstream.” Usenet newsgroups used to serve this function, but the spammers killed that, leaving Usenet as a good way of transferring media files and not much else.
I had an interesting email back-and-forth with my net-friend Jason Scott of textfiles.com fame. He is considering putting some of his efforts into preserving information on the death of FTP. Now, I don’t consider FTP to be dead yet. I can name IRL friends who work with firms that have to toss big files around the interweb (like architectural plans) and graphical FTP clients are the way to go for such tasks. But OTOH, I had to transfer a video as a one-shot-deal to another friend who is actually a paid MS admin, and the only client he knew was Internet Explorer! So, FTP archives are a thing of the past, forget about the more mundane FSP and FXP completely. SSH rules untrusted file transfers now.
This was the email exchange I had with Jason Scott. He contended that my “MS Admin” case was typical, and that me and my friend, who works at the Architectural firm, were the “special cases.” He has a point, but so do I. I asked him about Gopher via email and he said, in so many words, that there is “enough of it being saved.” I guess one man’s “enough saved,” is another man’s “still alive.”
So where does Gopher fit in? Gopher is an alternative to the FTP archive! In Gopherspace you set up a directory of pure content, and let your net-friends grab at it. Only your computer-geeky friends will go for this, and they have to use Lynx or Firefox with the Overbite extension. But if you want that platform, you can still have it. Why else? This protocol is designed to be handled by small computers, and will work with limited networks. No need for big dedicated server farms, you can do it yourself if you want. But that is not what this audiocast is about. This audiocast is about setting up the site. Let’s explore this now.
It is hard to get an email that says “please give us a how to on this.” And not just because my preference is to be conceptual in these audiocasts. I don’t want to force “my way” upon others, so I feel that getting the concepts out is good, and people who “get” those concepts can find their own way. But it looks like a how-to is needed here.
The other problem is to stick to answering the question. In the email I got, the analogy was made to writing HTML and CSS pages and using FTP to get them onto a server farm’s node. So this how-to assumes that you got an account on sdf.lonestar.org, a big traditional UNIX farm running Netbsd on DEC machines, and that you have validated it which will give you FTP access to your own directory. So, come to this with a shell account on sdf, AKA freeshell.org. Your FTP box will be ftp.freeshell.org and your shell box will be either otaku.freeshell.org or tty.freeshell.org or sdf.lonestar.org.
Another problem of “sticking to the question” is that the question can be interpreted in three ways. First, how to set up a site if your a total newb in regards to Gopher, second, how to set up a better looking site with some navigation functions similar to HTML’s page linking functions, and thirdly, how to set up a blog via gopher, because if your using Gopher to get text out, that is different than using it to make a download directory (which is the traditional function.)
I’m therefore going to give you these three ways of making a gopher site, and will give you them in order of difficulty. I’ll also stick to using the modern gophermap file to create links, as it is universal amongst modern gopher servers. There is another way with “dotfiles,” but I will leave this as an extra-credit exercise to the listener if they are that curious.
First, what is involved in getting started with sdf.lonestar.org AKA freeshell.org? Well, go to their website. It is a free service and setting up is as easy as using a telnet applet over their web-page. You will want FTP, so you will have to validate your account. You can mail them a dollar, paypal them a fast five, or get a lifetime membership for $35. I took the later, because it gives you access to a faster shell server. You guys know me and my need for speed, right?
Once you have followed the easy instructions and created an account, and then validate it by sending them some amount of money in some way, you are ready to start. SSH into your account, for me the command was ssh deepgeek @ @ otaku.freeshell.org. Thus, my username is deepgeek. When you are logged in, use the command “mkgopher” to set up your space. While there, do this command, “cd gopher,” then “ pwd.” This will make their system tell you your gopher directories place in their file-servers file hierarchy, which you need to give to your FTP client of choice. Your gopherspace URL will be “gopher://sdf.lonestar.org/1/users/yourloginid.” Thus, my example site is at “gopher://sdf.lonestar.org/1/users/deepgeek.”
Note the weird numeral “1” right after the “dot org.” URL’s in gopher are different in that they have an odd predefined type code in the first part after the machine’s name that tells your gopher browser what it is looking at. Thus, a directory like my "gopher home" directory starts with a “1” and a text file will start with a “0.” This, along with gopher working over port 70, will confuse non-gopher-ready web browsers, and if something is mal-formatted, check that first, as it is the most likely culprit for an ugly screen.
The easiest way of doing a Gopher site is to create a directory of files. Really, that’s all there is too it. Gopher is an answer to a question, “how can I have an FTP archive site without the hassle?” This is the actual “itch” Gopher was made to scratch. For those of you who may not remember FTP archives, heres a little explanation. A while ago, there where what was known as "FTP Archives". You would log in to these anonymously and be presented with a directory of files, from which you could download. Gopher supplied a twist on this paradigm, which was not to bother loging in, and being able to view directories, texts, and images, all on your favorite browser (sans the "images" part for textmode browsers.) If you point your gopher-enabled browser to gopher://sdf.org/1/users/deepgeek/no-gophermap You will see a directory with an image, an ogg, a text, a HTML file. If you click the image or text it will display, so will the HTML. The ogg should download.
Yes, I know it is hard to believe, but it can be that simple.
Okay, I know I started by showing you how to build a site by using the defaults to create a monolithic directory, but let’s ask ”what do you mean by “a gopher site?”” You may mean "an interconnected series of pages", or you may want to have the Gopher version of a blog, which is called a phlog (with a ph) for some reason. This example will be, again, absurdly easy, but will rely on a little help from phlogging software. Instead of Ftping files in to your gopherspace, log in to your shell at freeshell.org. cd into your gopher directory and then mkdir a directory called phlog. Now, using your text editor of choice, begin making a few .txt files. These will be your phlog entries. Now, to really make it a phlog, we are going to use some software at freeshell.org. We will use mkgopherentry to create a good-looking gophermap file. So, from the directory you created your text files, run this command:
Where “title” is the title of the entry, and textfile.txt, well, is the textfile you created. At this point, mkgopherentry will create or add an entry in a gophermap file to show the title, the first paragraph of the textfile, and a link called "continued..." that will take the user to the entry.
Again, it’s that easy. To see my example, see gopher://sdf.lonestar.org/1/users/deepgeek/phlog.
Okay, now for the hard one, which really isn’t hard at all. Building your own gophermap file. Remember gopher://sdf.lonestar.org/1/users/deepgeek/no-gophermap? I have an identical directory in gopher://sdf.lonestar.org/1/users/deepgeek, only it has a gophermap I built myself. Now, when you check out this Gopher directory, you don’t see the gophermap file listed. But I did write the gophermap file to be a tutorial unto itself. Here is how to see the file. Remember when I talked about the number in the Gopher URL that told the browser what file type to expect? You change that number to a “0” and specify the gophermap file itself like this-gopher://sdf.lonestar.org/0/users/deepgeek/gophermap I would recommend that you open both in different tabs in Firefox.
Building a gophermap file is easy. You can do it from your SSH session with your favorite editor. The file is basically a text file, and the lines you type are comments that get displayed. You can also add links right in the file.
Linking from within a gophermap file is easy, you start a new line but you use a special format for the link line, and this line is automatically detected by the server. The format is this:
Where X is a code that describes the content linked to. “Some Text Here,” is the text you want to display as a link. A <tab>, and “/path/to/content.” If the file is in the same directory, you can just use the filename. If the content is on the same server, you don’t even need the “example.org,” (or in this case, “sdf.lonestar.org,”) because the server will make the right assumption. The last part, “N” is the port number. This is usually “70” for gopher service, again, leave it out for the right default.
Let’s take a real life example:
Section by section, the line starts with a numeral zero, which says “this link will point to a text file. Then, without spaces or a tab, you see the phrase “Beef Oriental Recipe.” This phrase will be the highlighted and click-able link that will be displayed. Then a tab, then “/users/deepgeek/beef-oriental.txt”. This is where on the server the file is. It starts with the root of the gopher data on the server, which you should not worry about as it is not your concern. But if you are curious, let’s say the system was set up to reside in a directory called “/var/gopher”, then this really means “the text file located at /var/gopher/users/deepgeek/beef-oriental.txt”. Then a tab, then “sdf.org”, which is the domain name in the Interweb where this is. Then a tab, and the number 70, which is the default port for gopher service.
The useful media descriptors are:
To create a link to an external web server, you would change “/path/to/content” with "URL:www.style-url.com/whatever.html."
This should be enough to start you playing. The only consideration that I can give is that you might have to break things down into many directories if you wanted to keep these pages short and simple. I hope this helps you start on your own Gopher site!