Homelab / Security Automation

Jira + n8n + AD/ADFS (OVH) z Cloudflare + Twingate

Lab środowisko do automatyzacji procesów IT (playbooki/runbooki, integracje Jira↔n8n, SSO), z ekspozycją UI przez Cloudflare i prywatnym ruchem API po Twingate.

OVH VPS Windows Server (AD DS/DNS/ADFS) Jira (Linux) n8n (Raspberry Pi) Cloudflare Tunnel / WAF / TLS Twingate (private overlay)
API Private
Twingate
n8n.internal / jira.internal
Cel
Runbook Portal + Automations
playbooki, audyt, sync, webhooki

Architektura (high-level)

Publiczne UI jest za Cloudflare. Wewnętrzna komunikacja serwis-serwis (API/webhook) idzie przez Twingate, bez wystawiania endpointów API na świat.

[Internet]
   |
   |  (TLS/WAF)
   v
[Cloudflare]  ---- UI ---->  n8n-admin.mzkwcim.net
   |                           |
   |                           v
   |                        [RPi: n8n]
   |
   +---- UI ----> jira.mzkwcim.net  ---> [OVH Linux: Jira]
   |
   +---- UI ----> adfs.lab.mzkwcim.net -> [OVH Windows: AD/ADFS]

Private API plane (no public exposure):
[OVH Linux: Jira] --(Twingate)--> http://n8n.internal:5678/webhook/...
[RPi: n8n]        --(Twingate)--> http://jira.internal:8080/rest/api/...
          
Założenie: UI może być publiczne (z Access/politykami), ale endpointy API/webhook są dostępne tylko w overlay network (Twingate).

Komponenty

  • Raspberry Pi — n8n w Docker Compose + cloudflared (Tunnel) + Twingate Connectors
  • OVH Linux — Jira (port 8080), Twingate Client/Connector dla dostępu do jira.internal
  • OVH Windows — AD DS + DNS + ADFS, certyfikaty origin, domena lab
  • Cloudflare — Tunnel, WAF, TLS, Access (np. do paneli admin)
  • Twingate — zasoby typu n8n.internal:5678, jira.internal:8080 (ruch prywatny)
n8n internal
http://n8n.internal:5678
Jira internal
http://jira.internal:8080
n8n UI
protected (Cloudflare Access)
Jira UI
protected (Cloudflare Access)

Zabezpieczenia

Cloudflare Edge

TLS, WAF, rate limits, bot protection, firewall rules, HSTS.

Cloudflare Access

Dla paneli admin (np. n8n UI) — logowanie i polityki dostępu.

Twingate

Prywatny plane komunikacji API. Zasoby ograniczone do TCP portów (np. 5678/8080).

Dlaczego tak? Cloudflare jest świetne do ekspozycji UI na zewnątrz, ale wewnętrzne webhooki/API najlepiej puścić po prywatnym overlay — prościej, bez 302/Access challenges.

Flow: Jira → n8n → Jira

  1. Jira Automation odpala “Send web request” do http://n8n.internal:5678/webhook/...
  2. n8n Webhook waliduje X-Shared-Secret i parsuje payload
  3. n8n HTTP Request wykonuje akcję (np. komentarz/zmiana statusu) na http://jira.internal:8080/rest/api/...
  4. Audit: log + komentarz w issue jako dowód wykonania

Webhooki nie idą przez publiczny Internet i nie wymagają CF-Access tokenów.

Grafiki / screeny

Diagram
Diagram przepływów (Cloudflare + Twingate)
Twingate resources
Twingate Resources: n8n.internal, jira.internal
Cloudflare tunnel
Cloudflare Tunnel / Access policies
n8n flow
n8n workflow: webhook + akcja + komentarz

Repo / dalsze kroki