Self-Hosted Deployment Architecture: Our Production Stack
How QuikCue runs 15+ production services on self-hosted infrastructure. Architecture decisions, tooling, costs, and lessons learned.
We run 15+ production services — across two organisations — on a single dedicated server costing £50/month. No AWS. No Vercel. No monthly surprise bills. Here's the architecture.
The Stack
159.195.60.33 (Hetzner Dedicated — 64GB RAM, 8 cores)
├── Incus Container: QuikCue (10.213.16.234)
│ ├── Dokploy (deployment management)
│ ├── Traefik v3 (reverse proxy, SSL)
│ ├── calvana (NestJS API + React dashboard)
│ ├── PledgeNow (Next.js)
│ ├── Ghost ×2 (blogs)
│ ├── n8n (workflow automation)
│ ├── WAHA (WhatsApp API)
│ ├── Gitea (git hosting)
│ ├── PostgreSQL (shared databases)
│ └── MySQL 8 (Ghost databases)
│
└── Incus Container: CharityRight (10.213.16.224)
├── Dokploy (deployment management)
├── Traefik v3 (reverse proxy, SSL)
├── Laravel (main app)
├── Checkout v2 (donation processing)
├── Metabase (analytics)
├── Ghost (blog)
├── n8n (automation)
└── PostgreSQL + MySQLKey Architecture Decisions
Incus for Isolation
We run two organisations on one server using Incus (LXC) containers. Each org gets its own container with:
- Isolated networking
- Independent Docker installations
- Separate Dokploy instances
- No cross-contamination risk
Dokploy for Deployments
Dokploy (our guide) provides:
- Git-based deployments
- Docker Compose and Swarm support
- SSL certificate management
- Database management
- No vendor lock-in — it's open source
Traefik for Routing
One Traefik instance per container handles all routing:
- Automatic Let's Encrypt certificates
- Docker label-based service discovery
- File-based config for standalone services
- Priority-based routing for path-sharing
HAProxy at the Edge
HAProxy on the host server handles SNI routing to the correct Incus container. Each container's Traefik then handles application-level routing.
Costs
| Item | Monthly Cost |
|---|---|
| Hetzner dedicated server | ~£50 |
| Domains (amortised) | ~£5 |
| Email (Resend) | £0 (free tier) |
| Total | ~£55/month |
The same services on AWS/GCP would cost £500-2,000/month. Self-hosting saves us ~£20,000/year.
Want This Infrastructure?
QuikCue builds and manages self-hosted infrastructure for organisations that want control and cost efficiency. One server, all your services, £50/month.
We build autonomous systems for charities.
Pledge collection, payment processing, WhatsApp automation, analytics dashboards, and the infrastructure that lets a small team do the work of fifty. Free tools. Fractional technology leadership. No fluff.
Get the next deep dive in your inbox.
No spam. No weekly roundups. Just the occasional piece when we have something worth saying.
Related articles
Traefik Reverse Proxy: Complete Guide for Self-Hosters
How to set up Traefik as a reverse proxy. Automatic HTTPS, Docker integration, load balancing, and advanced routing. Complete tutorial for self-hosters.
Why We Self-Host Everything (And You Should Consider It Too)
QuikCue runs 6+ production applications on a single £40/month server. Here's why we chose self-hosting over managed cloud — and when it makes sense for you.
Dokploy: The Self-Hosted Deployment Platform (Review & Guide)
A comprehensive review of Dokploy — the self-hosted Heroku/Vercel alternative. Setup guide, real-world usage, and why we chose it for production infrastructure.