Production-ready self-hosted n8n on your server — in 5 days.
Automations built to last.
A self-hosted n8n instance is one docker-compose file away.
A self-hosted n8n instance that survives a power cycle, a backup-restore drill, a Let's Encrypt renewal, and an n8n minor-version upgrade — that's a different deliverable. I ship the second one.
No discovery call. You provision the server. You share access. I deploy and hand over a runbook within 5 days.
NDA-friendly · Fixed-price · Money-back guarantee
FIG · Self-hosted deployment stack
Fit
Who this is for
You've decided to run n8n yourself. To keep data on infrastructure you control. To escape per-execution pricing. Or because your compliance team requires it.
You don't want to spend a weekend debugging Docker networking, Caddy's automatic-HTTPS edge cases, Postgres backup retention scripts, or which environment variables n8n actually respects in 2026.
This is for technical operators who want a production stack handed over with the operational seams documented — not a half-finished tutorial in a GitHub gist.
Before you self-host
What a production self-hosted n8n stack actually involves
Self-hosting n8n is one docker-compose file away — and that's exactly the trap. The tutorial version runs; the production version survives a reboot, a backup-restore drill, a certificate renewal, and a version upgrade. Here's what actually separates the two, so you can decide whether to build it yourself or have it handed over.
The five decisions that make a self-hosted n8n stack production-grade
- <strong>Postgres, not SQLite.</strong> n8n ships with SQLite by default — fine for a demo, a liability in production: it locks under concurrency and makes backups awkward. A real deployment runs a dedicated Postgres with shared_buffers, work_mem, and max_connections tuned to the host's RAM, not the upstream defaults.
- <strong>Docker Compose with pinned versions.</strong> n8n + Postgres + a reverse proxy, each pinned to a known-good version so an unattended image pull can't break you overnight — reproducible from a fresh server with one command.
- <strong>HTTPS that renews itself.</strong> A reverse proxy (Caddy or Nginx) terminating TLS with automatic Let's Encrypt renewal, HTTP→HTTPS redirect, HSTS, and security headers — verified before you rely on it, not discovered the day the cert expires.
- <strong>Encrypted, tested backups.</strong> A daily encrypted pg_dump with retention and an off-host destination (S3 / Backblaze / rsync) — plus the step everyone skips: actually restoring from one to prove it works.
- <strong>Queue mode — only when you need it.</strong> For a single server up to ~50k executions/month, regular mode tuned correctly is enough. Past that, queue mode with Redis and worker nodes is how you scale throughput without dropping executions (that's SKU P — Scaling & Performance).
Want the production version without the weekend?
This setup hands you all five — docker-compose, Postgres, auto-renewing HTTPS, encrypted backups, and monitoring + a runbook — deployed on your server in 5 days, with the operational seams documented so you can run it yourself afterward.
Stack
The stack I deploy
n8n
Latest stable version. Queue mode optional (default: regular mode tuned for single-server workloads up to ~50k executions/month).
Postgres 16
Dedicated Postgres for n8n's execution data. Tuned shared_buffers, work_mem, and max_connections for the host's RAM. Not the upstream defaults.
Caddy
Reverse proxy with automatic HTTPS via Let's Encrypt. HTTP-to-HTTPS redirect. HSTS. Security headers configured by default.
Daily encrypted Postgres backups
pg_dump with GPG encryption. Written to a local backup directory with 7-day retention rolled by a cron job. Off-host destination (S3, Backblaze B2, or rsync target) configured on request at intake.
Monitoring
Your choice of Uptime Kuma (self-hosted, included in the compose file) or healthchecks.io (hosted, free tier, ping URL wired in). Pick one in the brief. I wire the right interval and the alerting channel.
One-command bootstrap script
./bootstrap.sh yourdomain.com admin@yourdomain.com — provisions the entire stack from a fresh Ubuntu 22.04 or 24.04 server.
Operational runbook
Single PDF, approximately 6 pages. Covers: deploy, rotate credentials, restore from backup, debug common issues, upgrade n8n one minor version safely.
Deliverables
What's included
- Docker-compose file with n8n + Postgres 16 + Caddy, all pinned to known-good versions.
- Bootstrap script: clone, configure, start. Verified on Ubuntu 22.04 and 24.04 LTS.
- Encrypted daily backup cron with 7-day retention. Off-host destination configurable.
- Monitoring of your choice (Uptime Kuma or healthchecks.io) wired with the right interval and alerting channel.
- HTTPS via Caddy and Let's Encrypt. Auto-renewal verified before handover.
- Operational runbook covering: deploy a fresh server, rotate the Postgres password, restore from yesterday's backup, debug a stuck workflow, upgrade n8n one minor version safely.
- One handover deliverable in writing — README plus runbook plus a short Loom walk-through of the live instance.
Scope exclusions
What's NOT included
- Server provisioning. You bring the host — DigitalOcean droplet, Hetzner, AWS Lightsail, your own VM. I deploy on it.
- Domain and DNS. You bring the domain and point an A-record at the server before I start.
- Workflow migration. If you need workflows moved from Zapier or Make, see SKU B — Stack Migration.
- Custom queue-mode scaling with Redis and worker nodes. That's a custom Integration Build, not this SKU.
- High-availability multi-node setup. This is single-server production-grade, not multi-region.
- Ongoing operations. For monthly oversight see SKU I — Retainer.
- Active Directory or SAML SSO integration.
- Windows Server hosts. Ubuntu 22.04 or 24.04 LTS only.
Process
How it works
- 01
Try the sandbox first (optional, free).
Receive a sandbox URL plus admin credentials within 5 minutes. The sandbox runs a full n8n + Postgres + Caddy stack on my demo box. Container auto-destroys after 48 hours. Use it to verify the stack matches what you want before you buy.
- 02
You buy.
$997 fixed. Fund the milestone via Upwork or direct invoice.
- 03
You provision and share access.
Fresh Ubuntu 22.04 or 24.04 LTS server. SSH key access. Root or sudo. Domain pointed at the server's IP. You fill a one-page intake — server IP, domain, admin email, monitoring choice, backup destination.
- 04
I deploy within 5 calendar days.
No mid-flight calls. If a blocker surfaces I send one written question.
- 05
I deliver.
ZIP containing the compose file, bootstrap script, README, runbook PDF, and a short Loom walking through the live instance. You log in, change the admin password, and you're operational.
- 06
Money-back if it fails acceptance.
Acceptance = the runbook procedures execute as written against the delivered stack. Full refund through Upwork milestone or direct invoice.
Proof
Try the 48-hour sandbox
See the stack running before you buy. The sandbox is a full n8n + Postgres + Caddy deployment on my demo infrastructure, provisioned in under 5 minutes.
- 01
Submit your email.
Sent to syed@noorflows.com with subject "Sandbox request — SKU C".
- 02
Receive a sandbox URL plus admin credentials within 5 minutes.
- 03
Build a workflow. Trigger it. Watch the logs. Browse the runbook.
- 04
After 48 hours the container is destroyed and the URL stops resolving.
No data persists. No follow-up emails unless you opt in.
What you're trying
The sandbox is identical to the stack you receive at handover — same n8n version, same Postgres tuning, same Caddy config, same monitoring wired in. What you test is what you buy.
Pricing
Pricing
| Scope | Price | Timeline |
|---|---|---|
| Single-server production stack as specified above | $997 | 5 days |
Fixed price. Includes the stack, the runbook, and the handover Loom. Need queue-mode with separate worker nodes, Redis, and horizontal scaling? That's a custom scope — start with this SKU, then extend.
Questions
FAQ
What server size do I need?
Can you deploy on Hetzner, DigitalOcean, AWS, GCP, Azure, my own VM?
What if I want a different reverse proxy — Traefik or nginx?
Where do backups go by default?
Does the sandbox give me persistent data?
Will you also help us migrate our existing Zapier workflows onto the new instance?
Is there an option for ongoing maintenance after handover?
What if you go on vacation right when something breaks?
Can I run this stack on ARM (Graviton, Ampere, Raspberry Pi)?
What happens to my workflows if I cancel hosting later?
What if self-hosting isn't right for my team?
Ready to deploy ?
NDA-friendly · Fixed-price · Money-back guarantee
Async delivery. Written deliverables.
syed@noorflows.com · async only · UTC+5