Tutorial / Build log / Receipts

This is not a chatbot.

Most people use an AI chat app like a smart search box. They ask a question. They get text back. Then they do all the real work themselves.

Muse is a different shape of tool. It is a full sandbox: a cloud computer with its own terminal, browser, files, memory, and scheduled jobs. On the night of 18 to 19 October 2026, I used that computer, from my phone, to do a full infrastructure job:

This page is the short version. The full tutorial, with every step and every failure, is in the pack at the bottom of the page.

System architecture diagram
The final setup: phone, cloud machine, home PC bridge, Cloudflare, Google.

What was built, and why

The hub is n8n, open source workflow automation: a control panel where services connect into workflows that run on their own. I self-host it on the same cloud machine my agent works on. The machine exists already. Self-hosting costs nothing. The credential store stays on my own disk. And I can watch every step from my phone.

At the start of the night the machine ran n8n 2.43.5, a local install with a SQLite database and 8 starter workflows. It had one big limit: no public address. Nothing outside could reach it. Fixing that, safely, is the heart of this build.

Phase 1: Google in one sign-in

One Google Cloud project (jesun-n8n, no billing account). Five APIs on: Gmail, Calendar, Drive, Sheets, YouTube Data API v3. One OAuth consent, with the consent screen set to "In production" so the tokens do not die after 7 days. One sign-in connected all five services. Five typed credential copies came from the one base credential, one per service node type, so the store holds 6 Google credentials.

Then the tests, because a stored credential is not a connection. All five services passed live API tests with real data: real inbox subjects, real events, real files, real spreadsheet rows, and my real YouTube channel, at 69 subscribers at the time of the test. Three services passed a second test inside n8n workflows. One honest gap: YouTube channel read is verified; upload is not tested yet.

The door problem, and the three walls

A loopback-only server cannot take visitors, webhooks, or public OAuth callbacks. The standard door is a Cloudflare Tunnel. The connector was meant to run on the cloud machine. Three routes failed, each verified, none assumed:

  1. Quick Tunnel: provisioning refused, HTTP 403.
  2. QUIC: the machine blocks UDP egress; the tunnel died with "operation not permitted".
  3. HTTP2: the machine's DNS is intercepted, so the edge certificate name did not match what the client expected, and the secure connection never formed.

Lesson: when someone else runs the network, some roads are closed. Do not push on a closed road. Move the part that needs the open road.

The bridge (the move that worked)

The connector does not care where it runs. It needs Cloudflare's edge and the n8n server. My home PC has normal internet, so the connector moved there:

Path of one visit: visitor, Cloudflare edge, tunnel, home PC, private forward, cloud machine, n8n. No inbound port open anywhere.

Build timeline chart
One night: order, Google phase, three walls, the bridge, the domain move, the wall, the owner account, and six restarts in between.

The domain move and the wall

The domain moved to Cloudflare DNS on the Free plan without breaking anything: zone created first, the automatic scan checked against the live records (11 records: the GitHub Pages site, 5 email-forwarding MX records, the SPF record), the tunnel route added, and only then the nameservers changed at the registrar. After the switch: site up, mail records answering, zone active.

In front of the editor sits Cloudflare Zero Trust Access (Free plan). One application, "n8n Editor". One policy, "Jesun only". One email on the allow list. Anyone else stops at the Access sign-in and never reaches n8n. I set the owner account myself through that public editor, with my own password.

Phase matrix chart
What is connected, what is started, what is next. Phase 2 (Meta) has started; it is not connected yet.

What broke (the short honesty section)

The cloud machine restarted 6 times that night. Every restart killed n8n and the bridge loop. A self-built reset guardian, which checks the machine boot ID every 60 seconds, caught each restart in 47 to 78 seconds, and the work came back from checkpoints each time. Work lost across all 6 restarts: zero.

The public address once showed error 1033, because the connector had been started inside an SSH session and died with it. The fix: run it detached, and let a logon scheduled task bring it back after a PC reboot.

Still weak, stated plain: if the home PC sleeps or is off, the public address sleeps with it. This is a personal automation stack, not hosting for other people.

The full pack

Get it two ways:

Download the tutorial pack Open the repo

Or by DM: comment TUNNEL on the launch posts (Facebook, Instagram, TikTok, YouTube) and the pack arrives by DM.

What comes next

Phase 2 has started: a Meta developer app in my name ("Jesun n8n Automation"), with Instagram and Facebook Login for Business added and the n8n OAuth redirect registered. Wiring and live tests are pending, and the build will be documented the same way: receipts first, claims after tests.