← All sessionsHomeSearch
C7 EST | 14 Day AI Sprint·Bonus Session·2:26:00

Bonus + Demo Day: Self-Hosting n8n with Docker (Cloud vs Local Decision, the n8n_data Volume, Credentials, ngrok) and How the Hackathon Was Judged

Ritesh Bonus mentor - finance background, no engineering training, runs self-hosted n8n daily: 'if I can do it... a lot of you people can do it as well' · Uthappa Host - frames the bonus (no breakouts, Slido in main room) and emcees Demo Day

The short version

  1. Cloud n8n (~$25/month, 2,500 executions INCLUDING test runs) buys one-click credential sign-ins, the AI assistant and team access control. Self-hosting buys local file access, an unrestricted Code node, every community node, local LLMs via Ollama/LM Studio - and no subscription. Rule: individuals start on cloud and move local when they hit the execution cap; technical teams with data-privacy needs go local; large enterprises stay cloud for compliance and SLAs.
  2. The install is eight steps in Docker Desktop, and one of them is sacred: create the volume named exactly n8n_data BEFORE running the container - it is the only thing that survives restarts and updates. Port 5678 because every doc assumes it. Activate with the free license key emailed on first run. Update by re-pulling 'latest' - at most monthly, because updates can break workflows.
  3. What changes locally: no 'Sign in with Google' - Gmail/LinkedIn need a client ID and secret from the provider's console (two hours the first time, ten minutes after; one-time per credential type). ChatGPT/Gemini nodes are just an API key. Workflows move by JSON export/import, credentials never do - transfer once, don't ping-pong.
  4. A local instance listens on localhost only; webhooks from the world need an ngrok tunnel (no domain/SSL setup was covered). It must be on 24/7 or workflows stop - so production belongs on an always-on box (Hostinger ~$5). Containers are sandboxed: a broken n8n container cannot hurt the host; the npm install has no such wall and is discouraged. Selling self-hosted solutions to clients is 'absolutely legal'; n8n charges resellers, not self-hosters.
  5. Demo Day: 50+ teams submitted; four criteria - problem understanding, is it actually functional 'beyond a pretty interface', creativity, presentation via a Loom walkthrough; three winners became five. Fifth place: TripTally ('track every travel dollar'), Lovable front end after trying Bolt, Supabase backend with field validation and encryption, two days.

The concepts

01

Cloud vs self-hosted n8n: the trade-off table and the decision by audience

Two and a half thousand executions sounds like plenty until you learn every test click counts as one.

Cloud: ~$25/month base for 2,500 executions (test runs included - limits arrive fast), one-click OAuth for nodes, the n8n AI assistant, team collaboration with access control, and until recently only verified community nodes (changing in the new version). Self-hosted (your PC, a company server, or a rented VPS): free beyond your own compute, local file access via the Read/Write Files from Disk node, an unrestricted Code node for arbitrary Python/JS, all community nodes, direct connection to local LLMs (Ollama, LM Studio), and 'the entire 4-hour class' on local AI deferred. Costs: no permissions model ('anyone with access can edit anything'), no AI assistant, and patience. Decision: personal use starts on cloud and migrates when the cap bites; technical teams needing data control go local; large enterprises stay cloud for compliance and support SLAs. Hostinger's managed n8n (~$5/month, unlimited executions, updates handled) sits between.

Why it matters

Paul already pays for a Hostinger VM (OH XII); this is the clearest statement of what moving n8n onto it does and does not buy.

n8n cloud vs self-hosted (bonus session): what each side gives up CLOUD ~$25/mo, 2,500 executions (test runs count) + one-click credential sign-in + n8n AI assistant + team access control - no local files, limited Code node SELF-HOSTED free (Docker) or Hostinger ~$5/mo managed + local files (Read/Write from Disk) + unrestricted Code node, all community nodes + local LLMs (Ollama, LM Studio) - no team permissions, manual OAuth setup Individual starting out CLOUD, migrate at the execution cap Technical team, private data LOCAL Large enterprise CLOUD (compliance, SLAs) Volume n8n_data BEFORE first run; port 5678; re-pull "latest" monthly at most; ngrok for webhooks; must run 24/7
Ritesh's comparison from the bonus session: what each side of n8n gives up, and which kind of user should start where.
Go deeper

In one line: Cloud = convenience + team controls at $25/2,500 executions; local = files, code, community nodes, local LLMs, free but solo; choose by user type; managed VPS is the middle path.

Cloud ~$25/month for 2,500 executions incl. test runs (l3186089 0:06, 1:11-1:12)

Local unlocks files, unrestricted Code node, all community nodes, Ollama/LM Studio (l3186089 0:12-0:16)

Cloud unlocks one-click credentials, AI assistant, team access control (l3186089 0:09-0:10)

Individuals cloud -> local at the cap; technical teams local; enterprises cloud (l3186089 0:17-0:22)

No team permissions locally (l3186089 1:34)

Hostinger managed n8n ~$5/month unlimited executions (l3186089 1:11-1:12, 1:43)

▶ Watch this taught:

02

Self-hosting n8n in Docker Desktop, step by step (and the n8n_data rule)

how-to

Skip the volume and every restart wipes your workflows. Name it n8n_data and nothing else matters as much.

Download Docker Desktop for your chip (AMD64 for most PCs, ARM64 for the newer Copilot-class machines, Intel or Apple silicon on Mac); on Windows accept the WSL prompt. In Docker Hub search n8n.io/n8n, choose the 'latest' tag, Pull (~1.63 GB, 10-12 minutes). Volumes -> Create -> name exactly n8n_data. Run the image: container name n8n, host port 5678 (every doc assumes it), mount the volume, add environment variables including TZ from the Wikipedia timezone list, Run. Open localhost:5678, sign up, click 'send me a free license key', then Settings > Usage and Plan > Enter Activation Key for unlimited workflows. Update by pulling 'latest' again - monthly at most; data survives because it lives in the volume, not the image. Containers are sandboxed - a corrupted n8n cannot touch the host; the npm install route gives n8n the whole machine and is discouraged. Two n8n instances can run in one Docker Desktop on different ports.

Do it in this order
Why it matters

Ten minutes of setup replaces the subscription for personal automations - and the volume rule is the one people learn by losing a week of work.

Go deeper

In one line: Docker Desktop -> pull n8n.io/n8n:latest -> volume n8n_data -> run on 5678 with TZ -> free license key -> re-pull to update (monthly); npm install discouraged.

Choose the right Docker build; WSL required on Windows (l3186089 0:26-0:29)

Image ~1.63 GB, 10-12 min (l3186089 0:31)

Volume n8n_data BEFORE first run - preserves everything (l3186089 0:32, 0:57-0:58)

Port 5678; TZ environment variable (l3186089 0:34-0:38, 0:59-1:00)

Free license key -> Settings > Usage and Plan (l3186089 0:41-0:42, 0:51-0:52)

Update by re-pulling; monthly at most (l3186089 0:55-0:56)

Containers sandboxed; npm route discouraged (l3186089 0:49-0:50, 1:24)

▶ Watch this taught:

03

What breaks locally: OAuth credentials, workflow migration, and webhooks via ngrok

The workflow imported perfectly and every node was red. Credentials never travel - and locally there is no 'Sign in with Google' button to fix it.

OAuth nodes (Gmail, LinkedIn) need a client ID and secret created in the provider's console per n8n's linked docs (Google Cloud project, enable APIs, consent screen) - about two hours the first time, ten minutes with practice, one-time per credential type, then shared by every node of that type. API-key nodes (ChatGPT, Gemini) are trivial. Migration: export the workflow JSON from cloud, 'Import from file' locally (and back); structure transfers, credentials do not; move a workflow once rather than syncing both ways. Instance-level MCP access is enabled locally the same way as in cloud. Exposure: local n8n listens on localhost:5678 only; to receive webhooks from Retell, Apify or a Lovable front end, tunnel with ngrok (a public *.ngrok-free.app URL forwarding to 5678) - no domain purchase, reverse proxy or TLS certificate was covered. The box must run 24/7 or workflows stop; production belongs on an always-on server. Debugging: screenshot the node, the workflow and the error text into Gemini/ChatGPT - 'works wonderfully' except rare complex cases. Selling self-hosted builds is 'absolutely legal'; n8n's revenue comes from resellers like Hostinger, not self-hosting businesses.

Why it matters

These three are the difference between 'installed' and 'usable', and the ngrok gap is the reason a VPS with a real domain is the grown-up answer.

Go deeper

In one line: Local OAuth = manual client ID/secret per provider (one-time); workflows migrate by JSON, credentials don't; webhooks need ngrok or a public host; 24/7 uptime required.

Gmail/LinkedIn need client ID + secret via provider console; ~2 h first time, ~10 min later (l3186089 0:44-0:50, 1:15)

ChatGPT/Gemini nodes: API key only (l3186089 1:06)

JSON export/import both ways; credentials never transfer; move once (l3186089 1:03-1:05, 1:46)

MCP access available locally as in cloud (l3186089 1:07-1:08)

ngrok tunnel for external webhooks; no domain/SSL covered (l3186089 1:09-1:10, 1:25)

Must run 24/7; use an always-on server for production (l3186089 1:20)

Selling self-hosted solutions is legal; n8n charges resellers (l3186089 1:18-1:19, 1:39)

▶ Watch this taught:

04

Demo Day: four judging criteria, five winners, and TripTally

'Is it even functional... beyond just being a pretty interface' - the criterion that separated the five winners from the other forty-five.

Fifty-plus teams submitted (after a deadline extension) a deck plus a Loom walkthrough. Criteria: problem understanding (checked against the deck), functionality ('is your app actually working'), creativity/innovation, presentation and storytelling. 'Success comes from balancing all these elements.' Winners went from three to five on submission quality; prizes were an achievement certificate (with completion certificates by Jan 30), a ten-minute live demo, eligibility for a public product showcase, and verification-gated listing on the Outskill alumni page. Fifth place, Team 3's TripTally - 'track every travel dollar' - a personalized trip-budgeting and expense app for an individual or group's specific trip, differentiated from generic itinerary/expense tools by budgeting ahead plus tracking; Lovable front end (Bolt evaluated and dropped), Supabase backend with field-level validation and encryption, two days of work, idea born from a team poll merging 'budgeting' and 'travel'. The recording ends during their screen-share; places 4-1 are not captured.

Why it matters

The criteria are a reusable rubric for judging any vibe-coded MVP - functionality first.

Go deeper

In one line: Rubric: problem understanding, real functionality, creativity, presentation (Loom); 50+ teams, 5 winners; TripTally = Lovable + Supabase travel budgeter.

Four criteria; deck + Loom required (l3186090 0:13-0:14)

50+ submissions; winners expanded 3 -> 5 (l3186090 0:17-0:18)

Prizes: certificate, live demo, showcase eligibility, alumni page (l3186090 0:14-0:16)

TripTally: Lovable + Supabase, validation + encryption, 2 days (l3186090 0:23-0:27)

Recording ends mid-demo; places 4-1 absent (l3186090 0:28)

▶ Watch this taught:

Every concept, three clicks deep

The same concepts as a quick reference: the closed row is the glance, open is the study card, and every timestamp jumps into the recording.

01Cloud vs self-hosted n8n: the trade-off table and the decision by audienceCloud = convenience + team controls at $25/2,500 executions;

Cloud = convenience + team controls at $25/2,500 executions; local = files, code, community nodes, local LLMs, free but solo; choose by user type; managed VPS is the middle path.

Cloud ~$25/month for 2,500 executions incl. test runs (l3186089 0:06, 1:11-1:12)

Local unlocks files, unrestricted Code node, all community nodes, Ollama/LM Studio (l3186089 0:12-0:16)

Cloud unlocks one-click credentials, AI assistant, team access control (l3186089 0:09-0:10)

Individuals cloud -> local at the cap; technical teams local; enterprises cloud (l3186089 0:17-0:22)

No team permissions locally (l3186089 1:34)

Hostinger managed n8n ~$5/month unlimited executions (l3186089 1:11-1:12, 1:43)

02Self-hosting n8n in Docker Desktop, step by step (and the n8n_data rule)Docker Desktop -> pull n8n.io/n8n:latest -> volume n8n_data -> run on 5678 with TZ -> free license key -> r…

Docker Desktop -> pull n8n.io/n8n:latest -> volume n8n_data -> run on 5678 with TZ -> free license key -> re-pull to update (monthly); npm install discouraged.

Choose the right Docker build; WSL required on Windows (l3186089 0:26-0:29)

Image ~1.63 GB, 10-12 min (l3186089 0:31)

Volume n8n_data BEFORE first run - preserves everything (l3186089 0:32, 0:57-0:58)

Port 5678; TZ environment variable (l3186089 0:34-0:38, 0:59-1:00)

Free license key -> Settings > Usage and Plan (l3186089 0:41-0:42, 0:51-0:52)

Update by re-pulling; monthly at most (l3186089 0:55-0:56)

Containers sandboxed; npm route discouraged (l3186089 0:49-0:50, 1:24)

03What breaks locally: OAuth credentials, workflow migration, and webhooks via ngrokLocal OAuth = manual client ID/secret per provider (one-time);

Local OAuth = manual client ID/secret per provider (one-time); workflows migrate by JSON, credentials don't; webhooks need ngrok or a public host; 24/7 uptime required.

Gmail/LinkedIn need client ID + secret via provider console; ~2 h first time, ~10 min later (l3186089 0:44-0:50, 1:15)

ChatGPT/Gemini nodes: API key only (l3186089 1:06)

JSON export/import both ways; credentials never transfer; move once (l3186089 1:03-1:05, 1:46)

MCP access available locally as in cloud (l3186089 1:07-1:08)

ngrok tunnel for external webhooks; no domain/SSL covered (l3186089 1:09-1:10, 1:25)

Must run 24/7; use an always-on server for production (l3186089 1:20)

Selling self-hosted solutions is legal; n8n charges resellers (l3186089 1:18-1:19, 1:39)

04Demo Day: four judging criteria, five winners, and TripTallyRubric: problem understanding, real functionality, creativity, presentation (Loom);

Rubric: problem understanding, real functionality, creativity, presentation (Loom); 50+ teams, 5 winners; TripTally = Lovable + Supabase travel budgeter.

Four criteria; deck + Loom required (l3186090 0:13-0:14)

50+ submissions; winners expanded 3 -> 5 (l3186090 0:17-0:18)

Prizes: certificate, live demo, showcase eligibility, alumni page (l3186090 0:14-0:16)

TripTally: Lovable + Supabase, validation + encryption, 2 days (l3186090 0:23-0:27)

Recording ends mid-demo; places 4-1 absent (l3186090 0:28)

Tools referenced

ToolCoverageMomentContext
n8ndemonstratedSelf-hosted install, activation, update, migration
DockerdemonstratedDocker Desktop + Docker Hub image; volumes; containers as sandboxes
ngrokexplainedTunnel localhost:5678 for external webhooks
HostingerexplainedManaged n8n ~$5/month; the middle path
OllamamentionedLocal LLM connection - deferred '4-hour class'
LM StudiomentionedAlternative local LLM runtime
SupabasementionedVia Supabase node or Postgres node; TripTally backend
LovablementionedTripTally front end (Bolt evaluated first)
LoommentionedRequired demo video format

Action items

    Resources mentioned

    Resources
    • docSelf-hosting presentation (shared in session)
    • docBonus Q&A highlights

    Extraction notes

    This page was built from an auto-generated transcript, which garbles product and people's names. Those were corrected silently in everything above and logged here for transparency. The warnings flag claims that were true on the recording day but change fast.

    Transcript corrections applied

    The transcript saysThe trainer actually means
    any 10 / anytime / in a 10n8n
    Enigroch / engrossngrok
    SuperbaseSupabase
    HiteshRitesh
    Kuralia / TelmanTripTally team members - names unresolved

    True on recording day — verify before relying