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:5678Jira internal
http://jira.internal:8080n8n 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
- Jira Automation odpala “Send web request” do
http://n8n.internal:5678/webhook/... - n8n Webhook waliduje
X-Shared-Secreti parsuje payload - n8n HTTP Request wykonuje akcję (np. komentarz/zmiana statusu) na
http://jira.internal:8080/rest/api/... - Audit: log + komentarz w issue jako dowód wykonania
Webhooki nie idą przez publiczny Internet i nie wymagają CF-Access tokenów.
Grafiki / screeny
Repo / dalsze kroki
- Dodanie “Network map” i “Flow map” jako osobnych diagramów (PNG/SVG)
- Ustandaryzowanie webhooków: jeden endpoint
/webhook/jira+ router w n8n - Monitoring: NetBox + Zabbix (agent na hostach), alerty pod problemy tuneli i usług