-- Leo's gemini proxy

-- Connecting to nox.im:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini; charset=utf-8

gmifs summary:


Gemini file server - gmifs source code on Github[1]. If you have the go tool chain installed, you can install and try gmifs with:


1: gmifs source code on Github


go install github.com/n0x1m/gmifs@latest

I use gmifs to host the Gemtext version of this blog on OpenBSD[1]. Which is generated with the tools hugoext[2] and md2gmi[3]. The focus for this project was minimalism and simplicity with just enough features to be easy to use.


1: host the Gemtext version of this blog on OpenBSD

2: hugoext

3: md2gmi


For this reason gmifs generates TLS self-signed certificates on the fly, if no key pair is provided.


Allowing me to test my blog with a simple command of just that name. Auto indexing and directory listings ease debugging and was easy to support (just one function in `/fileserver/fileserver.go`).


See the snippet regarding OpenBSD log rotation and retention[1] for how to handle gmifs log files.


1: OpenBSD log rotation and retention


gmifs only supports TLSv1.3 strong ciphers. You can see this in action with `nmap` on your server:


nmap --script ssl-enum-ciphers -p 1965 nox.im

PORT     STATE SERVICE
1965/tcp open  tivoli-npm
| ssl-enum-ciphers:
|   TLSv1.3:
|     ciphers:
|       TLS_AKE_WITH_AES_128_GCM_SHA256 (secp521r1) - A
|       TLS_AKE_WITH_AES_256_GCM_SHA384 (secp521r1) - A
|       TLS_AKE_WITH_CHACHA20_POLY1305_SHA256 (secp521r1) - A
|     cipher preference: client
|_  least strength: A

Nmap done: 1 IP address (1 host up) scanned in 39.03 seconds

openssl s_client -quiet -crlf -servername nox.im -connect nox.im:1965 \
  | awk '{ print "response: " $0 }'
gemini://nox.im/

Upgrading & Downgrading


You can check the current version with go version


orwell$ go version -m /home/dre/go/bin/gmifs
/home/dre/go/bin/gmifs: go1.16.2
        path    github.com/n0x1m/gmifs
        mod     github.com/n0x1m/gmifs  v1.0.1  h1:CVmdCp2MwxlslCP/K8v6EXhOj45MYjWcZjso8eRu73c=

and install a desired upgrade or downgrade by specifying


orwell$ go install github.com/n0x1m/gmifs@v1.0.2
go: downloading github.com/n0x1m/gmifs v1.0.2
orwell$ go version -m /home/dre/go/bin/gmifs
/home/dre/go/bin/gmifs: go1.16.2
        path    github.com/n0x1m/gmifs
        mod     github.com/n0x1m/gmifs  v1.0.2  h1:12t+M1Dkuo/zVY5tc47SaBwcOf0XkypmJKlEUSSH784=

-- Response ended

-- Page fetched on Fri May 10 06:19:07 2024