personal-gemini-capsule/README.md
2025-09-26 13:38:17 +02:00

1.8 KiB

Personal Gemini Capsule

My own little corner of Geminispace. A partner Gemini capsule to my personal website https://travisshears.com

gemini://travisshears.com/

General Gemini resources and inspiration

Deployment

This capsule is selfhosted on my Nomad backed homelab.

To deploy simply run the ./build.sh script. That will build the docker image and push it to ECR. After that just re-deploy the nomad job and it will run it in the cluster.

VPC Setup

The travisshears.com domain points to one of my VPCs. There http traffic after some cool ai blocking steps routes to my Astro.js web server running in the homelab. The gemini capsule works similarly. To route gemini traffic to the capsule docker container I also use nginx. Here is what the nginx config looks like:

stream {
    upstream gemini_backend {
        server homelab:XXXX;
    }

    server {
        listen 1965;
        proxy_pass gemini_backend;
    }
}

This uses the stream module which allows for TCP connections to be proxied.

Don't forget to open the firewall port:

$ sudo ufw allow 1965/tcp

Dev

Generate self-signed certificate:

$ openssl genrsa -out localhost_key.pem 2048
$ openssl req -new -key localhost_key.pem -out localhost_cert.csr
$ openssl x509 -req -days 365 -in localhost_cert.csr -signkey locslhost_key.pem -out cert.crt.pem

common name is the domain name ex 'localhost'

Run server on local:

$ ./dev.sh

Visit it:

$ bombadillo gemini://localhost:8080