Azure self-hosted n8n: “build once” MVP now, high availability later — what’s the recommended pattern?

Hi all, we’re deploying self-hosted n8n in Azure and want to avoid building it in a way that boxes us in later.
Current plan (MVP):
One Azure virtual machine running n8n in containers
Internal users access via internal domain name service
Other applications will access through a reverse proxy
We may need inbound webhooks (still deciding if public or private)
Future goal (high availability / scalable):
Multiple n8n instances behind a load balancer
Separate workers for execution if needed
Reliable upgrades/rollbacks
No single point of failure at the application layer
Questions for anyone running n8n in production:
Is multi-instance “active/active” supported in practice, and is queue mode required to do it safely?
What’s the recommended split between “web/editor” and “workers” for scale?
What should be treated as the single source of truth — database only, or are there filesystem/shared storage requirements too?
Any gotchas with encryption keys or settings that must be identical across instances?
Where do you terminate transport encryption (reverse proxy vs the n8n container), and any issues either way?
What’s your proven upgrade approach (rolling vs downtime window), and what do you back up to make rollback safe?
If you were starting with a single virtual machine today, what choices would you make to ensure a clean path to high availability later?
If you have example architectures, container configuration patterns, or lessons learned from Azure specifically, I’d really appreciate it!

1 Like

Hi @Justin_Larpenteur Welcome to the community!
If i as an AI engineer want to create a system like multiple n8n instances first i would not align all of those into a single plan, i would divide into multiple different sections like Finance, Clients & Workspace and then i would create a Hostinger account and there i would decide how much load each n8n instance would go through so that i would buy the plans of hostinger self hosted like KVM1 or KVM2 and then i would separate these and that way it would be easier to manage and also if i feel some department like finance need more computation so i would just update the plans from hostinger, and that way i do not have to worry about anything, and this plan is highly scalable, and so if there are more availability i would just add departments and would assign plans according to their usage, what you think about this?