shakedown.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A community for live music fans with roots in the jam scene. Shakedown Social is run by a team of volunteers (led by @clifff and @sethadam1) and funded by donations.

Administered by:

Server stats:

246
active users

#caddy

0 posts0 participants0 posts today
Jonathan B ✈️🪄👨🏻‍💻<p><span class="h-card" translate="no"><a href="https://social.v.st/@quixoticgeek" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>quixoticgeek</span></a></span> It’s a proxy and web server that you can use instead of nginx or traefik (for instance) and is super easy to configure. It handles all the LetsEncrypt stuff pretty much automatically. <a href="https://caddyserver.com" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="">caddyserver.com</span><span class="invisible"></span></a></p><p>I put some notes here: <a href="https://jmb.me.uk/articles/selfhosting_with_caddy_and_docker/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">jmb.me.uk/articles/selfhosting</span><span class="invisible">_with_caddy_and_docker/</span></a></p><p><a href="https://mastodon.me.uk/tags/caddy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>caddy</span></a></p>
Cycling Europe<p><a href="https://www.cyclingeu.com/593667/%f0%9f%87%a9%f0%9f%87%aa-live-%f0%9f%9f%a7-wilhelmshaven-jadebusen-e-bike-tour-%f0%9f%9a%b4%e2%99%82%ef%b8%8f%f0%9f%9a%97-kaffee-ebike/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">cyclingeu.com/593667/%f0%9f%87</span><span class="invisible">%a9%f0%9f%87%aa-live-%f0%9f%9f%a7-wilhelmshaven-jadebusen-e-bike-tour-%f0%9f%9a%b4%e2%99%82%ef%b8%8f%f0%9f%9a%97-kaffee-ebike/</span></a> {🇩🇪} LIVE 🟧 WILHELMSHAVEN – JADEBUSEN E-BIKE TOUR! 🚴‍♂️🚗 <a href="https://pubeurope.com/tags/kaffee" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>kaffee</span></a> <a href="https://pubeurope.com/tags/ebike" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ebike</span></a> #<a href="https://pubeurope.com/tags/germany" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>germany</span></a> <a href="https://pubeurope.com/tags/abenteuer" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>abenteuer</span></a> <a href="https://pubeurope.com/tags/adventurebuddy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>adventurebuddy</span></a> <a href="https://pubeurope.com/tags/Bicycling" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Bicycling</span></a> <a href="https://pubeurope.com/tags/BicyclingGermany" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>BicyclingGermany</span></a> <a href="https://pubeurope.com/tags/Biking" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Biking</span></a> <a href="https://pubeurope.com/tags/BikingGermany" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>BikingGermany</span></a> <a href="https://pubeurope.com/tags/caddy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>caddy</span></a> <a href="https://pubeurope.com/tags/Cycling" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Cycling</span></a> <a href="https://pubeurope.com/tags/CyclingGermany" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>CyclingGermany</span></a> <a href="https://pubeurope.com/tags/CyclingWilhelmshavenGermany" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>CyclingWilhelmshavenGermany</span></a> <a href="https://pubeurope.com/tags/dercaddyrollt" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>dercaddyrollt</span></a> <a href="https://pubeurope.com/tags/deutsch" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>deutsch</span></a> <a href="https://pubeurope.com/tags/Deutschland" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Deutschland</span></a> <a href="https://pubeurope.com/tags/HinterDerKulissen" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>HinterDerKulissen</span></a> <a href="https://pubeurope.com/tags/irl" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>irl</span></a> <a href="https://pubeurope.com/tags/irlstream" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>irlstream</span></a> <a href="https://pubeurope.com/tags/LetsUrbex" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>LetsUrbex</span></a> <a href="https://pubeurope.com/tags/LetsUrbexStefan" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>LetsUrbexStefan</span></a> <a href="https://pubeurope.com/tags/LetsUrbexTwitch" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>LetsUrbexTwitch</span></a> <a href="https://pubeurope.com/tags/letsurbex" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>letsurbex</span></a> <a href="https://pubeurope.com/tags/LeturbexZweitKanal" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>LeturbexZweitKanal</span></a> <a href="https://pubeurope.com/tags/Livestream" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Livestream</span></a> <a href="https://pubeurope.com/tags/livestrream" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>livestrream</span></a> <a href="https://pubeurope.com/tags/Lostplace" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Lostplace</span></a> <a href="https://pubeurope.com/tags/overnight" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>overnight</span></a> <a href="https://pubeurope.com/tags/StefanTotal" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>StefanTotal</span></a> <a href="https://pubeurope.com/tags/stefantotal" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>stefantotal</span></a> <a href="https://pubeurope.com/tags/TwitchHighlights" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>TwitchHighlights</span></a></p>
Scott Laird<p>This morning's accomplishment: finally setting up an otel collector at home, pointing it at <a href="https://hachyderm.io/tags/clickhouse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>clickhouse</span></a>, getting <a href="https://hachyderm.io/tags/caddy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>caddy</span></a> tracing via otel, and throwing a <a href="https://hachyderm.io/tags/grafana" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>grafana</span></a> dashboard on it.</p><p>I didn't expect the dashboard to be the hard part.</p>
Nikhil 🐧<p>🤡</p><p>I made this because it reflects my latest experience of doing selfhosted stuff. Still new to all this and my system was running for around 10-11 months without any incidents. A fried SD card is definitely not what I expected to bring down everything 😂</p><p><a href="https://social.linux.pizza/tags/shitpost" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>shitpost</span></a> <a href="https://social.linux.pizza/tags/meme" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>meme</span></a> <a href="https://social.linux.pizza/tags/raspberrypi" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>raspberrypi</span></a> <a href="https://social.linux.pizza/tags/selfhosted" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>selfhosted</span></a> <a href="https://social.linux.pizza/tags/jellyfin" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>jellyfin</span></a> <a href="https://social.linux.pizza/tags/caddy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>caddy</span></a> <a href="https://social.linux.pizza/tags/pihole" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>pihole</span></a></p>
Thomas Frans 🇺🇦<p>I would call this a big success. A valid, trusted certificate, signed by Let's Encrypt, without ever exposing a single port to the public internet. Just what I needed. I can't believe how easy it is to do this with <a href="https://fosstodon.org/tags/Caddy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Caddy</span></a>. They weren't lying when they said you barely needed any configuration. What an incredible program!</p><p><a href="https://fosstodon.org/tags/SelfHosted" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>SelfHosted</span></a> <a href="https://fosstodon.org/tags/SelfHosting" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>SelfHosting</span></a> <a href="https://fosstodon.org/tags/ReverseProxy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ReverseProxy</span></a> <a href="https://fosstodon.org/tags/Jellyfin" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Jellyfin</span></a> <a href="https://fosstodon.org/tags/LetsEncrypt" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>LetsEncrypt</span></a></p>
Hazelnoot<p><span>Fun (actually not fun at all) fact about Caddy:<br><br>This expression will be merged with </span><code>AND</code>:</p><pre><code>@matcher { path /foo header Header-Name value }</code></pre><span><br>But this one will be merged with </span><code>OR</code>, despite being functionally identical:<pre><code>@matcher { expression `path('/foo')` expression `header({'Header-Name': 'value'})` }</code></pre><span><br>Caddy has some cursed, barely-documented logic where matcher blocks always merge with </span><code>AND</code> <i>unless</i> two directives of the same type are adjacent. In that case, they may be merged with <code>AND</code> <i>or</i> <code>OR</code><span> depending on directive-specific logic, which is not publicly documented.<br><br><br>This results in completely different behavior depending on whether a matcher is defined using expression or directive syntax. Despite the docs implying that the two options are identical, </span><b>they are not</b>! You can have an existing, functional matcher with a mix of directives and expressions, and suddenly it breaks because one of the directives was replaced with an <i>identical</i><span> expression. It's extremely counter-intuitive.<br><br></span><a href="https://enby.life/tags/Caddy" rel="nofollow noopener noreferrer" target="_blank">#Caddy</a> <a href="https://enby.life/tags/PSA" rel="nofollow noopener noreferrer" target="_blank">#PSA</a> <a href="https://enby.life/tags/ServerAdmin" rel="nofollow noopener noreferrer" target="_blank">#ServerAdmin</a> <a href="https://enby.life/tags/SelfHost" rel="nofollow noopener noreferrer" target="_blank">#SelfHost</a><p></p>
Scott Laird<p>New blog post: how to pull web logs from <a href="https://hachyderm.io/tags/Caddy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Caddy</span></a> into <a href="https://hachyderm.io/tags/Clickhouse" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Clickhouse</span></a> using <a href="https://hachyderm.io/tags/Vector" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Vector</span></a>.</p><p><a href="https://scottstuff.net/posts/2025/02/27/caddy-logs-in-clickhouse-via-vector/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">scottstuff.net/posts/2025/02/2</span><span class="invisible">7/caddy-logs-in-clickhouse-via-vector/</span></a></p><p>Clickhouse is an open-source (plus paid, as usual) columnar DB. This lets you do ad hoc SQL queries to answer questions as well as create Grafana dashboards to show trends, etc.</p>
algernon ludd<p>Tehehehehe.</p><pre><code> test: image: traefik/whoami networks: - iocaine labels: caddy: http://127.0.0.1:21080 caddy.import: iocaine caddy.reverse_proxy: "{{upstreams 80}}" </code></pre><p>The goal: create a docker network called <code>iocaine</code>, deploy containers within the network, and with just a few labels, have them wrapped, so they're shadowed by iocaine. Just one <code>compose.yml</code> for <a href="https://come-from.mad-scientist.club/tags/caddy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>caddy</span></a> + <a href="https://come-from.mad-scientist.club/tags/iocaine" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>iocaine</span></a> to make it all work.</p><p>Probably sounds less exciting than it really is. I'll explain more once it's ready.</p>
Michael Hartle<p><span class="h-card" translate="no"><a href="https://saturation.social/@clive" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>clive</span></a></span> <span class="h-card" translate="no"><a href="https://mastodon.social/@jasonkoebler" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>jasonkoebler</span></a></span> <span class="h-card" translate="no"><a href="https://mastodon.social/@404mediaco" class="u-url mention" rel="nofollow noopener noreferrer" target="_blank">@<span>404mediaco</span></a></span> There are a number of "infinite maze" generators like <a href="https://mastodon.online/tags/Nepenthes" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Nepenthes</span></a> (<a href="https://zadzmo.org/code/nepenthes/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="">zadzmo.org/code/nepenthes/</span><span class="invisible"></span></a>) or <a href="https://mastodon.online/tags/Iocaine" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Iocaine</span></a> (<a href="https://pages.madhouse-project.org/algernon/infrastructure.org/eru_services_iocaine" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">pages.madhouse-project.org/alg</span><span class="invisible">ernon/infrastructure.org/eru_services_iocaine</span></a>) that help <a href="https://mastodon.online/tags/poisonthewell" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>poisonthewell</span></a> for AI companies training their LLMs on your content, complete with guides on integration with <a href="https://mastodon.online/tags/Caddy" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Caddy</span></a> (<a href="https://pages.madhouse-project.org/algernon/infrastructure.org/common_services_caddy_snippets_poison_ai" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">pages.madhouse-project.org/alg</span><span class="invisible">ernon/infrastructure.org/common_services_caddy_snippets_poison_ai</span></a>)</p>
Replied in thread

One reason I will have to do something like this, is because I want to wire up my #Caddy to mount iocaine at, say, /index.php or somesuch, and link there from the real site (with an explicit note briefly explaining that it is not for humans), and keep some stats about how much time various IPs and user agents spend there, accross all sites.

This should help me discover new user agents or ip ranges to trap preemptively.

I'm finally done with setting up my #Mastodon instance properly. Here are some of the insights:

* Setup in such a way that user handle has domain rahil.rocks (@me@ rahil.rocks) but web UI resides at domain thoughts.rahil.rocks
* Streaming (live updates) uses secure websockets (wss://) on dedicated subdomain
* Nobody else except me can sign up (single user mode) or let alone even access login page.
* Ephemeral containers deployment using #Podman. Managing it like just another systemd service.
* Running nightly images cause I'm taking it lightly.
* Usual email setup for notifications (SMTP), #redis as cache (how long before I switch to fork), postgres as database
* Metrics collection with Prometheus
* Although reverse proxied behind #Caddy web server, but some static content (profile pictures, media attachments, preview thumbnails...i.e. system dir) served by Caddy for faster response.
* No more ugly (especially dark) stock UI . But thanks to @rolle for gorgeous Bird UI CSS mod for making it eye-pleasing.
* Most importantly, maximum character limit set to 9999 instead of default 500 (which is VERY restrictive for your verbose boss, me).
This one was painful to do. As I use containers images, to change the defaults, I'd to build my own image on top of official image. Just for one line of code change, there has to be so much of wastage of bandwidth, storage, maintenance, time, CPU cycles and power. This could've been easily prevented by fetching from env var instead of hard coding limit.

Could be improved:
* Documentation on deploying using Containers (docker/podman) is non existent. One has to connects bit and pieces to get it going.
* Simple env var to increase maximum character limit
* Being a platform where content is focused on text, supporting rich text or markdown is crucial.
* Bit hard to compose a post because of small text box.

TODO:
* Secure containers with SELinux

@Mastodon