We host what we build, on dedicated servers in Europe, because a fixed monthly cost is easier to plan for than a bill that scales with traffic, and because a platform that can be inspected can be fixed. Where a client would rather hold the accounts, we run the same setup on theirs.
A typical stack is a set of containers behind a reverse proxy that terminates TLS, with the application mounted read-only from the repository so the running site cannot drift from the source. Staging and production usually share a server, routed by hostname, with separate volumes and separate secrets.
Releases go through a pipeline: merging updates staging on its own, and production waits for a person to approve it. Backups, health checks and monitoring are part of the setup rather than an afterthought.
