Caddy is an [[Apache v2]] licensed [[Reverse Proxy]] [[Web Server]] written in [[Go]].
- [Website](https://caddyserver.com)
- [Source](https://github.com/caddyserver/caddy)
- [Documentation](https://caddyserver.com/docs/)
> Most people use Caddy as a web server or proxy, but at its core, Caddy is a server of servers. With the [requisite modules](https://caddyserver.com/docs/modules/), it can take on the role of any long-running process!
# Notability
# Philosophy
## Slop
Caddy requires a disclosure that a [[Generative AI|chatbot]] was used to develop code, and their contributing guidelines show some weariness, but they refuse to use any strong language:
> We have found that current language models (LLMs, like ChatGPT) may understand code syntax and even problem spaces to an extent, but often fail in subtle ways to convey true knowledge and produce correct algorithms.
> ...
> Note that it is often more trouble than it's worth to certify that Copilot (for example) is not giving you code that is possibly plagiarised, unlicensed, or licensed with incompatible terms
> ...
> As a courtesy to reviewers, we kindly ask that you disclose when contributing code that was generated by an AI tool or copied from another website so we can be aware of what to look for in code review.
They also include an `AGENTS.md` which is used by common [[Generative AI|Slop]] tools to generate code. Although its contents are as much directed to the people using them as it is to the prompt. It was, itself, generated using [[Github Copilot]].[^1] Slop feeding slop.
It is impossible for slop to comply with their stated standards, as all code output by an [[LLM]] is plagiarized, and incompatibly licensed (at best). So it is nonsensical to encourage more people to inject the codebase with chatbot output by adding the `AGENTS.md` file.
It makes me wonder if the weird issues I keep running into are a result of slop or something else. Slop tools are impossible to trust.
# Platform Support
# Features
## Config Adapters
Supports adapters which allow you to use different [[Data Languages]] to configure Caddy. One of the weirdest things I've seen and I approve of it.
- [[Caddyfile]] (default)
- [[TOML]]
- [[CUE]]
- [[HCL]]
- [[Dhall]]
- [[nginx]] config (incomplete)
- [[JSON]] & [[JSON5]]
- [[YAML]]
- [[MySQL]] (load config from database)
Adapters are quite simple so long as there is an existing [[Go]] parser library for the given data language.
## Certificate Auto-Updating
Caddy automatically fetches and sets up TLS certificates. Ideal for automatically handling customer domains.
## Static File Serving
Can serve flat files, including pre-compressed [[Zstandard]] files loaded from the filesystem, network storage, cloud, database, or embedded.
It can optionally display a file browser for paths without an index, including image previews and folder navigation.
# Tips
# References
[^1]: https://github.com/caddyserver/caddy/pull/7652