AFFiNE — Shared Workspace

AFFiNE ist ein Open-Source-Workspace (Notion + Miro + Slides Alternative), selbst-gehostet als geteilte Plattform für Menschen und AI-Agenten.

URL: https://a.freundeskreis.family/ Status: ✅ Live (HTTP 200, selfhosted mode)

Architektur

Browser → Nginx (Plesk :443) → localhost:3010 → AFFiNE Docker Stack
                                                  ├── affine_server (Node.js, Express)
                                                  ├── affine_postgres (PostgreSQL 16 + pgvector)
                                                  └── affine_redis (Redis)

Deployment

PfadInhalt
~/httpdocs/affine/compose.ymlDocker Compose (4 Container)
~/httpdocs/affine/.envPort, DB-Passwort, Base URL
~/httpdocs/affine/config/config.jsonServer-Name, AI-Provider
~/httpdocs/affine/config/private.keyEC P-256 Session-Signing Key
~/httpdocs/affine/storage/Blobs, Avatars, Copilot-Daten
~/httpdocs/affine/postgres/PostgreSQL-Datendateien

Kommandos

cd ~/httpdocs/affine
 
# Start / Stop / Upgrade
docker compose up -d
docker compose down
docker compose pull && docker compose up -d
 
# Logs
docker logs affine_server --tail 50 -f
 
# Backup
docker exec affine_postgres pg_dump -U affine affine > backup_$(date +%F).sql
tar czf affine_storage_$(date +%F).tar.gz storage/

Features — Vollständig

📄 Page Mode (Strukturierte Dokumente)

  • Rich Text: Headings, Bold, Italic, Code, Highlights, Callouts
  • Block-Typen: Text, Listen (Bullet/Numbered/Todo), Toggles, Dividers, Code (Syntax-Highlighting), Quotes
  • Embeds: Bilder, Bookmarks, verlinkte Seiten, YouTube, Figma, GitHub
  • Slash-Commands (/), Markdown-Shortcuts (#, -, [], `)
  • [[ Wiki-Links mit Backlinks
  • Inhaltsverzeichnis (auto-generiert)

🎨 Edgeless Mode (Infinite Canvas / Whiteboard)

Umschalten via Toggle-Button oben links.

WerkzeugFunktion
StiftFreihand-Zeichnung mit Druckempfindlichkeit
ShapesRechtecke, Kreise, Dreiecke, Diamanten, Abgerundete
ConnectorsPfeile und Linien mit Auto-Routing
Sticky NotesFarbige Schnellnotizen
FramesGruppen → Präsentations-Slides
TextboxenFreistehender Text überall

Canvas-Superkräfte: Infinite Zoom, Gruppieren, Layer-Reihenfolge, Snap/Align, Grid, eingebettete Dokumente, Copy as PNG.

📊 Database / Kanban

  • Table View — Spreadsheet mit typisierten Spalten (Text, Number, Checkbox, Select, Multi-Select, Date, URL)
  • Kanban View — Cards zwischen Status-Spalten ziehen
  • Filter, Sortierung, Group-By
  • Jede Blockgruppe → Database konvertierbar

🎬 Präsentationen

  • Frames in Edgeless = Slides
  • Frame-Sidebar zum Umordnen
  • Fullscreen-Präsentation direkt vom Canvas
  • Visibility Control (Page Mode vs. Edgeless)

🤖 AI Copilot

Konfigurierbar über config.json oder Admin Console. Aktuell nicht aktiviert auf unserer Instanz.

Fähigkeiten: Zusammenfassen, Übersetzen, Erklären, Umschreiben, Fortsetzen, Mind Maps generieren, Chat, Bildgenerierung.

Aktivierung: siehe Skills & Integrations

🔄 Collaboration & Sync

  • Echtzeit-Co-Editing (CRDT via Yjs) — mehrere gleichzeitig
  • User Accounts, Workspace-Sharing, Kommentare
  • Version History mit Restore
  • Local-First — funktioniert offline, sync wenn online

📦 Organisation

Workspaces, Folders/Collections, Tags, Favorites, Trash, Volltextsuche, Recently Viewed

📤 Import / Export

  • Import: Notion, Markdown, HTML
  • Export: Markdown, HTML, PDF (Page Mode), PNG (Canvas-Auswahl)
  • Rich Paste von Web, Word, Google Docs

AI-Agent-Integration

MethodeFähigkeiten
AFFiNE MCP Server85 Tools: Docs, DB, Canvas, Kommentare, Blobs
Browser-AutomationPuppeteer → AFFiNE UI
Docker CLIStart, Stop, Upgrade, Backup, Logs

Anwendungsfälle (Freundeskreis)

ZweckUmsetzung in AFFiNE
SitzungsnotizenPage Mode + Todo-Checklisten
Event-PlanungKanban: Idee → Geplant → In Arbeit → Erledigt
BrainstormingEdgeless Canvas + Sticky Notes → Frames
Vereins-TimelinePage oder Canvas-Timeline
Content-EntwürfePage Mode → AI Translate → Copy to TYPO3
PräsentationenEdgeless Frames → Mitgliederversammlung
Foto-BoardsBilder auf Canvas arrangieren
Projekt-TrackingDatabase (Table + Kanban)
WissensbasisVerlinkte Seiten mit [[Backlinks]]

Plesk-Konfiguration

Nginx Reverse Proxy (WebSocket-fähig):

location / {
    proxy_pass http://127.0.0.1:3010;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    client_max_body_size 100M;
}

See also