02.23.21

How to Set Up a Gemini Server of Your Own, Even on a Simple Single-Board Computer

Posted in Free/Libre Software, Servers at 8:33 pm by Dr. Roy Schestowitz

Gemini Turntable

Summary: Using Agate to start one’s own Gemini capsule (self-hosted) is a lot simpler than one might be inclined to believe; this is a detailed HOWTO, hoping to encourage more people to join Gemini space, which is fast-growing and free of garbage

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.

Here’s a quick recipe for setting up one’s own instance and Gemini capsule.

First, create a new user’s account. Gemini ought to have its own account, as it’ll make things a lot simpler (backup, permissions etc.) and for the sake of this example we’ll assume the user account is “gemini” (with home directory /home/gemini)

Then, in the user’s top-level (home) directory:

mkdir gemini bin certs

This will set up directories for the capsule, the programs, and the certificates, respectively.

There’s not so much left to do now.

Go to the directory gemini (e.g. cd ~/gemini/ or equivalent using a graphical file browser)

In that directory, create or place a file called index.gmi

It can be empty or contain something simple like Hello world! (just to make sure that the server is set up and works)

Now let’s get the server software. Go to the 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

The correct binary can be downloaded using a Web browser or a tool like wget/curl. That program is quite small and needs to be placed in bin in order to stay consistent with this manual.

Unpack and set ‘executable’ (x) permission for the file, e.g. using

gunzip [binary_file]
chmod +x [binary_file]

Depending on the name of the binary file in question.

For my ARM SBC it is gunzip agate.armv7-unknown-linux-gnueabihf.gz and chmod +x agate.armv7-unknown-linux-gnueabihf

All the pieces are now in place except the certificate and the service setup.

On a systemd-based operating system create a new file at /etc/systemd/system/agate.service

It should look something like this:

[Unit]
Description=agate
After=network.target

[Service]
User=gemini
Type=simple
ExecStart=[your settings]

[Install]
WantedBy=default.target

Wherein [your settings] ties together the program, the root directory for hosting (capsule), and the certificate.

In the case of 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

In our case, your hostname is 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.

All that’s left now is certificate setup and service initiation.

Go to the certificates directory (e.g. cd ~/certs/) as this will likely involve the command line (unless you have some graphical tools that do the same).

A simple self-signed certificate ought to be sufficient:

openssl req -new -subj “/CN=your hostname” -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -days 365 -nodes -out cert.pem -keyout key.pem

That’s for 1 year. It can be set to anything.

The command then leaves the two files required by the service/server, namely 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.

To get it all started, assuming systemd:

sudo systemctl restart agate
sudo systemctl enable agate

Use a Gemini browser (or Web proxy) to then test access to the hostname over 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.

We don’t typically do HOWTO-type articles, but for this one we make an exception. If you get stuck, ask us in IRC for help. Gemini needs to grow and for faster growth we need to help one another.

Agate is quite small and simple. As of the time of writing, it does not support server-side CGI scripts (for something like in-capsule search), but Gemini ought to be kept light and simple anyway; we’re not trying to just replicate the bloated Web.

Credit: Chris Were, for some initial notes and suggestions. gemini://chriswere.uk/

Share in other sites/networks: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Reddit
  • email

This post is also available in Gemini over at:

gemini://gemini.techrights.org/2021/02/23/gemini-server-with-agate/

If you liked this post, consider subscribing to the RSS feed or join us now at the IRC channels.

Pages that cross-reference this one

Leave a Comment

You must be logged in to post a comment.

What Else is New


  1. Links 27/2/2021: IPFS 0.8, OnionShare 2.3.1, and New Stuff in KDE

    Links for the day



  2. The Internet After Social Control Media (and Maybe After the World Wide Web Too)

    There seems to be a growing trend of protests and backlash against centralised Internet disservices; there's also growing dissatisfaction over bloat and spyware, which the Web rendered a 'norm'



  3. SCO's Darl McBride is Finished (Bankruptcy)

    Some news about the site and about the long-forgotten SCO, whose infamous old (and sacked) Darl McBride (responsible for decade-long attacks on Linux) loses everything, based on fresh legal documents



  4. IRC Proceedings: Friday, February 26, 2021

    IRC logs for Friday, February 26, 2021



  5. Links 26/2/2021: Wine 6.3, Genode OS Framework 21.02

    Links for the day



  6. Links 26/2/2021: GNU Poke 1.0 is Out and Rocky Linux Leaves Microsoft GitHub

    Links for the day



  7. Microsoft's Status in Web Servers is So Bad That It Has Fallen Off Charts, is Now Partly Delisted

    In several categories or criteria Microsoft is no longer even listed by Netcraft; the share has become rather minuscule during the pandemic, which convinced more companies to explore expense-cutting moves



  8. We Take Away Your Freedom for Your Own Safety...

    People are herded like cattle and protest/dissent will be demonised as part of the new norm; what will be the cost of the pandemic and will resistance to the status quo ever be permitted to resume?



  9. EPO President Pushes Illegal Software Patents in South America (Over the Telephone With a Misleading New Puff Piece)

    The EPO's "news" section has become worse than a form of distraction (from the EPO's internal rot); it celebrates illegal and unlawful practices, spreading them to other continents



  10. The Free Software Foundation Warns Against Using Twitter

    Richard Stallman said Twitter was OK because it was possible to use it without proprietary software; that's no longer the case, so the Free Software Foundation (FSF) speaks out against it. It speaks about it more than 3 months after the problem became a known one and also an irreversible one (maybe Twitter would have reversed the decision if the media or the FSF actually spoke about it early enough).



  11. IRC Proceedings: Thursday, February 25, 2021

    IRC logs for Thursday, February 25, 2021



  12. Stéphane Bortzmeyer Explains Gemini Protocol (February 2021)

    A recent talk from Stéphane Bortzmeyer about Gemini and what it is for (or why)



  13. Links 26/2/2021: Istio 1.7.8 Announced, Blender 2.92, Firebird 3.0 Language Reference, FSF Against Twitter

    Links for the day



  14. Special Thanks to Mogz

    Credit where it's due to Mogz



  15. Modifying WordPress to Include Gemini Links in All Articles (Assuming a Canonical URL Form)

    In order to promote the departure from the World Wide Web (where possible and suitable; sites with text don't typically need Web-like features) one can promote the analogous pages in one's Gemini capsule; we suggest a way of doing so in WordPress (the most widely used CMS)



  16. Links 25/2/2021: RHEL for Open-Source Infrastructure, GNOME 40 Beta, LXPanel 0.10.1

    Links for the day



  17. IBM and Qt Don't Understand Free Software and They Now Impose Terms and Conditions on Who Qualifies for Use of Free Software Free of Charge

    IBM and Qt Don't Understand Free Software and They Now Impose Terms and Conditions on Who Qualifies for Use of Free Software Free of Charge



  18. Techrights Gemini Capsule, Now With Over 35,000 Pages and Files

    Blog posts combined with static (plain text) files are now 36,000+ in number, just for Gemini protocol alone; that number keeps growing as our conversion proceeds and evolves (our software will be released under terms of the AGPLv3)



  19. Eventually, or Hopefully, Many People Will Come Back to What the Web Used to Be (Or Web Alternatives More Like the 'Old' Web)

    With RSS feeds making a comeback and a resurgence of personal blogs we can take back the Web from a cabal of tech/Internet giants and social control media, censored, curated and spied on by oligarchy



  20. If Wikipedia is Controlled by Corporations and Mobs, It Needs to Be 'Cancelled'

    Facts have never truly mattered in social control media sites; it certainly seems as though Wikipedia now suffers the very same issue/deficit, allowing oligarchs and their companies to define what goes on in the world and which people Wikipedia should regard as persona non grata



  21. GNU/Linux Reaffirms Its Status as the Universal and Inter-planetary Operating System

    The operating system made for and by scientists (not business sharks and marketing cults) is winning the battle, and not only in this planet



  22. IRC Proceedings: Wednesday, February 24, 2021

    IRC logs for Wednesday, February 24, 2021



  23. Links 25/2/2021: Kali Linux 2021.1, Wine Launcher 1.4.46, and Google's Security Posing

    Links for the day



  24. Links 24/2/2021: MariaDB 10.5.9, Krita 4.4.3 Beta, and Debuginfod Server for Debian

    Links for the day



  25. Self-Host Your Videos, Take Full Advantage of HTML5 and Video Attributes

    For self-hosting of videos over the World Wide Web (Gemini too can handle videos; its clients/browsers can, for example, link video files/URLs to external media players) it's worth reviewing the full set of features made available by the standards because a lot can be accomplished without JavaScript and without unnecessary bloat/complexity



  26. Trying Out NoiseTorch to Reduce Background Sound/Noise in GNU/Linux

    An introduction to noisetorch (or NoiseTorch), an application that helps create virtual microphones/devices with reduced background noise



  27. How the Big Banks and OIN Can Whitewash Software Patents and Do Nothing Concrete About Patent Trolls

    Response to the puff piece entitled "How the Big Banks and OIN Can Lock Out Patent Trolls with Enabled Publications"



  28. IRC Proceedings: Tuesday, February 23, 2021

    IRC logs for Tuesday, February 23, 2021



  29. How to Set Up a Gemini Server of Your Own, Even on a Simple Single-Board Computer

    Using Agate to start one's own Gemini capsule (self-hosted) is a lot simpler than one might be inclined to believe; this is a detailed HOWTO, hoping to encourage more people to join Gemini space, which is fast-growing and free of garbage



  30. Links 23/2/2021: Tails 4.16, Libinput 1.17, Fwupd 1.5.7, Firefox 86, NeoChat 1.1

    Links for the day


RSS 64x64RSS Feed: subscribe to the RSS feed for regular updates

Home iconSite Wiki: You can improve this site by helping the extension of the site's content

Home iconSite Home: Background about the site and some key features in the front page

Chat iconIRC Channel: Come and chat with us in real time

Recent Posts