ยท All Projects


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

go install

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

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 for how to handle gmifs log files.

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
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 -connect \
  | awk '{ print "response: " $0 }'

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
        mod  v1.0.1  h1:CVmdCp2MwxlslCP/K8v6EXhOj45MYjWcZjso8eRu73c=

and install a desired upgrade or downgrade by specifying

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

Last modified on Sunday, Nov 7, 2021.
Go back