Self-hosted collaborative whiteboard for creating hand-drawn-style architecture diagrams, flowcharts, and visual documentation.
URL: https://excalidraw.k3s.internal.strommen.systems
Access: LAN / VPN only (internal DNS, no Authentik auth required)
| Format | Extension | Use Case |
|---|---|---|
| Excalidraw | .excalidraw |
Re-importable JSON — keeps full edit capability |
| PNG | .png |
Wiki pages, GitHub READMEs, Slack |
| SVG | .svg |
Scalable docs, print-quality |
Excalidraw stores diagrams in your browser's localStorage — there is no server-side persistence. To preserve work:
.excalidraw JSON file).excalidraw files to docs/diagrams/ in the relevant repoFor important diagrams:
.excalidraw JSONdocs/diagrams/For consistency across homelab documentation, use these colors matching our wiki Mermaid theme:
| Element | Color | Hex |
|---|---|---|
| Background | Dark navy | #232F3E |
| Primary accent | AWS orange | #FF9900 |
| Control plane | Green | #22c55e |
| Workers / apps | Blue | #3b82f6 |
| Warning / GPU | Orange | #f97316 |
| AI / ML | Purple | #8b5cf6 |
| Storage / NAS | Emerald | #10b981 |
| Monitoring | Red | #ef4444 |
#1e1e2e)Upload exported PNG/SVG as wiki assets, then reference:

Commit the exported image to the repo and reference:

| Tool | Best For |
|---|---|
| Excalidraw | Interactive whiteboarding, hand-drawn sketches, complex manual layouts, presentations |
| Mermaid | Inline code diagrams in wiki/README, auto-layout, version-controlled as text |
| ComfyUI | AI-generated images, blog headers, artistic visuals |
Rule of thumb: If the diagram should live in code and auto-render, use Mermaid. If you need manual layout control or the hand-drawn look, use Excalidraw.
| Field | Value |
|---|---|
| Namespace | excalidraw |
| Manifest | kubernetes/apps/excalidraw/excalidraw.yaml |
| Image | excalidraw/excalidraw:latest via Harbor dockerhub-cache |
| Port | 80 (nginx) |
| Resources | 50m-500m CPU, 64Mi-128Mi RAM |
| Strategy | Recreate (single replica) |
| TLS | cert-manager / letsencrypt-prod |
| NetworkPolicy | Ingress from Traefik + cluster dashboard only; egress DNS only |
| Pod Security | Baseline (nginx requires root for port 80) |
| Problem | Fix |
|---|---|
| Blank page | Clear browser cache, or try incognito |
| Lost diagram | Check browser localStorage — Excalidraw auto-saves there |
| Image pull error | Verify harbor-pull-secret exists in excalidraw namespace |
| 502 after deploy | Check Service selector includes app.kubernetes.io/component: web |