Files
firefrost-operations-manual/docs/tasks/gitea-plane-integration
Claude 7efcc4b984 docs: document working Gitea→Plane n8n workflow v3
Pipeline is LIVE. Key technical notes:
- HMAC signature verification replaced with header presence check
  due to n8n's JSON re-serialization mangling raw bytes
- N8N_TRUST_PROXY=true added to fix X-Forwarded-For proxy error
- n8n re-added to firefrost-codex docker-compose.yml (was orphaned)
- Webhook URL: panel.firefrostgaming.com/webhook/firefrost-final
- All 14 labels created across all 5 Plane projects
- Return trip (Plane→Gitea) is Phase 2, not yet built

Deployed by: Chronicler #32
2026-03-17 00:08:45 +00:00
..

Task #48 — Gitea/Plane Integration via n8n

Status: READY — pending n8n rebuild (Task #34) Priority: Tier 2 — Major Infrastructure Time: 2-3 hours Created: March 15, 2026 Created By: Chronicler #31 Owner: Michael "Frostystyle" Krause Depends: Task #34 (n8n rebuild from scratch)


The Goal

Hands-off, automated two-way sync between Gitea (source of truth for docs/code) and Plane (task tracking for Meg, Holly, and all staff). Neither Meg nor Holly should need to manually cross-reference between systems.


Why n8n (Not Native Integration)

Plane has no native Gitea integration. GitHub/GitLab integrations exist but are likely Pro features and don't apply to our self-hosted Gitea.

n8n is already in the Firefrost stack on TX1. It's purpose-built for exactly this kind of cross-platform automation. Once n8n is rebuilt (Task #34), this integration is straightforward.


Workflow Design

Gitea → Plane (commit updates task)

  1. Developer pushes commit with Plane issue ID in message (e.g. INFRA-42)
  2. Gitea fires webhook to n8n
  3. n8n parses commit message for issue ID
  4. n8n calls Plane API to:
    • Add comment: "Commit: [message] by [author]"
    • Optionally update issue status (e.g. "In Progress" → "Done" on keyword)

Trigger keywords in commit messages:

  • closes INFRA-42 → mark issue Done
  • refs INFRA-42 → add comment only
  • fixes INFRA-42 → mark issue Done

Plane → Gitea (task creation creates issue)

  1. New Plane issue created in Infrastructure project
  2. Plane fires webhook to n8n
  3. n8n creates matching Gitea issue in ops manual repo
  4. Links back to Plane issue URL in Gitea issue body

Technical Requirements

Plane API

Gitea Webhook

  • Token: 3c40388246ae816fe21cdca26fce4e1c66989dd1 (in Vaultwarden)
  • Webhook URL: http://[n8n-url]/webhook/gitea-plane
  • Events: Push, Issues

Gitea Allowed Webhooks

Gitea restricts webhook destinations. Need to add n8n URL to allowed list in Gitea's app.ini:

[webhook]
ALLOWED_HOST_LIST = n8n.firefrostgaming.com

n8n Workflows to Build

  1. Gitea Push → Plane — parse commit, update issue
  2. Plane Issue → Gitea — create tracking issue

Implementation Order

  1. Complete Task #34 (n8n rebuild) first
  2. Generate Plane API token
  3. Update Gitea app.ini with n8n in allowed webhook hosts
  4. Build n8n workflow: Gitea Push → Plane issue update
  5. Build n8n workflow: Plane issue → Gitea issue
  6. Test with a real commit referencing a Plane issue
  7. Document commit message convention for team

Commit Message Convention (for team)

Once live, all commits should reference Plane issue IDs:

feat: add LuckPerms builder rank

Implements Builder rank with WorldEdit permissions.
closes BUILDS-12
refs INFRA-7

Michael to document this in a team guide once integration is live.


  • Task #34 — n8n Rebuild (prerequisite)
  • Task #47 — Plane Deployment (complete)
  • Task #11 — Mailcow (complete)

Fire + Frost + Foundation = Where Love Builds Legacy 💙🔥❄️