Caddy

Caddy is a lightweight, general-purpose web server for Windows, Mac, Linux, BSD and Android. It is a capable alternative to other popular and easy to use web servers. (@caddyserver on Twitter)

The most notable features are HTTP/2, Let's Encrypt support, Virtual Hosts, TLS + SNI, and easy configuration with a Caddyfile. In development, you usually put one Caddyfile with each site. In production, Caddy serves HTTPS by default and manages all cryptographic assets for you.

The Let's Encrypt integration is interesting, not only does the server default to HTTPS, it will fully manage the relevant cryptographic assets for you. Initially, automated certificate renewals would see the server do a graceful restart when a certificate was renewed. A recent version see an end to these automatic restarts, and also adds 'On-Demand TLS' where certificates can be obtained on demand during TLS handshakes.

Here is a tutorial for Caddy.

Here are instructions provided by Digital Ocean for setting up Caddy on Ubuntu 16.04.

I did more work with setting up Caddy. Set up firewall to only allow ssh, http, and https. Started wiki on port 3000 and confirmed that I could not access. Next I created a Caddyfile in my home directory and set it up to proxy the URL on port 3000. Confirmed that it worked.

caddy -conf ~/Caddyfile

Noticed that according to the Caddy docs, https support ought to be automatic. My theory is that it was not working because I specified http in my Caddyfile. I removed http and just left the domain name and restarted. I was prompted to enter an email address, after which it indicated that it was starting for both http and https. When I attached to load via http it automatically switched to https.

Finally, started caddy as a background process and logged out, confirming that the service continues to run. To stop caddy, grep its process id and then kill the process.

ps aux | grep caddy kill [PID]