Taking Back Control: My Pragmatic Laravel Infrastructure Stack

Hey everyone, Jamie here.

After my brief and... educational... experience in a heavily abstracted corporate environment, I've been spending a lot of time thinking about the fundamentals. I've missed the feeling of knowing my stack, from the kernel all the way up to the application logic. When you're dealing with endless meetings, opaque processes, and time tracking, you start to crave simplicity, control, and raw performance.

For me, that means getting back to the metal (or as close as is practical).

Running my application hosting, has given me some strong opinions on what makes a stable, efficient, and joyful stack to work with. When I'm not forced to use a pre-defined corporate setup, I have a go-to stack for my Laravel applications. It's lean, it's modern, and it's incredibly robust.

Let's talk about my preferred setup: AlmaLinux, Caddy, and a side of Proxmox.


The Foundation: AlmaLinux

For years, the default “VPS” operating system for most web developers has been Ubuntu. It's a fantastic, user-friendly distro, and I've used it on countless projects.

But when it comes to a production server that I want to set up and then forget about for five years, I lean on the Red Hat (RHEL) ecosystem. With CentOS Stream becoming a rolling release, AlmaLinux has stepped in perfectly as the 1:1 binary compatible, free RHEL fork.

Why AlmaLinux over Ubuntu?


The Modern Web Server: Caddy

This is where I get really opinionated. I've spent decades configuring Apache and Nginx. Apache is powerful but feels ancient, and .htaccess files are a source of endless pain. Nginx is a performance marvel, but let's be honest, the configuration syntax is verbose, and setting up SSL with Certbot is an extra step I just don't want to do anymore.

Then I found Caddy.

Caddy is a modern, open-source web server written in Go, and it's an absolute game-changer for a few key reasons:

Want to run a standard Laravel app? Here's a basic Caddyfile for my-laravel-app.com:

my-laravel-app.com {
    # Set the root directory to your app's public folder
    root * /var/www/my-laravel-app/public

    # Enable compression
    encode zstd gzip

    # Handle the "front controller" pattern
    file_server
    try_files {path} {path}/ /index.php?{query}

    # Proxy PHP requests to PHP-FPM
    php_fastcgi unix//run/php-fpm/www.sock
}

That's it. That's the entire file. It handles the HTTPS, the front-controller pattern, and the PHP-FPM connection in 12 clean lines. It makes Nginx config look like assembly language. It's fast, secure by default, and removes so much cognitive overhead.

The Host: VPS or Proxmox?

So, where do I run this AlmaLinux + Caddy stack? It comes down to two choices, depending on the scale.

1. The Rented VPS (The Pragmatic Default)

For most individual projects, this is the way to go. I'll spin up a VPS from a provider like Hetzner, Vultr, or DigitalOcean. Within minutes, I have a root shell on a clean AlmaLinux install. I can install Caddy, PHP-FPM, and my database, deploy my app, and be live in under an hour.

It's the perfect balance of cost, control, and low maintenance. You're not managing hardware, but you have full control over the OS and software.

2. The Proxmox Power-Play

This is where my inner infrastructure nerd comes out. For larger setups or when I want to run multiple isolated services, I turn to Proxmox.

Proxmox is an open-source virtualization platform. You rent one big, powerful bare-metal server and install Proxmox on it. From there, you can create and manage your own Virtual Machines (VMs) and, more importantly, lightweight Linux Containers (LXC).

This gives you a private cloud. I can have:

This is the ultimate in control and efficiency. You're isolating every part of your application, which is great for security and resource management, all on a single piece of rented hardware. It's more complex, but it's how you build a truly resilient, multi-tenant setup—which is exactly what I do for my hosting clients.


Conclusion: The Joy of a Curated Stack

This stack isn't a “PaaS” (Platform-as-a-Service) like Vapor or Heroku. It's not a one-click deploy. It requires you to know your way around a Linux shell and understand how the pieces fit together.

But after my last role, I'm reminded that this is what I love. I don't want the “black box.” I want a setup where I've chosen every component for a specific reason. This stack—AlmaLinux for stability, Caddy for modern simplicity, and Proxmox for ultimate control—is performant, secure, and, most importantly, a genuine pleasure to work with.

What's your go-to “pragmatic” infrastructure stack? Let me know in the comments.

Cheers,

Jamie