Gemini

From ParabolaWiki
Jump to: navigation, search

Gemini is a new, collaboratively designed internet protocol, which aim to define an unexplored niche between Gopher and the World Wide Web, striving to address the (perceived) limitations of the former, while avoiding the (undeniable) pitfalls of the latter.

One example of that, is the mandatory use of SSL. Well-behaved clients will expect all servers to present a certificate; and will trust each automatically, per the "trust-on-first-use" paradigm (TOFO).

Currently, Parabola has one server package, and several clients available.

1 Gemini servers

1.1 gmid

gmid is a full-featured server for the Gemini hypertext protocol, with a "small, hackable codebase" written in C. It uses an event-based asynchronous I/O model; and supports modern features, which one might expect from a web server - such as virtual hosts, reverse proxy, default error pages, server-side page generation (via CGI and FastCGI), and Unicode hostnames/URIs (via punycode and IRI). It also can make use of Linux security features, such as 'seccomp' and 'landlock'.

1.1.1 Configuration

Gmid can be run locally in "config-less mode" for experimentation; but for production (public) use, you will need a domain name, and an SSL certificate for that domain.

If you keep the default config file (/etc/gmid/conf), files will be served from /srv/gemini/. The following commands will create a useful SSL certificate, automatically detected per the default config file:

 $ N_DAYS=42000               # this can be any integer (the number of days before the certificate expires)
 $ DOMAIN=gemini.myserver.net # this must be your domain or subdomain name
 $ sudo openssl genrsa -out /etc/ssl/private/gmid.key 4096
 $ sudo openssl req -new -x509                     \
                    -key /etc/ssl/private/gmid.key \
                    -out /etc/ssl/certs/gmid.pem   \
                    -days $N_DAYS -nodes           \
                    -subj "/CN=${DOMAIN}"
 $ sudo chmod 400 /etc/ssl/certs/gmid.pem /etc/ssl/private/gmid.key
Note: Some advanced features (sch as "chroot mode" and CGI scripting) may require the server root and files to be owned by the 'gmid' user.
 $ sudo mkdir -p /srv/gemini/
 $ sudo chown -R gmid:gmid /srv/gemini/

See man gmid for advanced configuration details.

1.1.2 Serving Documents

The document format is a very simple Markdown variant, called "gemtext". A sample home page will be installed at: /usr/share/gmid/index.gmi. Simply copy it to the server root (/srv/gemini/), to get started.

 $ sudo cp /usr/share/gmid/index.gmi /srv/gemini/

The Project Gemini website has a complete "gemtext" Markdown syntax guide.

2 Gemini clients

2.1 Terminal clients

amfora (Go) A "fancy" Gemini client for the terminal.
bombadillo (Go) Can browse both Gemini and Gopher sites, and make Finger requests natively. HTTP, telnet, and other protocols are supported via plugins.
emacs via 'Elpher' plugin (Elisp) Can browse both Gemini and Gopher sites. Plugin not packaged for Parabola.

2.2 Graphical clients

lagrange (C, SDL) A tabbed GUI client. Can browse both Gemini and Gopher sites.
dillo via 'gemini.filter.dpi' plugin (Go) Plugin not packaged for Parabola.

3 See also


This article was derived from the Arch Wiki