The idea

Gopher is a direct competitor of HTTP. It failed to evolve and is stuck with a basic set of features but it does provide links.
Thus it is a really light alternative to what became the WWW (websites + browsers).

I always wanted to dig in this world where there are still a hundred (or a thousand) of users.

And I created pygopher and its main library pygopher_server.

This project allows me to:

The server

The code uses the impressive Flask-Gopher library maintained by Michael Lazar to handle the Gopher protocol (requests and responses). It is itself based on Flask, the well-known Python Web framework.

The features I added:


An instance is publicly available here: gopher://

The client

No need to write a client, lynx runs great.


$ lynx gopher://

But if you want to use a SSL connection, the use of a third-party tunneling program is needed (like ptlstunnel).

The deployment

The pygopher daemon must be run behind a HAProxy (or an alternative) instance. It adds some features I will never implement:

I use pyenv to manage the Python version.

Of course, there is an Ansible playbook to deploy everything.

Some Gopher proxies (HTTP -> Gopher):

Some resources: