Caddy 0.9 will allow you to plug in almost anything, including server types. This has huge implications: Caddy will soon be able to serve more than just HTTP.
Why, or who cares? As I was musing earlier, imagine the joy of using an SSH server that:
- is not vulnerable to most memory mistakes like C programs are,
- can be deployed to any platform, including Windows and Android,
- is statically-compiled (no dependencies),
- is configured with the ease of the Caddyfile, consistent with your web server
- can be restarted with zero downtime
To clarify, I’m not going to write this. I’m too busy. But there is already a pure Go implementation of SSH and “all” you’d have to do is wrap that library in a way that plugs into Caddy. Such an SSH server would be used with a Caddyfile – with its own directives and plugins.
The really cool part is that a single Caddy binary could potentially serve both SSH and HTTP (if you wanted to, or you could have a process for each). Both can be seamlessly upgraded or reloaded, and both could even benefit from the API (slated for version 0.10).
Is this ringing through clearly? Do you like this? What other server types would you want to see for Caddy?