Brilliant. I wonder what limits we can hit with this setup. What if local postgres is installed and its data directory location is on TigerFS, what are the trade-offs here? Could placing SQLite file on TigerFS mount increase durability for Litestream setup? Is it possible to somehow run have TigerFS database storing data on TigerFS?
HN user
m_sahaf
How can someone add platforms to the guide? I want to add Caddy
ElGamal says he uses them interchangeably. He says TLS exists for historical reasons, but the essence of the technology is the same. I got into the habit of using SSL/TLS.
Allow me to introduce you to Hurl: https://hurl.dev/
If that person found another problem with Caddy, I think they are less likely to report it to you because of this.
Given they're aware of previous discussion and the stance on the feature request, I don't think they're deterred by the discussion here. Your addition of fuel to fire here is the very thing that's not helping.
If they did report it, I would think you are very likely to dismiss it because of who they are, not the contents of the bug report.
That's a huge assumption on your behalf.
It's a repeat complaint from the same person who admits bringing it up before. The way they framed their complaint is, again, snide.
That’s a long way beyond exasperation, that’s a massive overreaction.
Your reaction to Francis is _the_ overreaction. Francis simply said to OP to put their money where their mouth is. The "slander" comment comes later as a general statement on why this subject has become annoying.
Stop being hung up on Francis' response. The niche feature was discussed at length multiple times. You're welcome to search the web for all the conversations we had on the subject. Caddy has been around for 11 years. We've seen this subject more than you've seen it brought up. Again, OP referenced the discussion on the issue tracker in one of the earlier times they brought it up. They _admit_ it's niche. What's the point of continuously bringing it up?
This is being blown out of proportion. You're discounting an entire project and your experience of the software over a person expressing exasperation over an inconsequential feature (not a bug) that even the author of curl had his run through and frustration. The request was not dismissed, rather it was discussed at length on our issue tracker. The OP knows it was discussed at length because they linked to the discussion thread in the earlier times they brought this up. Moreover, the way they presented it this time is snide, agree or not. To quote Matt's statement of the project being "stable and mature" just to say "except you didn't implement my niche feature" (yes, editorialized) is not criticism nor a feature request. It's veiled instigation hiding behind plausible deniability.
Anyways, on the feature request, Caddy is not the only software who disagrees with it being valid, and curl had their back-and-forth on it. There's no legitimate bug being dismissed, and you can go through the issue tracker to audit it. Equating this discussion with 37signals or Signal is false equivalence.
Disclaimer: Caddy maintainer
I imagine a pipeline between Calibre-Web[0] and audiobookshelf[1] going through Abogen, where Calibre-Web supplies the books, Abogen generates the audio version of it, and Audiobookshelf serves them. Great solution for the hearing impaired.
I'm not actively working on it daily, as I have shortage of free time and helping hands, but the HTTP Spec Test Suite is my Moby-Dick. I wrote about it here: https://www.caffeinatedwonders.com/2024/12/18/towards-valida..., I also discussed it on the HTTP WG mailing list and presented it at the HTTP WG Workshop last year.
Another Moby-Dick of mine is Kadessh, the SSH server plugin of Caddy, formerly known as caddy-ssh. This one is an itch. I wrote about it here https://www.caffeinatedwonders.com/2022/03/28/new-ssh-server..., and the repo is here: https://github.com/kadeessh/kadeessh. Similar to the other one, feedback and helping hands are sorely needed.
They are both sort of an obsession and itches of mine, but between dayjob and school, I barely have a chance to have the clear mind to give them the attention they require.
That isn't true representative of Supabase. Tables respect RLS by default, unless turned off. This is how Supabase works. Views are not, and that is due to multiple reasons which Supabase documents. Supabase also warns the user of this and asks them to configure RLS properly for views by first changing the invoker. They also report the same issue to the user on their Security Advisor. The fix is as easy as running the SQL statement in the SQL Editor. Supabase also offers "Autofix" next to the warning, which tells the user exactly how to modify the CREATE VIEW statement to enable RLS.
This is not a problem with Supabase.
I always wonder who/what checks if CAs respect CAA. I know some browsers now check the certificate transparency log, but are there any that check the CAA record against the issuer of the certificate?
I cannot find the source, but I saved this quote by Douglas Hofstadter about the process of writing, rewriting, and revising:
"It is the intensity of this process of global tightening and smoothing of a huge structure that was once implicit in one's mind but is now external and has its own unanticipated shape, life, and momentum, it is the power of this process of converting a set of once-intangible intuitions into a very tangible network of interconnected crystals, that I had forgotten."
The renewal of the key does not affect existing connections/sessions because they (the sessions) don't use the key directly. The private key is only used in the beginning to agree on the symmetric key, then the symmetric key is used from there onwards.
Caddy doesn't reuse the private key by default. The user has to explicitly configure it in that broken way.
There's Redka: https://github.com/nalgeon/redka/
Yep, it was Simon: https://til.simonwillison.net/caddy/pause-retry-traffic
Ha, in what I believe Ryan's first talk about Deno, he mentioned something about avoiding cute features or so, then he said Deno has URL-based imports "because they're cute". It didn't take long for someone to raise it up in 2018:
https://github.com/denoland/deno/issues/195
We've come full circle :)
It supports it with the caddy-l4 plugin: https://github.com/mholt/caddy-l4. It was also indicated we might move the plugin into standard Caddy once given enough feedback from the user-base and are comfortable with the implementation solidity.
Citing that particular blog post isn't making the point you think it makes. To quote:
The most striking piece of new knowledge for me was learning about failure modes. Nginx will fail by refusing or dropping connections, Caddy will fail by slowing everything down.
Do you want your clients failing to load your website at all? Is this the best approach to serving users?
After that, you use the REST API to make changes to the server while it is running, which uses a JSON configuration definition instead of a Caddyfile, so it ends up being a jump for users.
You can, in fact, use any configuration format with the API as long as Caddy has its adapter compiled-in; you just have to use the correct value in the `Content-Type` header. For instance, you can use Caddyfile format using the `text/caddyfile` value in `Content-Type`. This is documented[0].
Once famous incident of this effect is reported by Oliver Sacks, where he confidently narrated a story that presumably happened to him during the war until his brother corrected him:
https://www.wired.com/2015/08/fully-immersive-mind-oliver-sa...
We have it enabled in production. Checkmate.
You're welcome to help through numerous means.
Fair enough. There was a learning curve which we had to overcome. I guess you can blame the curse of knowledge[0] for not making this part of the blog post, or because I was more focused on the results delivered by the Grafana stack than the process. I wonder if it may be something like math, where you have to practice much enough for it to click.
I'd have preferred more technical details.
There isn't much technical details to it. Caddy exposes profiles by default[0] and prometheus metrics are available as opt-in. We set up grafana-agent to collect profiles and metrics from Caddy, poked at the Grafana Cloud portal, studied the available data, and checked the charts for anomalies. Grafana Cloud made it easy for us to get started with that without having to build more infrastructure for them, which will also require extra energy that can be better spent on the core of our project.
[0] https://twitter.com/MohammedSahaf/status/1760415991513637137
The pprof format is not tied to Go. From my understanding, it's used within Google across multiple languages. The format is defined in the pprof repository[0], and the visualization tool is source-language agnostic. I've seen libraries in numerous languages (e.g. Python, Java) to publish profiles in pprof format. This is an indicator the pprof format has become de-facto. Grafana Pyroscope[1] is a tool that's capable of parsing the pprof format, agnostic to the source programming language, and has instructions for Go, Java, Python, Ruby, node.js, Rust, and .NET.
My understanding is that you're searching for a combination of the profiles, metrics, and tracing. Caddy supports all 3.
[0] https://github.com/google/pprof/blob/main/doc/README.md
[1] https://grafana.com/docs/pyroscope/latest/
metrics and tracing need to be manually enabled (for now, perhaps)
You could've used the nginx-adapter and skip the faulty LLMs
I had fun building it. It was illuminating seeing where implicit trust is unconsciously assumed, break that down, and identify the threat entry-points (absence of policy definition for the ACME server) as areas of improvement for Caddy. I'm surprised none of the users attempted it or reported those needs. I know at least one user who told me they were considering it but need the tutorial document. Now we have the tutorial (kinda) :)
I’m not aware of anyone running Caddy at any sort of scale for customers.
Well, to name a few...
- Stripe (https://twitter.com/caddyserver/status/1559591673511813120)
- Mercedes-Benz (https://github.com/caddyserver/caddy/pull/5275#issuecomment-...)
- Approximated.app (https://dev.to/carterbryden/how-to-allow-end-user-custom-dom...)
- FusionAuth (https://fusionauth.io/blog/unlimited-domains-fusionauth)
The problem is those using Caddy are shy, not that it's not used at all. I know this because I see users removing the `server` header on the Caddy forum all the time, and many of the large users are just shy of their technology stack when it comes to Caddy.
Disclaimer: Member of the Caddy team
I don't know what metric to use of "good", but the throwaway app I've used it for worked flawlessly with both, so good enough for me ¯\_(ツ)_/¯
For web, Flutter has 2 renderers and offers 3 options:
- html: Uses HTML elements and CSS
- canvaskit: which, as you mentioned, uses canvas to own the full drawing process
- auto: defaults to canvaskit on web but html on mobile.
Source: https://docs.flutter.dev/platform-integration/web/renderers