# omerrastgar/n8n-agent architecture

> Architecture diagram of the GitHub repository omerrastgar/n8n-agent, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/omerrastgar/n8n-agent
- Repository: https://github.com/omerrastgar/n8n-agent

## Overview

This repository deploys and maintains a self-hosted n8n automation stack: an operator configures a server, deploys the services behind HTTPS, and can separately export or restore n8n workflows. The README documents service roles, network access, and backup behavior; source excerpts were not available, so links between playbooks and templates are limited to documented responsibilities.

Main entry points: [`n8n-docker-compose.yml.j2`](https://github.com/omerrastgar/n8n-agent/blob/main/n8n-docker-compose.yml.j2) (n8n automation), [`playbook.yml`](https://github.com/omerrastgar/n8n-agent/blob/main/playbook.yml) (Deploy playbook), [`backup.yml`](https://github.com/omerrastgar/n8n-agent/blob/main/backup.yml) (Backup playbook), [`restore.yml`](https://github.com/omerrastgar/n8n-agent/blob/main/restore.yml) (Restore playbook)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_deployment["Deployment"]
  node_deploy["Bootstrap deploy<br/>[deploy.sh]"]
  node_deploy_playbook["Deploy playbook<br/>[playbook.yml]"]
end

subgraph group_runtime["Runtime stack"]
  node_proxy["HTTPS proxy<br/>[nginx-n8n.conf.j2]"]
  node_n8n["n8n automation"]
  node_postgres[("PostgreSQL")]
  node_whatsapp["WhatsApp API"]
  node_searxng["SearXNG search"]
end

subgraph group_workflow["Workflow lifecycle"]
  node_backup_script["Backup command<br/>[backup.sh]"]
  node_backup_playbook["Backup playbook<br/>[backup.yml]"]
  node_workflow_export["Workflow export<br/>[backup.yml]"]
  node_archive["Workflow archive"]
  node_restore_playbook["Restore playbook<br/>[restore.yml]"]
end

subgraph group_configuration["Configuration"]
  node_secrets["Secret generation"]
  node_vars["Variable template<br/>[vars.example.yml]"]
  node_inventory["Host inventory template<br/>[hosts.example.ini]"]
end

node_operator(("Operator"))

node_operator -->|"runs"| node_deploy
node_deploy -->|"runs"| node_deploy_playbook
node_deploy_playbook -->|"deploys"| node_n8n
node_deploy_playbook -->|"deploys"| node_postgres
node_deploy_playbook -->|"deploys"| node_whatsapp
node_deploy_playbook -->|"deploys"| node_searxng
node_deploy_playbook -->|"configures"| node_proxy
node_proxy -->|"proxies HTTPS"| node_n8n
node_n8n -->|"stores data"| node_postgres
node_n8n -->|"calls API"| node_whatsapp
node_n8n -->|"queries search"| node_searxng
node_operator -->|"runs"| node_backup_script
node_backup_script -->|"runs"| node_backup_playbook
node_backup_playbook -->|"exports workflows"| node_workflow_export
node_workflow_export -->|"reads workflows"| node_n8n
node_backup_playbook -->|"pulls archive"| node_archive
node_operator -->|"runs"| node_restore_playbook
node_archive -->|"provides input"| node_restore_playbook
node_restore_playbook -->|"imports workflows"| node_n8n
node_operator -->|"runs"| node_secrets
node_secrets -->|"fills values"| node_vars
node_operator -->|"configures"| node_vars
node_operator -->|"configures"| node_inventory

click node_deploy "https://github.com/omerrastgar/n8n-agent/blob/main/deploy.sh"
click node_deploy_playbook "https://github.com/omerrastgar/n8n-agent/blob/main/playbook.yml"
click node_proxy "https://github.com/omerrastgar/n8n-agent/blob/main/nginx-n8n.conf.j2"
click node_n8n "https://github.com/omerrastgar/n8n-agent/blob/main/n8n-docker-compose.yml.j2"
click node_postgres "https://github.com/omerrastgar/n8n-agent/blob/main/n8n-docker-compose.yml.j2"
click node_whatsapp "https://github.com/omerrastgar/n8n-agent/blob/main/whatsapp-docker-compose.yml.j2"
click node_searxng "https://github.com/omerrastgar/n8n-agent/blob/main/searxng-docker-compose.yml.j2"
click node_backup_script "https://github.com/omerrastgar/n8n-agent/blob/main/backup.sh"
click node_backup_playbook "https://github.com/omerrastgar/n8n-agent/blob/main/backup.yml"
click node_workflow_export "https://github.com/omerrastgar/n8n-agent/blob/main/backup.yml"
click node_archive "https://github.com/omerrastgar/n8n-agent/tree/main/backups"
click node_restore_playbook "https://github.com/omerrastgar/n8n-agent/blob/main/restore.yml"
click node_secrets "https://github.com/omerrastgar/n8n-agent/blob/main/generate-secrets.sh"
click node_vars "https://github.com/omerrastgar/n8n-agent/blob/main/vars.example.yml"
click node_inventory "https://github.com/omerrastgar/n8n-agent/blob/main/hosts.example.ini"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_deploy,node_deploy_playbook toneBlue
class node_proxy,node_n8n,node_postgres,node_whatsapp,node_searxng toneAmber
class node_backup_script,node_backup_playbook,node_workflow_export,node_archive,node_restore_playbook toneMint
class node_secrets,node_vars,node_inventory toneRose
class node_operator toneIndigo
```

## Components

### Deployment

- [Bootstrap deploy](https://github.com/omerrastgar/n8n-agent/blob/main/deploy.sh): `deploy.sh`
- [Deploy playbook](https://github.com/omerrastgar/n8n-agent/blob/main/playbook.yml): `playbook.yml`

### Runtime stack

- [HTTPS proxy](https://github.com/omerrastgar/n8n-agent/blob/main/nginx-n8n.conf.j2): `nginx-n8n.conf.j2`
- [n8n automation](https://github.com/omerrastgar/n8n-agent/blob/main/n8n-docker-compose.yml.j2): `n8n-docker-compose.yml.j2`
- [PostgreSQL](https://github.com/omerrastgar/n8n-agent/blob/main/n8n-docker-compose.yml.j2): `n8n-docker-compose.yml.j2`
- [WhatsApp API](https://github.com/omerrastgar/n8n-agent/blob/main/whatsapp-docker-compose.yml.j2): `whatsapp-docker-compose.yml.j2`
- [SearXNG search](https://github.com/omerrastgar/n8n-agent/blob/main/searxng-docker-compose.yml.j2): `searxng-docker-compose.yml.j2`

### Workflow lifecycle

- [Backup command](https://github.com/omerrastgar/n8n-agent/blob/main/backup.sh): `backup.sh`
- [Backup playbook](https://github.com/omerrastgar/n8n-agent/blob/main/backup.yml): `backup.yml`
- [Workflow export](https://github.com/omerrastgar/n8n-agent/blob/main/backup.yml): `backup.yml`
- [Workflow archive](https://github.com/omerrastgar/n8n-agent/tree/main/backups): `backups`
- [Restore playbook](https://github.com/omerrastgar/n8n-agent/blob/main/restore.yml): `restore.yml`

### Configuration

- [Secret generation](https://github.com/omerrastgar/n8n-agent/blob/main/generate-secrets.sh): `generate-secrets.sh`
- [Variable template](https://github.com/omerrastgar/n8n-agent/blob/main/vars.example.yml): `vars.example.yml`
- [Host inventory template](https://github.com/omerrastgar/n8n-agent/blob/main/hosts.example.ini): `hosts.example.ini`

### Other components

- **Operator**

## Connections

- Operator → Bootstrap deploy: runs
- Bootstrap deploy → Deploy playbook: runs
- Deploy playbook → n8n automation: deploys
- Deploy playbook → PostgreSQL: deploys
- Deploy playbook → WhatsApp API: deploys
- Deploy playbook → SearXNG search: deploys
- Deploy playbook → HTTPS proxy: configures
- HTTPS proxy → n8n automation: proxies HTTPS
- n8n automation → PostgreSQL: stores data
- n8n automation → WhatsApp API: calls API
- n8n automation → SearXNG search: queries search
- Operator → Backup command: runs
- Backup command → Backup playbook: runs
- Backup playbook → Workflow export: exports workflows
- Workflow export → n8n automation: reads workflows
- Backup playbook → Workflow archive: pulls archive
- Operator → Restore playbook: runs
- Workflow archive → Restore playbook: provides input
- Restore playbook → n8n automation: imports workflows
- Operator → Secret generation: runs
- Secret generation → Variable template: fills values
- Operator → Variable template: configures
- Operator → Host inventory template: configures
