ADR-0002: Self-host n8n on Zeabur at n8n.huskydata.io¶
Context¶
Husky Data's website forms (contact, opt-out/DSR) needed webhook handling: receive submission → notify via Telegram → respond to browser. During initial buildout we used NB Media's (parent company) n8n instance, which was hosted on their AWS infrastructure under the nextbuzz.co domain.
Two problems surfaced:
1. Ownership boundary. Husky Data's lead pipeline running through NB Media's infrastructure creates coupling: credential rotation, uptime, migration decisions all require cross-org coordination. If NB Media faces infrastructure issues (or eventually spins down that n8n), Husky's lead flow breaks.
2. Domain hygiene. Forms on huskydata.io submitting to n8n.nextbuzz.co looks off to procurement/security reviewers. Everything customer-facing should live on huskydata.io subdomains.
We evaluated hosting options: - Stay on NB Media's n8n (status quo) - Move to managed n8n Cloud (SaaS) - Self-host on Zeabur (PaaS with n8n template) - Self-host on own VPS (Hetzner, DigitalOcean)
Decision¶
Self-host n8n on Zeabur at n8n.huskydata.io. Migrate existing Contact and Opt-Out workflows; deactivate NB Media copies after 48-hour clean parallel run.
Specifics:
- Zeabur project with n8n template, PostgreSQL backing store
- Custom domain n8n.huskydata.io with CF proxy + Zeabur TLS
- Telegram credentials stored in n8n credential manager, owned by Husky
- Workflow API backups versioned in n8n (export to Git later as needed)
Alternatives considered¶
- Stay on NB Media n8n — free, working. Rejected: cross-org coupling, domain hygiene, long-term ownership risk. Lead flow is core business infrastructure.
- n8n Cloud — easiest operational model. Rejected: pricing scales with executions; custom domain requires higher tier; less control over encryption key custody.
- Self-host on Hetzner/DO VPS — cheapest at scale, full control. Rejected: requires OS patching, Postgres management, backup strategy, monitoring. Over-engineered for a CEO-led team at this stage.
- Self-host on Zeabur (chosen) — Git-deploy, auto TLS, managed Postgres, $5-10/mo at our volume. Good middle ground between managed and self-hosted.
Consequences¶
What gets easier¶
- All customer-facing infra on huskydata.io — clean for procurement review
- Credential and key custody fully owned
- Can iterate workflows independently of NB Media
- Zeabur's Git deploy + environment UI is simple enough to hand off
What gets harder / what we give up¶
- We own the encryption key and backups — lose the key, lose the credential store
- Patching and version upgrades now our responsibility (n8n ships frequent updates)
- If Zeabur has an outage, our lead flow stops (mitigated by Telegram bot caching? TBD)
What this commits us to (reversibility cost)¶
- Zeabur dependency — migration to another host possible but requires workflow export + credential re-entry
- Custom domain DNS record — trivial to flip
Risks & mitigations¶
- N8N_ENCRYPTION_KEY loss — mitigation: user to extract from Zeabur shell and store in password manager; documented in ops runbook
- Zeabur outage during lead spike — mitigation: for now accept risk given low volume; future: add secondary webhook target (e.g., direct Telegram from client as fallback)
- Workflow drift between environments — mitigation: export workflows to Git periodically; Zeabur is source of truth operationally
- n8n version upgrades breaking workflows — mitigation: read release notes before auto-upgrade; test on preview workflow before prod
Evidence / links¶
- Previous host:
n8n.nextbuzz.co(NB Media infra — now inactive after migration) - Current:
n8n.huskydata.io - Related: Playbook: DSR / opt-out response
Review¶
- Next review: 2026-10-18 (6 months after migration)
- Triggers to revisit early:
- Zeabur pricing change that makes cost uncompetitive
- Repeated outages (>1 per quarter)
- n8n workflow complexity grows to where a proper engineering team is warranted