Skip to main content

Buyer guide

n8n Self-Hosting Checklist

Self-hosting n8n means PostgreSQL, a backed-up encryption key, monthly updates, external task runners, and monitoring that checks runs complete.

Reading time
3 min read
Sources
17 cited
In this piece
n8n0 Mixed

Self-host n8n only if your team will run the database, back up the encryption key, update at least monthly, isolate Code nodes, scale the instance, and monitor that executions complete. The software is free for internal use, and all of that operating work is yours.

When you need this

  • Data rules or cost push you to run n8n on your own infrastructure.
  • A self-hosted instance started as one person's experiment and now runs team workflows.
  • An update broke workflows, or an outage went unnoticed.

Evaluation criteria

  1. Database

    Which database holds your workflows, credentials, and executions?

    Look forUse PostgreSQL for anything beyond a single user. n8n uses SQLite by default and supports PostgreSQL 16, 17, and 18. Turn on execution data pruning, since saved executions grow the database.

  2. Backups and the encryption key

    Could you restore credentials on a new server tomorrow?

    Look forBack up the database and the .n8n folder, which holds the encryption key. Without the key, restored credentials cannot be decrypted. n8n recommends a full backup before every update.

  3. Updates

    Who updates the instance, how often, and where is the update tested first?

    Look forUpdate at least monthly, test each update in a separate environment first, and read the release notes and migration report before a major version. Public reports include a 2.x upgrade that broke a Docker Compose setup, and webhooks with a Wait node becoming unresponsive after 2.16.0 and 2.17.0. Read the scheduler notes before moving to 2.45, now the stable release (2.45.5 on October 28, 2026), while 2.46 is on the beta track and 3.0 is in pre-release. Schedule Triggers move to the durable scheduler by default, and every-N-seconds or every-N-minutes schedules run a steady N apart from publish time and no longer align to clock boundaries. N8N_SCHEDULER_TRIGGER_NODE_MODE=legacy and N8N_SCHEDULER_ENABLED=false restore the old timing for now and are deprecated. On Postgres, run 2.44.6 or later before the durable scheduler is on. In earlier versions, opening a Postgres node v2.1 to 2.6 in the editor could stop every Schedule Trigger until the main instance restarted.

  4. Code isolation

    Could code in a Code node read your encryption key or credentials?

    Look forRun task runners in external mode as a sidecar. n8n calls them the only isolation layer between Code node code and n8n, and internal mode is deprecated from n8n 3.0. Block risky nodes, such as Execute Command and Read/Write Files from Disk, with NODES_EXCLUDE. On Enterprise, node type policies (n8n 2.44, October 13, 2026) allow, deny, or delegate each node type for the whole instance or one project. The n8n service checks them when workflows are saved, published, and run and when agents call tools.

  5. Scaling

    What happens when executions arrive faster than one instance can run them?

    Look forSet a production concurrency limit (off by default in regular mode), then move to queue mode with Redis and workers when one instance is not enough. Tune the worker count against PostgreSQL. One self-hoster measured 1,370 workflows a minute with 2 workers and 840 with 8.

  6. Monitoring

    Would you notice if webhooks stopped arriving at 3am?

    Look forCheck /healthz/readiness as well as /healthz, enable /metrics, and alert on missing executions. One self-hoster's uptime monitor stayed green for fourteen nights while a log rotation hook killed n8n and webhooks were dropped.

Questions to ask vendors

  1. Is our encryption key stored outside the server, and has a restore been tested?
  2. Which version are we on, and when did we last read the release notes?
  3. Are task runners in external mode on every main and worker instance?
  4. Do we self-host for data control, for cost, or both, and does the cost still hold once upkeep hours are counted?

Red flags

  • SQLite with execution saving on and no pruning, on an instance several teams use.
  • The latest image tag pulled automatically in production.
  • Code nodes running in internal mode on an instance that holds production credentials.
  • Health checks that confirm the container runs but not that executions complete.

Products in this piece

Sources

Official documentation
11
Public source
6
  1. n8n docs: Choose n8n's databaseOfficial documentationdocs.n8n.io
  2. n8n docs: Back up and restoreOfficial documentationdocs.n8n.io
  3. n8n docs: Manage execution dataOfficial documentationdocs.n8n.io
  4. n8n docs: Control concurrency (self-hosted)Official documentationdocs.n8n.io
  5. n8n docs: Monitor n8nOfficial documentationdocs.n8n.io
  6. n8n docs: Block specific nodesOfficial documentationdocs.n8n.io
  7. n8n docs: Update n8nOfficial documentationdocs.n8n.io
  8. n8n docs: Set up task runnersOfficial documentationdocs.n8n.io
  9. n8n docs: Enable queue modeOfficial documentationdocs.n8n.io
  10. n8n docs: Run security auditsOfficial documentationdocs.n8n.io
  11. n8n docs: ChangelogOfficial documentationdocs.n8n.io
  12. n8n 2.44.6 release notes on GitHub (Oct 22, 2026)Public sourcegithub.com
  13. n8n Community: Working 2.x Docker Compose example (Jan 24, 2026)Public sourcecommunity.n8n.io
  14. GitHub issue: Webhook upgrades to 2.16.0 and 2.17.0 have serious bugs (Apr 14, 2026)Public sourcegithub.com
  15. Reddit r/n8n: When 8 workers perform worse than 2 (Nov 1, 2025)Public sourcereddit.com
  16. Reddit r/selfhosted: n8n dropped every webhook at 3am for two weeks (Apr 18, 2026)Public sourcereddit.com
  17. n8n Community: n8n vs Zapier, my honest cost breakdown after 1 year of self-hosting (Apr 11, 2026)Public sourcecommunity.n8n.io