THE one thing that stunned me was how easy it was to set up a Gemini server. A lot simpler than setting up a Web server. The harder part is certificates, but that too is trivial once it's done a couple of times, potentially with errors at first.
gemini
" (with home directory /home/gemini
)
mkdir gemini bin certs
gemini
(e.g. cd ~/gemini/
or equivalent using a graphical file browser)
index.gmi
Hello world!
(just to make sure that the server is set up and works)
bin
directory (e.g. cd ~/bin/
). For most practical purposes agate
(Apache Licence) seems to be OK and it supports quite a few architectures. Unfortunately it's hosted on GitHub (Microsoft), with latest versions shown at the top of this page. If you are not sure what architecture to choose, run uname -a
wget
/curl
. That program is quite small and needs to be placed in bin
in order to stay consistent with this manual.
gunzip [binary_file] chmod +x [binary_file]
gunzip agate.armv7-unknown-linux-gnueabihf.gz
and chmod +x agate.armv7-unknown-linux-gnueabihf
/etc/systemd/system/agate.service
[Unit] Description=agate After=network.target
[Service] User=gemini Type=simple ExecStart=[your settings]
[Install] WantedBy=default.target
[your settings]
ties together the program, the root directory for hosting (capsule), and the certificate.
Techrights
on ARM, it's something as follows:
/home/gemini/bin/agate.armv7-unknown-linux-gnueabihf -s --content /home/gemini/gemini/ --key /home/gemini/certs/key.pem --cert /home/gemini/certs/cert.pem --hostname your hostname --lang en-GB
gemini.techrights.org
(how you set up your hostname may depend on how you manage domains and where). That hostname needs to point to your device's IP address.
cd ~/certs/
) as this will likely involve the command line (unless you have some graphical tools that do the same).
openssl req -new -subj "/CN=your hostname" -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -days 365 -nodes -out cert.pem -keyout key.pem
cert.pem
and key.pem
. These can be modified and regenerated at any time, so there's no need to worry if at any point they're wrongly generated or made for the 'wrong' domain.
sudo systemctl restart agate sudo systemctl enable agate
gemini://
(it will attempt to connect over port 1965, so make sure there's no firewall standing in the way at the level of the device or the network it is in). This is pretty much it, with the exception of variation for non-systemd systems. All that systemd does is, it starts the server using the suitable command and arguments, even after restarts. That command can instead be run manually, or set up for any init system of choice. The hardest part is setting up the domain, generating the key/certificate correctly, and then lowering the filters (if any) to allow access over port 1965.
gemini://chriswere.uk/