Dit document beschrijft de technische architectuur van het PMA platform en hoe de verschillende componenten samenwerken.
graph TB
subgraph "Externe Toegang"
U["Gebruikers"]
T["Tunnel Gateway"]
end
subgraph "Security Layer"
AUTH["Authentik SSO"]
end
subgraph "Core Platform"
MCP["MCP Gateway"]
JUST["Just Task Runner"]
PKG["Package Manager"]
end
subgraph "Service Layer"
S1["Project Management"]
S2["Development Tools"]
S3["Business Apps"]
S4["Monitoring"]
end
subgraph "Data Layer"
DB["Databases"]
VOL["Docker Volumes"]
BKP["Backups"]
end
U --> T
T --> AUTH
AUTH --> S1
AUTH --> S2
AUTH --> S3
AUTH --> S4
MCP --> JUST
JUST --> PKG
PKG --> S1
PKG --> S2
PKG --> S3
PKG --> S4
S1 --> DB
S2 --> DB
S3 --> DB
S4 --> DB
DB --> VOL
VOL --> BKP
style U fill:#2563eb,color:#fff
style T fill:#7b2cbf,color:#fff
style AUTH fill:#059669,color:#fff
style MCP fill:#1a5f7a,color:#fff
style JUST fill:#1a5f7a,color:#fff
style PKG fill:#1a5f7a,color:#fff
style S1 fill:#2563eb,color:#fff
style S2 fill:#2563eb,color:#fff
style S3 fill:#2563eb,color:#fff
style S4 fill:#2563eb,color:#fff
style DB fill:#d97706,color:#fff
style VOL fill:#d97706,color:#fff
style BKP fill:#059669,color:#fff
Docker vormt de basis van alle PMA services. Elke service draait in een geïsoleerde container met gedefinieerde resources en netwerkconfiguratie.
| Component |
Functie |
Technologie |
| Containers |
Service isolatie |
Docker Engine |
| Networks |
Service communicatie |
Docker Networks |
| Volumes |
Data persistentie |
Docker Volumes |
| Compose |
Orchestratie |
Docker Compose |
graph LR
subgraph "Docker Architectuur"
DC["docker-compose.yml"]
NET["asd-network"]
VOL["Volumes"]
end
subgraph "Services"
C1["Container 1"]
C2["Container 2"]
C3["Container 3"]
end
DC --> C1
DC --> C2
DC --> C3
C1 <--> NET
C2 <--> NET
C3 <--> NET
C1 --> VOL
C2 --> VOL
C3 --> VOL
style DC fill:#1a5f7a,color:#fff
style NET fill:#7b2cbf,color:#fff
style VOL fill:#d97706,color:#fff
style C1 fill:#2563eb,color:#fff
style C2 fill:#2563eb,color:#fff
style C3 fill:#2563eb,color:#fff
Just is de centrale command interface voor alle PMA operaties. Het biedt een consistente API voor service management.
| Categorie |
Commands |
Voorbeeld |
| Lifecycle |
start, stop, restart |
just start redmine |
| Status |
status, health, logs |
just health |
| Management |
backup, restore |
just backup redmine |
| Utilities |
generate, env |
just generate password |
Het package systeem beheert service configuraties via manifests (SSOT).
# packages/redmine/manifest.yaml
name: redmine
version: "5.1"
container: asd-redmine
port: 9114
dependencies:
- postgres
sso:
type: rails
redirect_path: /oauth2callback
graph TB
subgraph "Layer 1: Access"
L1A["Tunnel URLs"]
L1B["Direct Access"]
end
subgraph "Layer 2: Security"
L2A["Authentik SSO"]
L2B["OAuth/OIDC"]
end
subgraph "Layer 3: Management"
L3A["MCP Gateway"]
L3B["Just Commands"]
L3C["Package System"]
end
subgraph "Layer 4: Services"
L4A["59+ Services"]
end
subgraph "Layer 5: Integration"
L5A["n8n Workflows"]
L5B["API Integrations"]
end
subgraph "Layer 6: Data"
L6A["PostgreSQL"]
L6B["MariaDB"]
L6C["Redis"]
end
L1A --> L2A
L1B --> L2A
L2A --> L4A
L2B --> L4A
L3A --> L3B
L3B --> L3C
L3C --> L4A
L4A --> L5A
L4A --> L5B
L5A --> L6A
L5B --> L6B
L4A --> L6C
style L1A fill:#7b2cbf,color:#fff
style L1B fill:#7b2cbf,color:#fff
style L2A fill:#059669,color:#fff
style L2B fill:#059669,color:#fff
style L3A fill:#1a5f7a,color:#fff
style L3B fill:#1a5f7a,color:#fff
style L3C fill:#1a5f7a,color:#fff
style L4A fill:#2563eb,color:#fff
style L5A fill:#7b2cbf,color:#fff
style L5B fill:#7b2cbf,color:#fff
style L6A fill:#d97706,color:#fff
style L6B fill:#d97706,color:#fff
style L6C fill:#d97706,color:#fff
| Layer |
Functie |
Componenten |
| Access |
Externe toegang |
Tunnels, Direct ports |
| Security |
Authenticatie |
Authentik, OAuth, OIDC |
| Management |
Beheer |
MCP, Just, Packages |
| Services |
Applicaties |
59+ services |
| Integration |
Automatisering |
n8n, APIs |
| Data |
Opslag |
PostgreSQL, MariaDB, Redis |
sequenceDiagram
participant U as Gebruiker
participant T as Tunnel
participant A as Authentik
participant S as Service
U->>T: HTTPS Request
T->>A: Redirect naar login
A->>U: Login pagina
U->>A: Credentials
A->>A: Validatie
A->>S: OAuth Token
S->>U: Toegang verleend
sequenceDiagram
participant O as Operator
participant J as Just
participant M as Manifest
participant D as Docker
participant S as Service
O->>J: just start redmine
J->>M: Lees manifest.yaml
M->>J: Configuratie
J->>D: docker compose up
D->>S: Start container
S->>D: Running
D->>J: Success
J->>O: Service started
sequenceDiagram
participant O as Operator
participant J as Just
participant DB as Database
participant V as Volume
participant B as Backup Storage
O->>J: just backup redmine
J->>DB: pg_dump
DB->>J: SQL dump
J->>V: Volume snapshot
V->>J: Snapshot
J->>B: Store backup
B->>J: Confirmed
J->>O: Backup complete
graph TB
subgraph "External Network"
INT["Internet"]
end
subgraph "DMZ"
TUN["Tunnel Gateway"]
end
subgraph "asd-network (Docker)"]
AUTH["Authentik :9101"]
RED["Redmine :9114"]
N8N["n8n :5678"]
WIKI["Wiki.js :9119"]
GRAF["Grafana :3000"]
end
subgraph "Database Network"
PG["PostgreSQL"]
MY["MariaDB"]
RD["Redis"]
end
INT --> TUN
TUN --> AUTH
AUTH --> RED
AUTH --> N8N
AUTH --> WIKI
AUTH --> GRAF
RED --> PG
N8N --> PG
WIKI --> PG
GRAF --> PG
RED --> RD
style INT fill:#2563eb,color:#fff
style TUN fill:#7b2cbf,color:#fff
style AUTH fill:#059669,color:#fff
style RED fill:#2563eb,color:#fff
style N8N fill:#2563eb,color:#fff
style WIKI fill:#2563eb,color:#fff
style GRAF fill:#2563eb,color:#fff
style PG fill:#d97706,color:#fff
style MY fill:#d97706,color:#fff
style RD fill:#d97706,color:#fff
| Service |
Interne Poort |
Externe Toegang |
| Authentik |
9101 |
Via tunnel |
| Redmine |
9114 |
Via tunnel + SSO |
| n8n |
5678 |
Via tunnel + SSO |
| Wiki.js |
9119 |
Via tunnel + SSO |
| Grafana |
3000 |
Via tunnel + SSO |
| PostgreSQL |
5432 |
Alleen intern |
graph LR
subgraph "Load Balancer"
LB["Nginx/Traefik"]
end
subgraph "Service Instances"
S1["Instance 1"]
S2["Instance 2"]
S3["Instance N"]
end
subgraph "Shared Data"
DB["Database"]
CACHE["Redis Cache"]
end
LB --> S1
LB --> S2
LB --> S3
S1 --> DB
S2 --> DB
S3 --> DB
S1 --> CACHE
S2 --> CACHE
S3 --> CACHE
style LB fill:#7b2cbf,color:#fff
style S1 fill:#2563eb,color:#fff
style S2 fill:#2563eb,color:#fff
style S3 fill:#2563eb,color:#fff
style DB fill:#d97706,color:#fff
style CACHE fill:#059669,color:#fff
Navigatie:
Gerelateerd: