Live data from Hacker News

The web server deployment model breaks at hobby scale

w.on-t.work

51–60 of 75 posts

Re: The web server deployment model breaks at hobby scale

#51
post #5

I'm not sure I understand this post. Is this talking about self hosting Caddy in a home lab setting or just static web hosting on a VPS?

I think the author is distributing a web app that is run by hobbyists with a lot of esoteric home labs?

Sounds like they've worked on some ActivityPub related software based on their other blog posts and codeberg.

The details remind me more of the Bluesky PDS though. It's nodejs-based and the only officially supported way to run it is via a largely self-contained docker container.

Re: The web server deployment model breaks at hobby scale

#52

At hobby scale, you don't have to care about the details. Just ship a zip or container image with docs and let the user figure out the rest. Self hosting is going to require some bit of expertise. I personally don't like apps that ship the entire sink (complex stack) when I already have an opinionated setup that already includes TLS/access control/etc.

I really wish people would tell me what the dependencies are and NOT just ram everything into a container image so I have to reverse engineer what's required to just run the damn thing on the stuff I am ALREADY running.

Just tell me what the entry point is and what the dependencies are for it so I can decide if I already have enough to just sort it out myself.

By all means, create a kitchen sink container image as well, but don't have that be the ONLY artifact for running it.

Re: The web server deployment model breaks at hobby scale

#53
post #26

Earlier quoted context omitted.

I think the author missed the root cause, which is the demise of (unencrypted) HTTP/1.1 connections.

I'm glad unencrypted http/1.1 was deprecated. I want a privacy online. TLS also gives you much better data integrity guarantees. Some ISPs - particularly in the US - actively inject javascript code into websites served over plain HTTP. I just wish nginx / caddy / etc had better out-of-the-box support for letsencrypt. It would be way easier to set up if it was just built in to nginx. Let me specify my domain in my ngi…

Look at this from the Digital Sovereignty angle.

AFAU Let's Encrypt gets its money from Google. There are other minor providers of similar services over the ACME protocol, but this does not change the fact that they issue the the majority of the free TLS certificates.

We already had one centralized domain name system managed by the US Government that we have to hop through before publishing our content online for everyone.

Now, we silently and tacitly added another US-based one.

Re: The web server deployment model breaks at hobby scale

#55
post #40
post #29

Earlier quoted context omitted.

Here's the entirety of the Caddy config to reverse proxy something with managed tls certs. I feel like it's not that big a deal? photos.example.com { reverse_proxy 127.0.0.1:8080 { header_up X-Real-IP {remote_host} } }

caddy passes on the source IP by default so it's even easier than that photos.example.com { reverse_proxy 127.0.0.1:8080 } the immich documentation covers this as well as nginx, apache and traefik https://docs.immich.app/administration/reverse-proxy

Heh... I self-host Immich with Caddy, and it's more complex, really. Caddy runs in podman, there are firewall rules to allow traffic in and out and proper dependencies in systemd units and a readme that covers all that. Exactly the point OP is making.

All because we forced TLS on everyone instead of solving the JS injection problem in some other alternative way. Like... legal, maybe?

Re: The web server deployment model breaks at hobby scale

#56
post #37

Earlier quoted context omitted.

As the next person on this post, I second Caddy

Ok I'll bite again. Do you want a caddy service embedded with every web app you self host or are you running a single one serving all your apps? From my understanding if you want acme http challenges to just work with let's encrypt you probably need to use a single, separated caddy to front all your apps. In that case if I ship a caddy service pre configured to do TLS termination with my app it's just more trouble fo…

I posted this in a sibling thread, but it's also appropriate here.

I self-host Immich with Caddy, and it's complex, really.

Caddy runs in podman compose next to Immich, there are firewall rules to allow traffic in and out and proper dependencies in custom systemd units in case podman networking goes bust after firewall rules are reloaded and a readme that covers all that.

Exactly the point OP is making.

Re: The web server deployment model breaks at hobby scale

#57
post #49

Earlier quoted context omitted.

They're not all tooootally atomic, I have clustered things like libation+audiobookshelf, ollama+ds4+litellm, but I like that I can manage things almost entirely at the network and host level, generally atomically per service, and especially between services (eg homeassistant and the local ai). It's DEFINITIVELY overkill, and fills up fast, but nix making everything near fully declarative to roll fwd/back or shuffle b…

Sounds like a poster child for LXC containerization with Proxmox — all the host-level management of a non-ephemeral VM (including snapshots!), without the every-machine-has-its-own-kernel overhead.

I do have a couple LXC for the things that need tight GPU control. Ollama and DS4 permanently, and an ml-workbench that steals the 3090 from my Cachy gaming VM when I get it in my head that I could try implementing some cool gsplats paper haha.

I could definitely slim things down without disko, virtio, etc, and especially whole separate kernels.. but it's also not such a huge diff that I mind. I'm not adding new services all that fast anymore now that I've got my basics + wishlist set up, so I'll grab another box from the local pc recycler if I ever need space for another ~30 VMs some day rather than when I need space for another ~40-50 LXCs.

And in the meantime if OpenAI publishes a scary brag about how GPT-7 popped a shared kernel on accident I can be relieved that my private bookmarks repo isn't vulnerable while the internet burns down.

Re: The web server deployment model breaks at hobby scale

#58
post #39
post #37

Earlier quoted context omitted.

Ok I'll bite again. Do you want a caddy service embedded with every web app you self host or are you running a single one serving all your apps? From my understanding if you want acme http challenges to just work with let's encrypt you probably need to use a single, separated caddy to front all your apps. In that case if I ship a caddy service pre configured to do TLS termination with my app it's just more trouble fo…

Fair enough, http is enough - I anyways have one caddy to rule them all. However, if your app is picky about reverse proxying, e.g. headers, please add a sample caddy config. It's often the first thing I'm looking for if I'm trying out a tool and want to host it under a subdirectory before configuring a subdomain.

No, HTTP is not enough, I submitted a couple HTTP-only links to HN lately, they got flagged within half an hour, even HN crowd can not open HTTP links anymore ;-)

Re: The web server deployment model breaks at hobby scale

#59
post #29

Earlier quoted context omitted.

Honestly, this is a problem that has been solved by LLMs. Just point Claude Code to the server over SSH and say "We need Immich to be served over HTTPS". You could theoretically upstream the fixed compose.yaml if you felt like it, but the project seemed unusually hostile towards the one fix I tried to upstream.

Here's the entirety of the Caddy config to reverse proxy something with managed tls certs. I feel like it's not that big a deal? photos.example.com { reverse_proxy 127.0.0.1:8080 { header_up X-Real-IP {remote_host} } }

[deleted]

Re: The web server deployment model breaks at hobby scale

#60
Interesting read.

> you see that the reverse proxying rules you would need are more complicated than usual. you can’t Simply forward /api to your application and the rest to the frontend due to various reasons outside your control.

If the author is reading: Can you elaborate on what reason you are referring to that are outside my control?

Post reply on HN