nox.im ยท 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 github.com/n0x1m/gmifs@latest
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 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/
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=