This website used to run on Caddy, an automatic HTTPS server written in Go with a lot of neat features. However these come with the considerable downside of over 30 direct third-party dependencies which in turn further depend on 90 indirect ones. The compiled and stripped(!) Caddy binary is 32.4 megabytes in size or 25 when additionally packed with upx.
My webserving needs are extremely simple. This website only consists of static files that need to be served from a file system.
So I wrote treehouse
, a privilege dropping web server with automatic HTTPS, less than 200
lines of code, a single direct third-party dependency and two indirect
ones, all part of the golang.org/x
tree. The resulting (stripped)
binary is 5.4 megabytes in size or 2.1 if packed with upx.
It appears to be doing its job just fine.