User Tools

(aka 'the best point military institute')

Site Tools

tools:gopher

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
tools:gopher [2026/03/12 14:23] – created Humphrey Boa-Garttools:gopher [2026/03/12 22:29] (current) – [Dynamic Gopher Sites] Humphrey Boa-Gart
Line 1: Line 1:
 ====== Gopher ====== ====== Gopher ======
  
-{{wst>expand}}+**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 [[tools:http-headers|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 [[tools:irc|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|gopher://bestpoint.institute]] on **Port 70**.
  
  
 ===== Browsing Gopherspace ===== ===== Browsing Gopherspace =====
  
-{{wst>expand}}+There are several ways to browse Gopher sites on your computer: 
 + 
 + 
 +==== Visually ==== 
 + 
 +The slickest and easiest solution is to install [[https://gmi.skyjake.fi/lagrange/|Lagrange]]. It's fast, the interface is clean, and it's available for [[https://apps.apple.com/us/app/lagrange-smallnet-browser/id1554714615|iOS]], [[https://flathub.org/en/apps/fi.skyjake.Lagrange|Flatpak]], and a multitude of [[https://git.skyjake.fi/gemini/lagrange/releases|other platforms]]. Even better, it also supports the [[tools:gemini|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 [[tools:finger|Finger]] services either, and Lagrange has support for that protocol as well. 
 + 
 +If you want more options, check [[https://en.wikipedia.org/wiki/Gopher_(protocol)#Client_software|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 [[tools:bash|terminal]] you have a few solid options here. First are the text-mode web browsers [[wp>Lynx_(web_browser)|Lynx]] & [[wp>ELinks|ELinks]], which have decent built-in Gopher protocol support. For dedicated clients, [[github>jansc/ncgopher|ncgopher]] & [[https://bombadillo.colorfield.space/|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 [[https://gopher.floodgap.com/overbite/|browser extensions]] to haphazardly duct-tape Gopher support back into your browser. If you don't want to install anything, you can use the [[https://gopher.floodgap.com/gopher/gw|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 [[https://gmi.skyjake.fi/lagrange/|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 [[wp>CURL|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 [[github>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 ===== ===== Hosting Gopher Sites =====
  
-{{wst>expand}}+Other popular Gopher server daemons include [[github>StygianBlues/geomyidae|Geomyidae]], [[github>xvxx/phd]] and [[https://gophernicus.org/|Gophernicus]]. I personally prefer Geomyidae since it's lean & more faithful to the protocol. My [[github>humphreyboagart/grackle|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 amount of datatypes 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 use heavily abstracted versions of this now, 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'', a command-lined version of PHP which spits out plaintext data in a form //especially// suited for Gopher. You just make a CGI wrapper for your PHP script, and pass it to ''php-cli'' like this: 
 + 
 +<file cgi loader.cgi> 
 +#!/bin/sh 
 +exec /usr/bin/php /path/to/script.php 
 +</file> 
 + 
 +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 [[tools:gemini|Gemini]] platform as well. 
 + 
 + 
 +===== More Reading ===== 
 + 
 +== Gopher Links == 
 + 
 +  * [[gopher>floodgap.com|Floodgap]] - Popular hub & advocate of the Gopher community since 1999. 
 +  * [[gopher>gopher.viste.fr|Observable Gopherspace Project]] - Large directory of Gopher sites. 
 +  * [[gopher>redterminal.com|Fab's Gopherhole]] - Useful Gopher links and information.  
 +  * [[gopher>gopherpedia.com|Gopherpedia]] - Gopher interface for Wikipedia! 
  
 +== Web Links ==
  
 +  * [[https://ils.unc.edu/callee/gopherpaper.htm|Where Have all the Gophers Gone?]] - A retrospective history of the early Gopher project.
 +  * [[arch>Gopher]] - Gopher resources on ArchWiki.
  
  
  
-{{tag>Tools Stubs}}+{{tag>Tools Protocols}}
tools/gopher.1773325401.txt.gz · Last modified: by Humphrey Boa-Gart

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