home services graphviz

📅 2022-11-22T18:43:35.660Z
👁️ 100 katselukertaa
🔓 Julkinen


digraph Services {
  enduser [shape=plaintext, label="User (public internet)"]
  
  enduser -> nginx [label="Shared network w/ personal devices (IP address 1)", colorscheme="accent8", color=1];
  enduser -> searx [label="IP address 2", colorscheme="accent8", color=2];
  enduser -> Mailcow [label="IP address 3", colorscheme="accent8", color=3];
  enduser -> webhost_nginx [label="IP address 4", colorscheme="accent8", color=8];

  subgraph cluster_protokolla {
    label = "Protokolla";
    subgraph cluster_joulukuusi {
      label = "Joulukuusi (Proxmox host)\n 32 GB RAM - Ryzen 3700X (16 cores)";
      subgraph cluster_gc_seafile_server {
        label = "Docker/Seafile\n3 GB RAM - 3 vCPU\n20 GB SSD + 500 GB HDD";
        Seafile [shape=box3d, label="Seafile"];
      }
      subgraph cluster_gc_webhost_server {
        label = "Webhost (running aaPanel)\n 2 GB RAM - 2vCPU - 20 GB SSD";
        webhost_nginx [shape=box3d, label="nginx"];
        webhost_mysql [shape=box3d, label="MySQL"];
        webhost_pureftpd [shape=box3d, label="PureFTPd"];
      }
      subgraph cluster_gc_piracy_server {
        label = "Docker/Piraattipaatti (migrating to seedbox)\n4 GB RAM - 4 vCPU\n20 GB SSD + 2TB HDD";
        rankdir=RL;
        pirate [label="{Radarr|Sonarr|Bazarr|Prowlarr}|{Jellyfin|Kiwix|navidrome}|{podgrab|qbittorrent}", shape=record];
      }
      subgraph cluster_gc_imap_server {
        label = "Docker/Imap.fi server\n2 GB RAM - 2 vCPU - 40 GB SSD";
        Mailcow [shape=box3d, label="Mailcow"];
      }
      subgraph cluster_gc_imap_web {
        label = "Docker/Imap.fi web\n1 GB RAM - 1 vCPU - 15 GB SSD";
        Rainloop [shape=box3d, label="Rainloop"];
        imapAPI [shape=box3d, label="API"];
      }
      subgraph cluster_gc_searx {
        label = "Docker/Searx.fi\n1 GB RAM - 2 vCPU - 15 GB SSD";
        searx [shape=box3d, label="Searx"];
      }
      subgraph cluster_gc_rahtilaiva {
        label = "Docker/Rahtilaiva\n4 GB RAM - 3 vCPU - 40 GB SSD";
        Authentik [shape=box3d, label="Authentik"];
        Vaultwarden [shape=box3d, label="Vaultwarden"];
        HSUnpaywall [shape=box3d, label="HS-Unpaywall"];
        Gitea [shape=box3d, label="Gitea"];
        Linkding [shape=box3d, label="Linkding"];
        Vikunja [shape=box3d, label="Vikunja"];
        pastebin [shape=box3d, label="Pastebin"];
        
        edge [colorscheme="blues9", color=9];
        Authentik -> Gitea [dir=both]
        Authentik -> Vikunja [dir=both]
        Authentik -> Seafile [dir=both]
      }
      subgraph cluster_gc_tor {
        label = "tor-relay-1\n100/100Mbps connection - 2 GB RAM - 2 vCPU";
        Tor [shape=box3d, label="Tor"];
        RelayWebsite [shape=box3d, label="Relay website"];
      }
      subgraph cluster_gc_nginx {
        label = "reverse proxy\n1 GB RAM - 2 vCPU";
        nginx [shape=box3d, label="nginx", colorscheme="oranges9", color=9];
        adguard [shape=box3d, label="adguard"];
      }
      
      edge [colorscheme="oranges9", color=9];
      
      nginx -> Authentik 
      nginx -> Gitea
      nginx -> Vaultwarden
      nginx -> Vikunja
      nginx -> Linkding
      nginx -> pastebin
      nginx -> imapAPI
      nginx -> Rainloop
      nginx -> RelayWebsite
      nginx -> Seafile
    }
  }
  
  edge [colorscheme="greens9", color=9];
  Mailcow -> varastolaatikko
  Vaultwarden -> protokollabackupss3
  
  subgraph cluster_backups {
    label = "Backups";
    subgraph cluster_backups_scaleway {
      label = "Scaleway";
      protokollabackupss3 [shape=cylinder, label="protokolla-backups s3"];
    }
    subgraph cluster_backups_hetzner {
      label = "Hetzner";
      varastolaatikko [shape=cylinder, label="Varastolaatikko (storage box 1TB)"];
    }
  }
  
  subgraph cluster_realys {
    label = "Mail relays";
    subgraph cluster_relays_telia {
      label = "Telia";
      imapteliarelay [shape=cds, label="Telia relay"];
    }
  }
  
  edge [colorscheme="accent5", color=5];
  Mailcow -> imapteliarelay
}