Penpot: Self-Host an Open Source Figma
Penpot 2.19.1 on your own server: the Docker Compose stack, what it costs in RAM, what it does better than Figma, and where it still lags. Verdict inside.
All the articles with the tag "self-hosting".
Penpot 2.19.1 on your own server: the Docker Compose stack, what it costs in RAM, what it does better than Figma, and where it still lags. Verdict inside.
Run Homebox in Docker, give every box a QR label and asset ID, attach receipts and warranties, and know when Grocy, Snipe-IT, or a spreadsheet fits better.
Your compose.yaml hit 600 lines. YAML anchors, extends, and include each fix a different kind of repetition. What each one does, where it bites, which to use.
Langfuse v4 runs six containers and idles near 1.1 GiB of RAM. Phoenix v21 runs two and idles near 0.5 GiB. Here is what each traces and what each costs you.
Admin blocks on nginx, Caddy, and Traefik let 2 or 3 of 13 spellings through. A forged Remote-User fooled all three. Caddy's open admin port took a new config.
Guide-style rate limits behind a CDN locked out a bystander on nginx, Caddy, and Traefik. Trusting X-Forwarded-For let a forger through 20 of 20. Fixes tested.
Seven copy-paste security headers gave nginx static files none, let Traefik overwrite an app's own CSP, and blocked self-framing. Tested configs for all three.
Leave most autovacuum globals alone, raise the cost limit, and give your one hot table a per-table scale_factor. Tested on postgres:18.6 with real numbers.
Stop copy-pasting the same motion-light automation nine times. Import, write, and update Home Assistant automation and script blueprints with annotated YAML.
Exact-match vs semantic caching for LLM calls: a small Python cache, LiteLLM and RedisVL setups, and real scores showing why restart and stop nginx collide.
Same A+ before and after hardening, yet nginx drops from 25 TLS 1.2 suites to 3, and an old curve list silently strips post-quantum key exchange on all three.
Why Sonarr, qBittorrent and Jellyfin fight over bind-mounted files, how PUID/PGID works in the image, when Docker's user: fits better, and how to share media.