Gemini

11 Dec 2020

Its been a while that I have wanted to set up my own geminiverse1 but being a master procrastinator, the plans were always put on hold. Until yesterday. My gemini space is up and running at gemini://simbly.me on my Raspberry Pi which holds this static site as well. For now, the content just says Hello World!.

I chose to go with Satellite as my Gemini server. Initially tried setting it up with Stargazer as it was available in Arch repository but when the build took over 30 mins on my Pi, it put me off. I want the server to have as little footprint as possible. Both in terms of build and while running.

Setting up Satellite was easy. Make sure OpenSSL and Go is installed (should be available in repositories of every distro), pull the code and build it with the two commands make and make install and satellite is installed. Since it places the executable satellite in /usr/local/bin and the configuration file satellite.toml in /etc, I had to do sudo make install instead to allow it to write in those system folders.

Here’s how my satellite.toml configuration file looks like:

# Address to listen to requests (default: 0.0.0.0:1965)
listen = "0.0.0.0"

[tls]
# Directory to save certificates
directory = "/var/lib/gemini/certs"

# Multiple domains can be set with the [[domain]] section
[[domain]]
name = "simbly.me"
root = "/usr/share/nginx/gemini"

Once Satellite was configured, it was all about opening the port 1965 on my router to access my gemini space over gemini://simbly.me. All it has right now is an index.gmi file with the text “Hello World!” in there.

Use this proxy link if you don’t have a gemini browser.

Issues faced

There was a minor issue with the certificate not being accepted when I first tried to access my gemini space which was quickly resolved and a fix was pushed when I emailed the developer. I found the developer Gustavo Heinz on Fosstodon later when I was checking out his blog.

Running satellite manually works but it has to run standalone, with my user permissions and without manual intervention. I messed up when running it manually in the background with satellite & as root so I changed the owner of the executable /usr/local/bin/satellite to my pi user and wrote a systemd service satellite.service in /etc/systemd/system to manage it.

[Unit]
Description=Gemini Server
After=network.target

[Service]
Type=simple
User=<my pi user>
WorkingDirectory=/usr/local/bin
ExecStart=/usr/local/bin/satellite
Restart=on-failure

[Install]
WantedBy=default.target

Next steps

The plan is to mirror this http blog over at gemini but to avoid a world of pain by doing it all manually, I am checking out a gemini static site generator, gssg again by the same developer.

Day 59 - Join Me in #100DaysToOffload


  1. Project Gemini 

tag: 100daystooffload gemini satellite stargazer pi selfhosting