Upgrading an Alpine Linux Installation After Waiting Way Too Long
      
      I’m blogging today’s yak shaving exercise because I found web searches challenging for some of this. And hopefully writing them down here will both help improve those searches and help me remember. Also, I am determined to blog more in 2024.
      
    
    
    
    
  PSA: Docker Will Edit Host-Based Firewall Rules For You
      
      Over the past week or so, I’ve been trying out using Docker to deploy a Django site on a VPS. My preferred setup for that is to have Caddy running on the host, not in any container, as a reverse proxy. (It’s a single, static binary; I don’t see any joy in wrapping that in a container.) In the past when I’ve hosted similar things, I just ran gunicorn in a python virtualenv on the host as well, and bound it to the loopback. The current thing I’m building is a little bit more painful to run that way on my VPS, so I thought I’d finally cave and give Docker a try in “production.” While there was quite a bit to like about it, there was also an unpleasant surprise.
      
    
    
    
    
  Hosting Side Projects in my Basement
      
      For trying out new things, sometimes I want to make them accessible from the internet. I’ve got a small reverse proxy VPS on one of the cloud hosts. This is how I currently set them up on a VM in my basement and expose them via that proxy. Writing out all the steps from install to accessibility makes this seem like a lot of work, but it isn’t hard and goes quickly.
      
    
    
    
    
  Fun with Nginx as an API cache
      
      I’m learning more about front-end development. This means that a debugging session where I get stuck at the wrong point can make me abuse a server and blow past an API rate limit. Here’s my setup for preventing that.