Internal system · Workflow infrastructure

Workflow server memory cut from 8.3 GB to 4.1 GB, every workflow kept

  • Infrastructure
  • Internal system

Context

The n8n server is the workbench for building and testing client automations. It had been started by hand, on an unpinned image, with no restart rule and no backup. When Docker restarted, it stayed down and nobody was told. The machine was also carrying heavy idle load: one forgotten indexing process sat at 99% of a CPU core.

The decision

Move the workflow server to a free cloud host, or keep it local and make it declared, backed up and watched every morning?

What was built

One checked-in Compose file that pins the exact n8n version, restarts the server by itself, listens on the local machine only and caps its memory. A backup script that copies the data out before every change and fails if the database is missing from the archive. An upgrade from n8n 1.122.5 to 2.20.8 with a proven rollback, checked by counting workflows, credentials and API keys before and after. A fix for an API client that was silently dropping its key. A read-only morning check that runs six tests: Docker running, memory cap, reclaimable space, restart rule, pinned version and backup age. The Docker memory allowance was cut from 8.3 GB to 4.1 GB, and the forgotten indexing process was stopped.

What it demonstrates

Infrastructure rebuilt from one file rather than from memory. A backup proven before the risky step, not after. Drift reported every morning instead of found by accident. A measured before and after for every change.

Reconstructed with synthetic data.

  • Role

    Planner and reviewer, one AI executor run checked and corrected

  • Stack

    Docker Desktop, Docker Compose, n8n, shell, Python

  • Duration

    One day, 10 September 2026

  • Outcome

    Memory allowance 8.3 GB to 4.1 GB, n8n 1.122.5 to 2.20.8, all 16 workflows, 3 credentials and 2 API keys kept

See the build, then book a call to talk through yours. Every engagement ends with a handover your team can run.