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

IBM's CEO Has Become a Stochastic Buzzword-Generating Machine
The current CEO is extremely unpopular
Chicago Transit Authority Has Dumped Twitter (X), As Did Many Others Without Announcing It (Due to Fear of Right-Wing Mobs)
If you don't have an account in Gab, then you probably should not have one in "X", either
How-To Geek Sort of Supersedes MakeUseOf (MUO) for GNU/Linux Coverage
some writers from MakeUseOf (MUO) have been migrated to a sister publication
Red Hat's Bluewashing to be Further Completed This Year
Do not wait for some announcement from redhat.com - it's already covered by IBM
Dr. Andy Farnell on a Death to Efficiency and Cash
Cash is not the same as "digital cash", which isn't even remotely the same
A Gift That Keeps on Giving: Microsofters Reveal a Campaign of SLAPP, Seeking to Censor Critical Information About Lawsuits Against Microsoft
All they can get here or mockery and ridicule
 
The Interplay Between Free Software and Journalism Based on Truths, Suppressed Facts
Honest people can be transparent. Dishonest, rogue people rely on a lack of it.
FSF Talk: "Free Software Teaching Materials" by Dr. Miriam Bastian
Software Freedom is rooted in philosophy but it's about technical solutions
New Year's Resolutions Scoreboard
The goal is to improve clarity, accessibility, speed, and accuracy
Sites Reporting Crimes and Getting Harassed for Reporting Crimes
you cannot just ignore those who constantly seek to harass
Links 19/02/2025: Science, Hardware, and Digital Restrictions (DRM) Striking Again at eBooks
Links for the day
Zizian, transgender, Google & Debian open source extremist cult phenomena
Reprinted with permission from Daniel Pocock
Links 19/02/2025: The Forgotten USB Competitor and Pope's Bilateral Pneumonia
Links for the day
Gemini Links 19/02/2025: AuraRepo and Offpunk
Links for the day
Slopwatch: Wayne Williams is Making Up for His Workers' Slop Party, LinuxSecurity.com Still Publishes Fake Articles
We must identify and call out the culprits
“Open Source” Really Does Miss the Point, We Can Do Better Than That
We need to reject groups of people who promote Microsoft GitHub (proprietary) and call that "Open Source"
Links 19/02/2025: Organisations Quitting Social Control Media, Windows TCO Illustrated Some More
Links for the day
The Free Software Foundation is More Financially Independent From Large Corporations Right Now
Money that comes with strings attached to it is always problematic
The Free Software Foundation's Position on IBM Taking Red Hat Enterprise Linux 'Private' is Articulated Almost 2 Years Late
The Free Software Foundation finally spoke out about this issue
Techrights Publication Topics
One thing we'd like to do more of is Software Freedom advocacy
Springtime Layoffs at IBM (2025) and Statement From IBM European Works Council
It's about cost-cutting, even if such cuts doom the company
Microsoft Paying People Who Harass and SLAPP Techrights, Demanding Censorship
At this point the money trail leads directly to Microsoft
It's Not Even Hidden Anymore: Microsoft is Passing Bribes for Media to Publish Puff Pieces About Itself
GeekWire is paid by Microsoft to publish many puff pieces (even outright lies) about Microsoft
Links 19/02/2025: Political Roundup and Halifax Wants to Dump Twitter ("X")
Links for the day
Gemini Links 18/02/2025: Beginning Meditation, Poison as Praxis, and Blogging
Links for the day
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Tuesday, February 18, 2025
IRC logs for Tuesday, February 18, 2025
Two Years After Issuing Ridiculous Threats and Choosing a Law Firm in Debt (Probably Desperate for Clients) Matthew J. Garrett Gets Help ('Bailout') From Microsofters
The karma won't be good
How Americans View 'Free Speech' in Practice
"No good deed goes unpunished"
Threats Against Techrights Always Come From Outside Britain
Over the coming days we shall write about an example of our own and we'll show how Americans have the audacity to bully people using a foreign (to them) court
Links 18/02/2025: More DeepSeek Bans and Supreme Court Patent Challenges
Links for the day
Links 18/02/2025: FAA Layoffs and EU Betrayed
Links for the day
On Technical Contracts of Employment and Why People Must Read Before Signing
The wave of layoffs under MElon will worsen prospects of finding alternate/better employment
LLM Slopfarms: LinuxSecurity.com and FUDZilla Doing 'Linux' (Fake Articles)
It's 2025. Everything on the Web is getting worse, except SPARTAN.
Gemini Links 18/02/2025: Reading Books and Oneiric Monk
Links for the day
Swiss corruption, Greens, Liip & Debian human rights violations
Reprinted with permission from Daniel Pocock
Swiss police TIGRIS unit, World Cat Day, Swiss-corruption.com & Debian
Reprinted with permission from Daniel Pocock
Links 18/02/2025: “Hey Hi Video Surveillance” and YouTube at 20
Links for the day
LLM Slop is Now Filling the Web With Pure Fiction/Fabrication/Misinformation About Linux
The timing of this lie/fiction is curious because Torvalds is being brigaded for defending C
FUDZilla Has Turned Into LLM Slop and Machine-Generated FUD (New York Times Has Also Just Admitted Moving in That Direction)
Failing news sites, instead of calling it quits with some remaining dignity, are handing control over to LLM slop (pretending to still be active)
By Buying Twitter, MElon and Cheeto Now Control EU Politicians, Even at the Highest Levels
"the top level politicians make the egregious mistake of trying to treat Xitter as if it were a communications medium"
The Washington Post (Jeff Bezos) Dies in Darkness
spread it on
How to 'Sell' Software Freedom to People
In my experience, it helps when one speaks about control, not freedom, including confidentiality
Gemini Links 18/02/2025: Downloading Gemini Files with Emacs and Elpher, Gopher on Devuan
Links for the day
Richard Stallman Confirms His Next Talk, "Free/Libre Software and Freedom in the Digital Society" (Next Monday in Free University of Bozen-Bolzano)
He could already advertise this more than a week ago
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Monday, February 17, 2025
IRC logs for Monday, February 17, 2025
IBM's Chronic Neglect Won't Save Anything and It Might Even Get IBM Sued
The problem is likely a lack of manpower, not deliberate shoddiness
Gemini Links 17/02/2025: Ideal OS, AuraRepo Alpha, and Simple Code
Links for the day
The "Cool Kids" Are Already Using GNU/Linux, Microsoft is Just Cheating
The future and the present are Linux
Links 17/02/2025: War on Dissent and Bloggers, Nationalism a Growing Theme
Links for the day
IBM Going International (and India)
It's Monday and a national holiday
GeekWire: Microsoft Bribes Us While We Cover Microsoft Affairs (Spin Doctoring), Hence We Are "Independent"
What good is a "journalist" sponsored by the very same company he or she writes about?
The Attacks on LinuxQuestions.org
Going to Clownflare only worsens the problem
The GNU Manifesto Turns 40 Next Month
The guardian of Free software (definition, licences, philosophy, hosting and so on) has managed to endure and persevere for 40 years. Very few others can say the same.
Microsoft Lunduke Belongs in 4Chan
Assuming Microsoft Lunduke is aware of the full context, he is now trolling not one but two decent organisations
In Europe and in India Richard Stallman Need Not Duck Anymore, People Trying to Cancel His Talk Have No Sway
the last time a talk by Dr. Stallman got canceled was about a year ago
Back From a Short Break
We can now resume and try to stick to the usual pace
Links 17/02/2025: LLMs Failing and Patreon Support Becoming a Burden to Bloggers
Links for the day
Links 17/02/2025: Blogroll Conundrum; Research, Scientists Under Siege
Links for the day
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Sunday, February 16, 2025
IRC logs for Sunday, February 16, 2025