docs: add mermaid architecture diagrams to readme files

Co-Authored-By: szaimen <42591237+szaimen@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
This commit is contained in:
copilot-swe-agent[bot]
2026-04-24 16:45:11 +00:00
committed by Simon L.
parent da88c7d25b
commit 5cf4580a86
2 changed files with 119 additions and 0 deletions

View File

@@ -4,6 +4,61 @@ This directory features containers that are built for AIO which allows to add ad
## Disclaimers ## Disclaimers
All containers that are in this directory are community maintained so the responsibility is on the community to keep them updated and secure. There is no guarantee that this will be the case in the future. All containers that are in this directory are community maintained so the responsibility is on the community to keep them updated and secure. There is no guarantee that this will be the case in the future.
## Overview
```mermaid
flowchart TD
%% ── Styles ───────────────────────────────────────────────────────────────────
classDef community fill:#FDEBD0,stroke:#E67E22,color:#222
classDef group fill:#FEF9E7,stroke:#F39C12,color:#333
subgraph COMM_AI["🤖 AI & Language"]
LAI(["🧠 Local AI\nPrivate AI assistant"]):::community
LT(["✏️ LanguageTool\nSpell & grammar check"]):::community
LTRANS(["🌐 LibreTranslate\nTranslation engine"]):::community
FACE(["🙂 FaceRecognition\nPhoto AI processor"]):::community
end
subgraph COMM_BACKUP["💾 Backup & Storage"]
BV(["📦 Borgbackup Viewer\nBrowse backups"]):::community
CALB(["📅 CalCardBackup\nCalendar/Contacts backup"]):::community
MINIO(["🗃️ MinIO\nS3-compatible storage"]):::community
SMB(["📂 SMB Server\nWindows file sharing"]):::community
end
subgraph COMM_EXTRA["🌟 Extra Services"]
HA(["🏠 Home Assistant\nHome automation"]):::community
STLW(["📧 Stalwart\nMail server"]):::community
NOCO(["🗂️ NocoDB\nNo-code database"]):::community
JSER(["🎯 Jellyseerr\nMedia request manager"]):::community
NOTIF(["📣 Notifications\nExternal push notify"]):::community
end
subgraph COMM_MEDIA["🎬 Media"]
PLEX(["🎞️ Plex\nMedia Server"]):::community
JELLY(["🎬 Jellyfin\nMedia Server"]):::community
DLNA(["📡 DLNA\nMedia Streaming"]):::community
MEMTR(["📸 Memories\nVideo Transcoder"]):::community
MKV(["💿 MakeMKV\nBlu-ray / DVD rip"]):::community
end
subgraph COMM_MONITOR["📊 Monitoring & Infra"]
GLAN(["📈 Glances\nSystem monitoring"]):::community
EXP(["📊 Nextcloud Exporter\nPrometheus metrics"]):::community
SCRU(["💽 Scrutiny\nDisk health (S.M.A.R.T.)"]):::community
CMGMT(["🐳 Container Mgmt\nDocker web console"]):::community
end
subgraph COMM_SEC["🔒 Security & Network"]
F2B(["🚫 Fail2ban\nBrute-force protection"]):::community
PIH(["🕳️ Pi-hole\nAd & DNS blocker"]):::community
VW(["🔐 Vaultwarden\nPassword Manager"]):::community
LDAP(["👥 LLDAP\nLight LDAP / Users"]):::community
CADDY(["🌐 Caddy\nReverse Proxy + Geoblocking"]):::community
NPMPLUS(["🌐 NPMplus\nNginx Proxy Manager"]):::community
end
```
## How to use this? ## How to use this?
Starting with v11 of AIO, the management of Community Containers is done via the AIO interface (it is the last section in the AIO interface, so only visible if you scroll down). Starting with v11 of AIO, the management of Community Containers is done via the AIO interface (it is the last section in the AIO interface, so only visible if you scroll down).
⚠️⚠️⚠️ Please review the folder for documentation on each of the containers before adding them! Not reviewing the documentation for each of them first might break starting the AIO containers because e.g. fail2ban only works on Linux and not on Docker Desktop! **Hint:** If the containers where running already, in order to actually start the added container, you need to click on `Stop containers` and the `Update and start containers` in order to actually start it. ⚠️⚠️⚠️ Please review the folder for documentation on each of the containers before adding them! Not reviewing the documentation for each of them first might break starting the AIO containers because e.g. fail2ban only works on Linux and not on Docker Desktop! **Hint:** If the containers where running already, in order to actually start the added container, you need to click on `Stop containers` and the `Update and start containers` in order to actually start it.

View File

@@ -87,6 +87,70 @@ Included are:
|---|---| |---|---|
| ![image](https://github.com/user-attachments/assets/6ef5d7b5-86f2-402c-bc6c-b633af2ca7dd) | ![image](https://github.com/user-attachments/assets/939d0fdf-436f-433d-82d3-27548263a040) | | ![image](https://github.com/user-attachments/assets/6ef5d7b5-86f2-402c-bc6c-b633af2ca7dd) | ![image](https://github.com/user-attachments/assets/939d0fdf-436f-433d-82d3-27548263a040) |
## Architecture overview
```mermaid
flowchart TB
%% ── Styles ───────────────────────────────────────────────────────────────────
classDef user fill:#FFF3CD,stroke:#F0AD4E,color:#333
classDef master fill:#E8D5F5,stroke:#9B59B6,color:#222
classDef core fill:#D6EAF8,stroke:#2E86C1,color:#222
classDef opt fill:#D5F5E3,stroke:#27AE60,color:#222
classDef community fill:#FDEBD0,stroke:#E67E22,color:#222
classDef access fill:#EAFAF1,stroke:#1E8449,color:#222
%% ── Top row: people ─────────────────────────────────────────────────────────
YOU(["🧑‍💻 Admin\n(You)"]):::user
ENDUSER(["🧑‍🤝‍🧑 Users\n(family / team)"]):::user
%% ── Everything that runs inside AIO ─────────────────────────────────────────
subgraph AIO[" 🐳 Nextcloud AIO "]
MC(["🧠 Mastercontainer\n─────────────────────────\n▸ AIO interface :8080 / :8443\n▸ Manages & updates containers\n▸ Handles backups"]):::master
subgraph CORE[" 📦 Core Stack (auto-started) "]
PROXY(["🔀 Apache\nProxy & HTTPS"]):::core
NC(["☁️ Nextcloud\nApp Server"]):::core
DB(["🗄️ PostgreSQL\nDatabase"]):::core
CACHE(["⚡ Redis\nCache"]):::core
PUSH(["🔔 Notify Push\nReal-time sync"]):::core
end
subgraph OPT[" 🧩 Optional Built-in Containers (enable in AIO interface) "]
COLLA(["📄 Nextcloud Office"]):::opt
OO(["📄 OnlyOffice\nDocument Server"]):::opt
TALK(["🎙️ Talk\nVideo & Voice calls"]):::opt
TALKREC(["🎬 Talk Recording"]):::opt
FTS(["🔎 Full-text Search\n(Elasticsearch)"]):::opt
IMAG(["🖼️ Imaginary\nImage previews"]):::opt
CLAM(["🦠 ClamAV\nAntivirus"]):::opt
WB(["🖊️ Whiteboard"]):::opt
end
COMM(["🌍 Community Containers\n──────────────────────\n30+ optional add-ons\nSee community-containers/"]):::community
click COMM "https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers" "Browse community containers"
end
%% ── Result node (outside AIO) ────────────────────────────────────────────────
NC_URL(["🌐 https://your-domain.com\n✅ Nextcloud — ready to use!"]):::access
%% ── Flows ────────────────────────────────────────────────────────────────────
YOU -->|"① open :8080 or :8443 in browser"| MC
MC -->|"② auto-starts & wires up"| CORE
MC -. "③ enable in AIO interface" .-> OPT
MC -. "④ add via AIO interface" .-> COMM
PROXY --> NC
NC --- DB
NC --- CACHE
NC --- PUSH
OPT -->|"integrate with"| NC
COMM -.->|"integrate with"| NC
CORE -->|"⑤ stack is ready!"| NC_URL
ENDUSER -->|"⑥ browser / app"| NC_URL
YOU -->|"⑥ use normally"| NC_URL
```
## How to use this? ## How to use this?
The steps below are written for Linux. For platform-specific guidance see: The steps below are written for Linux. For platform-specific guidance see: