docs: Rework architecture diagram based on review feedback

- Implemented changes suggested in review by missytake:
    - Removed relation between acmetool-redirector and certs.
    - Added internal nginx listening on port 8443.
    - Changed direction of arrows between certs and the services that
      use them.  This makes the arrow show the direction of
      information flow, rather than a "depends on" relation.
    - For filesystem paths, added a descriptive name to the node.
- Replaced most arrows with plain lines, to simply show that a
  relationship exists between the two nodes.  This also reduces visual
  clutter, since the graph is pretty dense with information already.
- Split nginx and certs into two nodes, to reduce entanglement in the
  graph.  These "linked" nodes are given a different shape and filled
  with a different colour, to highlight the fact that they are the
  same node.
- Revised text about the meaning of edges in the graph.
This commit is contained in:
cliffmccarthy
2025-08-18 12:09:03 -05:00
committed by missytake
parent c975aa3bd1
commit 2de8b155c2

View File

@@ -3,36 +3,48 @@ overview as of mid-August 2025:
```mermaid ```mermaid
graph LR; graph LR;
cmdeploy --> sshd; cmdeploy --- sshd;
cron --> expunge; letsencrypt --- |80|acmetool-redirector;
cron --> acmetool; acmetool-redirector --- |443|nginx-right(["`nginx
cron --> chatmail-metrics; (external)`"]);
chatmail-metrics --> /var/www/html; nginx-external --- |465|postfix;
acmetool --> certs; nginx-external(["`nginx
acmetool --> acmetool-redirector; (external)`"]) --- |8443|nginx-internal["`nginx
acmetool-redirector --> certs; (internal)`"];
nginx --> /var/www/html; nginx-internal --- website["`Website
nginx --> certs; /var/www/html`"];
nginx --> newemail.py; nginx-internal --- newemail.py;
nginx --> |465|postfix; nginx-internal --- autoconfig.xml;
nginx --> autoconfig.xml; certs-nginx[("`TLS certs
nginx --> |993|dovecot; /var/lib/acme`")] --> nginx-internal;
autoconfig.xml --> postfix; cron --- chatmail-metrics;
autoconfig.xml --> dovecot; cron --- acmetool;
postfix --> certs; cron --- expunge;
postfix --> /home/vmail/mail; chatmail-metrics --- website;
postfix --> |10080,10081|filtermail; acmetool --> certs[("`TLS certs
postfix --> echobot; /var/lib/acme`")];
postfix --> |doveauth.socket|doveauth; nginx-external --- |993|dovecot;
dovecot --> certs; autoconfig.xml --- postfix;
dovecot --> |doveauth.socket|doveauth; autoconfig.xml --- dovecot;
dovecot --> /home/vmail/mail; postfix --- echobot;
dovecot --> |metadata.socket|chatmail-metadata; postfix --- |10080,10081|filtermail;
doveauth --> /home/vmail/mail; postfix --- users["`User data
expunge --> /home/vmail/mail; home/vmail/mail`"];
chatmail-metadata --> iroh-relay; postfix --- |doveauth.socket|doveauth;
dovecot --- |doveauth.socket|doveauth;
dovecot --- users;
dovecot --- |metadata.socket|chatmail-metadata;
doveauth --- users;
expunge --- users;
chatmail-metadata --- iroh-relay;
certs-nginx --> postfix;
certs-nginx --> dovecot;
style certs fill:#ff6;
style certs-nginx fill:#ff6;
style nginx-external fill:#fc9;
style nginx-right fill:#fc9;
``` ```
(Arrows in this diagram do not have a specific formal meaning; they The edges in this graph should not be taken too literally; they
signify "depends on", or "uses", or "sends data to", or just "relates reflect some sort of communication path or dependency relationship
to".) between components of the chatmail server.