Build n8n Cloud
YESreplaces $27.73/mosaves $332.76/yrback to the verdict
Build an owner-operated n8n workflow instance with persistent credentials and tested recovery.
Before step 1
Everything below is assumed from the first step. Tick each one when you actually have it, not when you plan to.
- installDocker Engine has no hosting fee; Desktop licensing depends on your use, and a rented host is billed separately.
Why The upstream application runs in containers.
Get it Install Docker Engine and the Compose plugin on Linux using the official instructions. On Windows use Docker Desktop with WSL2, then work inside a Linux project folder. open ↗
Verify
docker compose version prints a v2 version and docker info reaches the daemon. - decideSoftware/edition terms and optional paid features are defined by the upstream project.
Why The guide must match the software you actually deploy.
Get it Open https://docs.n8n.io/deploy/host-n8n/install-options/install-with-docker, choose a stable release compatible with its database requirements, record its tag and resolved digest in versions.txt, and use those values in compose.yaml. Avoid unattended latest-tag updates. open ↗
Verify
versions.txt names both application and database versions or states that the pilot uses embedded SQLite. - have readyNo paid service required for this local step.
Why This fixture makes the first end-to-end check reproducible.
Get it Create synthetic sample data before implementation: A Manual Trigger to Edit Fields workflow producing hello plus a Schedule Trigger proof using no external account. Save it under fixtures/ with the expected results in fixtures/README.md; use no real credentials or customer records.
Verify
The fixture files and expected outcomes exist and can be inspected without a vendor account. - decideNo paid service required for this local step.
Why The full commercial product is larger than this guide.
Get it The deliverable is an owner-operated n8n workflow instance with persistent credentials and tested recovery. Read every exclusion below. Indie mode runs locally; any public or shared use requires the product access and deployment gates first.
Verify
You can name the primary workflow and the vendor features this version deliberately leaves out.
Data model
Create these before the first phase that stores anything. Changing a table later is the expensive kind of change.
- Use the upstream n8n schema. For the local pilot retain the entire /home/node/.n8n volume, including its SQLite database and encryption material - keep workflow exports and pinned image digest. Product mode must rehearse the documented PostgreSQL migration/export path rather than simply changing database settings. - Use stable ids and explicit relationships; add auxiliary tables named by the phases before those phases use them. - Acceptance fixture: A Manual Trigger to Edit Fields workflow producing hello plus a Schedule Trigger proof using no external account.
Environment variables
These go in a .env file the app reads at startup. The pack's .env.example is this table as a file · copy it, never commit the filled-in version.
| Variable | Needed | Example | Where the value comes from |
|---|---|---|---|
APP_IMAGE | required | replace-with-tested-image-and-digest | Copy the exact application image reference selected from upstream into compose.yaml via this variable. |
SITE_URL | required | http://localhost:5678 | The loopback URL selected in compose.yaml; replace with your HTTPS origin only after completing product deployment. |
GENERIC_TIMEZONE | required | UTC | Set the intended workflow timezone in the n8n service; record it beside the schedule proof. |
TZ | required | UTC | Container system timezone; keep it consistent with the intended pilot timezone. |
The build, in order
Deployment inventory and safe pilot
Prepare the pinned upstream deployment for an owner-operated n8n workflow instance with persistent credentials and tested recovery.
Read the linked upstream installation guide and create compose.yaml, .env.example, versions.txt and OPERATIONS.md. Map APP_IMAGE and only each service's required environment variables explicitly. Keep database ports internal and map the pilot application port to 127.0.0.1.
Files
compose.yaml.env.exampleversions.txtUse the upstream n8n schema. For the local pilot retain the entire /home/node/.n8n volume, including its SQLite database and encryption material; keep workflow exports and pinned image digest. Product mode must rehearse the documented PostgreSQL migration/export path rather than simply changing database settings. Name each volume and its mount path in OPERATIONS.md; never use ephemeral container storage for the only copy. Create .env manually from .env.example and replace placeholders before starting.
Files
OPERATIONS.md.gitignoreterminaldocker compose config --quiet
Create a private fixtures/ folder containing: A Manual Trigger to Edit Fields workflow producing hello plus a Schedule Trigger proof using no external account. Create a separate backup destination and an isolated restore-project name; do not reuse live volumes in restore exercises.
Files
fixtures/README.mdOPERATIONS.md
done when · tick each as it passeswatch out- A valid Compose file proves configuration syntax only, not application health.
Persistent local instance
Persistent local instance for n8n Cloud: Deploy the official n8n image using Compose with a persistent /home/node/.n8n mount and a loopback mapping for port 5678.
Deploy the official n8n image using Compose with a persistent /home/node/.n8n mount and a loopback mapping for port 5678.
Files
compose.yamlOPERATIONS.mdCreate the owner account and retain the generated encryption material with restricted backups; disable optional AI/cloud features for this pilot.
Files
OPERATIONS.mdUse A Manual Trigger to Edit Fields workflow producing hello plus a Schedule Trigger proof using no external account. Check: Restarting the container retains the owner account and a saved workflow. Then check: The editor is unreachable through a non-loopback host interface. Record commands, observed results and the date in OPERATIONS.md.
Files
OPERATIONS.md
done when · tick each as it passeswatch out- Follow upstream settings for the selected release; do not copy deprecated task-runner flags from old examples.
Useful workflow proof
Useful workflow proof for n8n Cloud: Build the Manual Trigger and Edit Fields proof, inspect output, then add a Schedule Trigger with the intended timezone.
Build the Manual Trigger and Edit Fields proof, inspect output, then add a Schedule Trigger with the intended timezone.
Files
compose.yamlOPERATIONS.mdExport the workflow JSON and record its expected output; keep credentials in the n8n credential store, never in exported node parameters.
Files
OPERATIONS.mdUse A Manual Trigger to Edit Fields workflow producing hello plus a Schedule Trigger proof using no external account. Check: The manual workflow produces the exact hello field. Then check: The scheduled proof runs at the documented timezone and appears in execution history. Record commands, observed results and the date in OPERATIONS.md.
Files
OPERATIONS.md
done when · tick each as it passeswatch out- An enabled schedule is an actual side effect; test only a harmless local workflow.
Recovery and upgrade
Recovery and upgrade for n8n Cloud: Stop the local SQLite instance for a consistent complete volume backup and store encryption material securely alongside it.
Stop the local SQLite instance for a consistent complete volume backup and store encryption material securely alongside it.
Files
compose.yamlOPERATIONS.mdRestore into a new isolated volume with schedules disabled, import or inspect the proof workflow and test before selecting a new image.
Files
OPERATIONS.mdUse A Manual Trigger to Edit Fields workflow producing hello plus a Schedule Trigger proof using no external account. Check: The restored proof workflow runs and any test credential remains decryptable. Then check: The backup manifest includes the encryption material, image version and restore date. Record commands, observed results and the date in OPERATIONS.md.
Files
OPERATIONS.md
done when · tick each as it passeswatch out- Workflow JSON alone is not a backup of credentials or execution data; changing to PostgreSQL does not copy old SQLite data.
Portable delivery and clean-start proof
Finish the n8n Cloud replacement with a documented first-run path and a recoverable export.
Document prerequisites, every configuration variable, data locations and the three domain workflows: Persistent local instance; Useful workflow proof; Recovery and upgrade. Include the exclusions, actual costs and source check date 2026-09-05. Commands shown earlier that reference project files are files the builder must implement before running them.
Files
README.md.env.exampleStop the pilot service and back up its complete persistent volume including SQLite and encryption material; retain versioned workflow exports as a secondary aid. Restore into a separate empty directory or isolated deployment, with all outbound actions and schedules disabled. Recreate this proof: A Manual Trigger to Edit Fields workflow producing hello plus a Schedule Trigger proof using no external account. Compare ids/counts and open the result before recording the restore date. Never test a restore over the only live copy.
Files
OPERATIONS.mdbackup/README.mdUse a new folder and only README instructions to reach the fixture outcome. Verify upstream login, persistence, proof output and restore. Record exactly what passed; do not mark unrun checks complete.
Files
README.mdverification.mdterminaldocker compose ps
done when · tick each as it passeswatch out- Export without an import or restore rehearsal is not verified portability.
Operate and share with access controlsproduct builder
Product-builder only: make an owner-operated n8n workflow instance with persistent credentials and tested recovery operable for its stated audience before allowing remote access.
Use upstream authentication, replace default credentials, restrict the editor/admin surface and inventory public ingestion/webhook paths. Review upstream edition and license boundaries before offering this as a service.
Files
ARCHITECTURE.mdOPERATIONS.mdPut Caddy HTTPS in front of the upstream app, keep database and management ports private and configure public URLs from the chosen domain. For n8n, rehearse upstream PostgreSQL migration/import and recovery before claiming production readiness; disable any unused AI sandbox services.
Files
CaddyfileOPERATIONS.mdAdd a scheduled encrypted off-host backup using this procedure: Stop the pilot service and back up its complete persistent volume including SQLite and encryption material; retain versioned workflow exports as a secondary aid. Monitor health, disk space, failed jobs and backup age. Stop the service to test an alert; rehearse recovery with outbound effects disabled and record recovery time. Rotate any exposed credentials and require reconciliation before resuming queues.
Files
OPERATIONS.mdrelease-checklist.md
done when · tick each as it passeswatch out- Product mode is additional engineering, not a switch that makes a local prototype production-ready.
That is the whole plan for n8n Cloud. What it deliberately does not cover is below · check the gaps before you call it a replacement.
- Workflow JSON alone is not a backup of credentials or execution data; changing to PostgreSQL does not copy old SQLite data.
- This is an owner-operated n8n workflow instance with persistent credentials and tested recovery; full n8n Cloud feature parity, vendor hosting and support are not included.
- managed hosting
- backups
- scaling
- email support
- reduced ops burden
- team/admin features
- Extend recovery and upgrade only after the fixture and recovery checks pass.
- Before adding another integration, document its credentials, limits, cost and failure behavior with primary-source links.
Need the files? The project pack on the verdict page hands your agent the whole brief · more automation.