digraph G { node [style=filled, shape=box, fillcolor="#ffffcc", fontname="Sans"]; edge [fontname="Sans"]; browser [label="Browser", shape=Mdiamond]; rp [label="Reverse Proxy", href="url to configure reverse proxy"]; filtron [label="Filtron", href="https://github.com/asciimoo/filtron"]; morty [label="Morty", href="https://github.com/asciimoo/morty"]; static [label="Static files", href="url to configure static files"]; uwsgi [label="uwsgi", href="url to configure uwsgi"] searx1 [label="Searx #1"]; searx2 [label="Searx #2"]; searx3 [label="Searx #3"]; searx4 [label="Searx #4"]; browser -> rp [label="HTTPS"] subgraph cluster_searx { label = "Searx instance" fontname="Sans"; bgcolor="#fafafa"; { rank=same; static rp }; rp -> morty [label="optional: images and HTML pages proxy"]; rp -> static [label="optional: reverse proxy serves directly static files"]; rp -> filtron [label="HTTP"]; filtron -> uwsgi [label="HTTP"]; uwsgi -> searx1; uwsgi -> searx2; uwsgi -> searx3; uwsgi -> searx4; } }