User Tools

(aka 'the best point military institute')

Site Tools

tools:gopher

This is an old revision of the document!


Gopher

Gopher is an ancient internet protocol for serving something similar to web pages. Like HTTP, it serves pages, media & files, using inline links to connect the pages of a Gopher site.

Unlike HTTP, there are no fancy headers. Neither is there style information associated with it. Gopher markup language is a lot more concise than HTML, providing just barely enough functionality to tell the server where on the page to put links & plain text. All styling is decided by the visitor's Gopher browser, just like with IRC. As a result, Gopher sites are extremely fast to load, as they consume a fraction of the bandwidth it takes to transmit an HTML page.

Scripting options are far more limited as well. The Gopher ecosystem relatively resistant to many common methods of browser fingerprinting, as well as ad beacons and advertising in general (Though it is not entirely private as it does not support TLS). This has made the Gopherspace a popular niche destination well into the 21st century for those looking for a simpler, more intentional, and less distracting internet.

This server's Gopher Hole is located at gopher://bestpoint.institute on Port 70.

Browsing Gopherspace

There are several ways to browse Gopher sites on your computer:

Visually

The slickest and easiest solution is to install Lagrange. It's fast, the interface is clean, and it's available for iOS, Flatpak, and a multitude of other platforms. Even better, it also supports the Gemini protocol, which is sort of a modern version of Gopher with a few extra convenience & markup features. The Gopher & Gemini ecosystems are very close to each other, so having them both in the same browser is very useful. It's not uncommon for Gopher/Gemini servers to have parallel Finger services either, and Lagrange has support for that protocol as well.

If you want more options, check Wikipedia, but I'm telling you that Lagrange is the way to go if you want an elegant GUI app that's easy to use.

Command Line

If you are using terminal you have a few solid options here. First are the text-mode web browsers Lynx & ELinks, which have decent built-in Gopher protocol support. For dedicated clients, ncgopher & Bombadillo are highly revered by the Gopher community.

Browser Extensions

Once upon a time, web browsers could access Gopher. Not anymore. Big Tech doesn't want you on a part of internet that can't run Javascript, advertising beacons & spyware, so the feature was just ripped out of all web browsers around 20 years ago.

You can install browser extensions to haphazardly duct-tape Gopher support back into your browser. If you don't want to install anything, you can use the Floodgap Proxy. But I wouldn't recommend either of these options outside emergency use. The whole point of using Gopher in 2026 is so that you can read plaintext articles without the mammoth memory footprint of modern web browsers. Dedicated Gopher apps are so much faster & smoother. Just install Lagrange and you'll see why certain old heads still appreciate Gopher.

Advanced Wizardry

Because Gopher is a super simple protocol, you can easily hack it into things. Two tools of note:

First is the popular swiss-army knife curl. If you need to start scripting Gopher requests or spidering sites, curl is just as useful with Gopher sites as it is HTTP sites.

You can also mount Gopher sites as filesystems! Remember that Gopher was designed over 30 years ago to make it easy to organize basic articles, images & files for public distribution. The way Gopher data is formatted is extremely easy to pump into a mount point. To demonstrate this, I used ChatGPT to whip together a quick example in Go using FUSE, which I have for reference on Github at HumphreyBoaGart/gophuse. It's a bit risky to use (Without TLS, Gopher is extremely vulnerable to man-in-the-middle attacks) but if you're using Gopher to power a filehost, this hat trick makes it really easy to grab files off a trusted local machine in bulk.

Hosting Gopher Sites

Other popular Gopher server daemons include Geomyidae, xvxx/phd and Gophernicus. I personally prefer Geomyidae since it's lean & more faithful to the protocol. My Grackle server management package actually has a Geomyidae installer built into it, for running a Gopher server alongside normal web sites.

Dynamic Gopher Sites

It is true that you can only transmit a limited & specific set of data between server & visitor over the Gopher protocol. However, you can do virtually unlimited server-side processing as long as the output follows the protocol's transmission format.

Most Gopher servers have support for running CGI scripts, like the internet of old used to have to do with PHP scripts. Modern PHP installs now use a heavily abstracted version of this, which are tailored specifically for HTTP, so they don't work with Gopher servers too well. However, modern PHP installs also come with php-cli, which spits out data in a simplified form especially suited for Gopher. You just make a CGI wrapper for your PHP script, and pass it to php-cli like this:

loader.cgi
#!/bin/sh
exec /usr/bin/php /path/to/script.php

As long as the data can be parsed by a Gopher server, this means you can actually have complex database-driven websites (within reason) in the Gophersphere. This trick is equally applicable to the Gemini platform as well.

More Reading

tools/gopher.1773348909.txt.gz ยท Last modified: by Humphrey Boa-Gart

Find this page online at: https://bestpoint.institute/tools/gopher