# n8n Node Registry Corruption (v2.x) **Problem:** n8n UI accessible but core nodes (HTTP Request, Execute Command) fail with "Node not found" or "Registry Error" **Incident Date:** February 23-24, 2026 **Affected System:** TX1 Dallas n8n instance (firefrost-codex-n8n-1) **Status:** BYPASSED via PHP workaround, factory reset pending --- ## Symptoms - ✅ n8n web interface loads normally at https://n8n.firefrostgaming.com - ✅ Existing workflows visible in UI - ❌ Cannot execute workflows using core nodes - ❌ "Node not found" errors for `n8n-nodes-base` package nodes - ❌ HTTP Request node: Registry error - ❌ Execute Command node: Registry error **These are INTERNAL nodes that should always be available.** --- ## Root Cause **Corrupted Node Registry during v2.x migration** The internal node registry (`n8n-nodes-base` package) became desynchronized from the workflow engine. This typically happens when: 1. Partial update of n8n version with incompatible volume data 2. Docker volume corruption in `/home/node/.n8n` directory 3. Version mismatch between container image and persisted configuration **Key indicator:** Core nodes from `n8n-nodes-base` package are "invisible" to the execution engine despite being bundled with n8n. --- ## Failed Resolution Attempts ### Attempt 1: Container Recreation ```bash docker-compose down docker-compose pull n8n docker-compose up -d ``` **Result:** ❌ Failed - corruption persists in volume ### Attempt 2: Image Force Pull ```bash docker-compose down docker rmi n8nio/n8n:1.121.0 docker-compose up -d ``` **Result:** ❌ Failed - volume data still corrupted **Why these failed:** The corruption is in the VOLUME (`./volumes/n8n`), not the container image. --- ## Temporary Workaround: PHP Direct Sync **Created:** `sync_codex.php` on TX1 host OS (PHP 8.3 CLI) **Purpose:** Bypass n8n entirely for Codex Git → Dify sync **How it works:** ``` TX1 Host (PHP) → Git Pull → Process Files → Dify API (127.0.0.1:5001) ``` **Advantages:** - No dependency on n8n registry - Direct Docker bridge access to Dify API - Simpler debugging (single script vs workflow nodes) - Can run via cron for scheduled execution **Disadvantages:** - No Discord notifications (yet) - No visual workflow editor - Harder for non-technical users to modify **Status:** ✅ OPERATIONAL - Successfully synced 361 documents to Dify --- ## Permanent Fix: n8n Factory Reset **⚠️ THIS IS DESTRUCTIVE - BACKUP WORKFLOWS FIRST ⚠️** ### Prerequisites 1. **Export ALL workflows to JSON:** ```bash # Via n8n UI: # Settings → Workflows → Export All # Save to: /opt/firefrost-codex/backups/n8n-workflows-YYYY-MM-DD.json # Or via API: curl -X GET https://n8n.firefrostgaming.com/api/v1/workflows \ -H "X-N8N-API-KEY: your_api_key" > n8n-workflows-backup.json ``` 2. **Backup credentials (if any):** ```bash # Settings → Credentials → Export # Save separately - these are sensitive ``` 3. **Document current configuration:** - Webhook URLs - Environment variables - Executions settings - Timezone settings ### Reset Procedure **Step 1: Stop n8n** ```bash cd /opt/firefrost-codex docker-compose stop n8n ``` **Step 2: Backup existing volume (safety net)** ```bash sudo cp -r ./volumes/n8n ./volumes/n8n.backup.$(date +%Y%m%d) ``` **Step 3: Wipe corrupted volume** ```bash sudo rm -rf ./volumes/n8n/* ``` **Step 4: Recreate container** ```bash docker-compose up -d n8n ``` **Step 5: Wait for initialization (~2 minutes)** ```bash # Watch logs docker-compose logs -f n8n # Look for: "Editor is now accessible via: https://n8n.firefrostgaming.com" ``` **Step 6: Initial setup** - Visit https://n8n.firefrostgaming.com - Create owner account (use same credentials as before) - Configure timezone and settings **Step 7: Import workflows** - Settings → Workflows → Import from File - Select backup JSON - Verify all nodes load correctly **Step 8: Test core nodes** - Create new workflow - Add HTTP Request node → Should work - Add Execute Command node → Should work - Test execution → Should succeed **Step 9: Restore credentials** - Settings → Credentials → Import - Re-enter any API keys/secrets **Step 10: Verify automation** - Test Git sync workflow manually - Verify Discord notifications - Check scheduled executions --- ## Prevention **To avoid this in the future:** 1. **Pin n8n version in docker-compose.yml:** ```yaml n8n: image: n8nio/n8n:1.121.0 # Specific version, not :latest ``` 2. **Backup workflows regularly:** ```bash # Add to cron: Weekly workflow export 0 2 * * 0 curl https://n8n.firefrostgaming.com/api/v1/workflows > /backups/n8n-workflows-$(date +%Y%m%d).json ``` 3. **Test updates on staging first:** - Don't upgrade n8n in production without testing - Check release notes for breaking changes 4. **Monitor n8n health:** - Add n8n health check to Uptime Kuma - Alert if workflow executions fail --- ## Current Status (February 24, 2026) **n8n Service:** - ⚠️ DEGRADED - UI accessible, core nodes broken - 📋 FACTORY RESET PENDING - Scheduled for next maintenance window **Codex Git Sync:** - ✅ OPERATIONAL - Using PHP workaround (`sync_codex.php`) - ✅ 361 documents syncing successfully - ⏱️ Manual execution (cron scheduling pending) **Next Steps:** 1. Add n8n factory reset to tasks.md 2. Schedule maintenance window for reset 3. Consider migrating to PHP permanently if simpler --- ## Related Documentation - **Phase 5 Deployment:** `docs/tasks/firefrost-codex/` - **PHP Workaround:** (To be documented if kept long-term) - **n8n Workflows:** Backup stored at `/opt/firefrost-codex/backups/` (when created) --- **Incident Timeline:** - **Feb 23, 9:00 PM:** n8n workflow failure discovered during Phase 5 deployment - **Feb 23, 9:30 PM:** Diagnosis: Node registry corruption - **Feb 23, 10:00 PM:** Pivot to PHP workaround (Gemini + Michael collaboration) - **Feb 24, 12:00 AM:** PHP script operational, 361 documents synced - **Feb 24, 9:00 AM:** Dify-Qdrant issue resolved (separate incident) - **Feb 24, 9:30 AM:** Decision to defer n8n reset until next session --- **Created:** February 24, 2026 **Created By:** Chronicler #26 (from Gemini's post-mortem) **Resolution Status:** DEFERRED - Workaround operational **Factory Reset:** Scheduled TBD 💙🔥❄️ **"Sometimes the best fix is the one that waits until you have the energy to do it right."**