Bonum Certa Men Certa

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

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/

Recent Techrights' Posts

Seductive Mirage or Allure of Complex, Proprietary Coffee Machines (or Similar White Elephants)
Software is a lot like those things
Sloppy Reporting About Slop, or How The Register MS Lowers Its Standards
Maybe the management isn't even aware of this
IBM's Strategy: Cull 'Expensive' Workers, Replace Them With Cheaper Ones
So far we saw not even one rebuttal or challenge to the claim of Red Hat layoffs scheduled for tomorrow
 
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Sunday, August 10, 2025
IRC logs for Sunday, August 10, 2025
Gemini Links 11/08/2025: Tea Caffeine Hot and Super ZZ Zero
Links for the day
Slopwatch: LinuxSecurity, Brian Fagioli, and Other Serial Sloppers
Maybe Microsoft wants to dub this "Web5"
Gemini Links 10/08/2025: Residents Management Company, Automation, and Politics
Links for the day
Links 10/08/2025: AOL Ending Dial-up
Links for the day
Links 10/08/2025: Webrings, “AI Sunglasses” and “AI Eyeglasses”, US Administration Intensifies Attacks on Science and Research
Links for the day
Sometimes Newer is Worse
We generally need to reject this dumb notion that "old" means bad
The Code Used to Make Techrights Fits on a Seventh of a Floppy Disk (or 100KB When Compressed)
For the sake of comparison I've just downloaded the latest version of WordPress. The ZIP file is 27.2MB in size, or ~27,200KB.
What They Tell Young Programmers
Coding in 2025
Simpler is Better When Simple is Enough
Over-complicating things to "sell" new versions is so 1990s
Links 10/08/2025: From Social Control Media to Prison, New Examples of Windows TCO
Links for the day
If You Attack Somebody Too Much You Legitimise and Strengthen That Somebody
at the end those attacks add up to a "martyr" status
The Man Who Helped Microsoft Kill Linux is Trying to Delay Our Lawsuits Against Him
By conservative estimates, and based on court documents submitted by them, they're prepared to spend over a million dollars on lawyers, fighting against me and my wife
Gemini Links 10/08/2025: Gen Con 2025 and Framework Laptop
Links for the day
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Saturday, August 09, 2025
IRC logs for Saturday, August 09, 2025
The Register MS (Microsoft) or The Register AI (Slop)?
What a slopfest!
Is Red Hat About to Give the Boot to GNOME People Who Helped Microsoft 'Secure' (Monopolised) Boot?
It was always a dumb idea to play along with Microsoft's hardware mischief
Sales of Windows on PCs (Windows Licences) Go Down
Microsoft has a big problem in its hands
The Hype That Microsoft and The Register MS (Among Others) Promote Helps Stage DDoS Attacks on Free Software Sites
Microsoft is, to put it bluntly, pure evil
The Goal of Coopetition Assumes You're Friends
it will never work with Microsoft
Links 09/08/2025: Putin Allegedly to Visit Alaska (Which He Deems Part of Russia), Mike Tyson Sued for Copyright Infringement
Links for the day
Slopwatch: Linux Journal, LinuxSecurity, and Google News With Its Slopfarms of Choice
SEO spam, made with LLMs
Follow the Money: The Register MS Gets Paid to Promote "Hey Hi" Ponzi Scheme/Hype, Some Fake 'Articles' Might Be Composed by LLMs Already
paid to promote slop
Gemini Links 09/08/2025: Rethinking Aliases and Posting on Gopher vs. the Web
Links for the day
Links 09/08/2025: Apollo 13 Astronaut Jim Lovell Dies, Slop Future Bleak
Links for the day
After Shutting Down Studios, Divisions, Applications (e.g. Skype) Microsoft is Also Shutting Down 'Apps'
Cuts all around as layoffs persist this month, Microsoft tries to get many people to resign, and debt skyrockets
Most of Geminispace Can Probably Fit on a CD-ROM or a DVD (the Textual Part)
If one excludes very large capsules and ones that contain non-textual contenty
Eventually UEFI 'Secure Boot' Will be Dropped (Users Will Demand Its Removal and Boycott Its Pushers)
we expect OEMs will just listen to users
The Register MS: We Know Slop is a Bubble and Mindless Hype, But We Get Paid to Participate
Call out the culprits
Hate Mail From Anonymous Cowards
if this persists, we'll need to escalate
There Are Probably Over a Million Pages in Geminispace
there are two many limitations which merit a mention when it comes to assessing magnitude
Informal Open Letter to the Lawyer of the Microsofters (on Who's Funding the SLAPPs Against Techrights)
Whenever I ask about the funding they try to change the subject and act all aggressive
Microsoft Lunduke is Just Provoking People for Provocation's Sake
Be forewarned and remember where this guy came from: Microsoft
Besieged by Plagiarists Who Play With LLMs and Image Fusions
We really need to exercise or use our collective voice to oppose Serial Sloppers
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Friday, August 08, 2025
IRC logs for Friday, August 08, 2025
Gemini Links 09/08/2025: Water Painting and Political Violence
Links for the day