I have set up my own gopher hole, running on pygopherd. This post goes over how I got started and what I have learned so far. In the early 1990s I was a fairly heavy consumer of gopher based content, but I never hosted my own site or created my own content, until now.

At its heart, gopher is a text oriented hyper linked document service which lets you explore information though a hierarchical directory and file structure, both on a local server and across remote servers throughout the entire gopher space. The gopher protocol was developed in 1991.

Setting up the Gopher Server

To get started, I decided to go with John Goerzen’s PyGopherd, a current Internet Gopher server written in Python. It supports RFC 1436 Gopher, Gopher+, WAP and HTML.

Initially I decided to run the gopher hole on a Pine Rock64 SBC I had available. The Rock64 machine is running Ubuntu 19.10, so getting the server installed was a simply:

$ sudo apt install pygopherd
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  python-dictclient
Use 'sudo apt autoremove' to remove it.
The following NEW packages will be installed:
  pygopherd
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 171 kB of archives.
After this operation, 512 kB of additional disk space will be used.
Get:1 http://ports.ubuntu.com/ubuntu-ports eoan/universe arm64 pygopherd all 2.0.18.5 [171 kB]
Fetched 171 kB in 1s (231 kB/s)
Selecting previously unselected package pygopherd.
(Reading database ... 203440 files and directories currently installed.)
Preparing to unpack .../pygopherd_2.0.18.5_all.deb ...
Unpacking pygopherd (2.0.18.5) ...
Setting up pygopherd (2.0.18.5) ...
Gopher account already in place; not modifying.
Processing triggers for man-db (2.8.7-3) ...
Processing triggers for systemd (242-7ubuntu3.8) ...
$

Installation Highlights:

  • Installation creates and starts a SystemD managed service named pygopherd.
  • Installation created an /etc/pygopherd/pygopherd.conf file that I edited to suit my needs. After saving mu changes to the configuration file, I restarted the pygopherd service to pick up the configuration changes.
  • The installation creates a /var/gopher/ directory in which to house gopher content.
  • Installation does many other things, but the most important thing in my opinion is it installs a man page for the program, and it should be reviewed in its entirety. Seriously, go read it.

The last thing I did was edit the gophermap file in /var/gopher/ to link to the content and sites I wanted to share. This is somewhat easier said than done for the uninitiated. This is the document I used to get started, Highway to The Gopher Zone. Be sure your text editor does not convert tabs to spaces, and be any ASCII art or text information you are sharing does not contain embedded tabs. Tabs are important to the format of the gophermap file, and need to be where they need to be and nowhere else.

Gopher Clients

In order to explore gopher space you need a client which can handle the gopher protocol and render output in a useful manner. Most “modern” web browsers are incapable of handling Gopher links. The Lynx being a notable exception.

In addition I have installed and am mostly using cgo.

VF-1 is on my to check out next list.

I have installed DiggieDog a Gopher client for Android.

Checkout my Gopher Hole

<gopher://grimmig.mine.nu:7070/>