Docker Compose Stack für toppyr.de - Keycloak, OpenProject, XWiki, Gitea und mehr
Go to file
Dotty 6e6ff63f08 Add full stack configuration
- docker-compose.yml with all services
- .env.example with placeholder secrets
- Landing page HTML
- Gitea→OpenProject webhook script
- Comprehensive README with architecture docs
2026-03-28 19:04:45 +01:00
landing Add full stack configuration 2026-03-28 19:04:45 +01:00
webhooks Add full stack configuration 2026-03-28 19:04:45 +01:00
.env.example Add full stack configuration 2026-03-28 19:04:45 +01:00
.gitignore Add full stack configuration 2026-03-28 19:04:45 +01:00
docker-compose.yml Add full stack configuration 2026-03-28 19:04:45 +01:00
README.md Add full stack configuration 2026-03-28 19:04:45 +01:00

Toppyr Stack

Docker Compose Stack für toppyr.de — Self-Hosted Collaboration Suite.

🏗️ Architektur

┌─────────────────────────────────────────────────────────┐
│                 Traefik (Reverse Proxy)                 │
│              Let's Encrypt SSL Termination              │
└─────────────────────────────────────────────────────────┘
                            │
┌───────────────────────────┼───────────────────────────┐
│                    Keycloak SSO                       │
│                   sso.toppyr.de                       │
└───────────────────────────┼───────────────────────────┘
                            │
    ┌───────────────────────┼───────────────────────────┐
    │           │           │           │               │
┌───▼───┐  ┌────▼────┐ ┌────▼────┐ ┌────▼────┐  ┌───────▼───────┐
│ Gitea │  │OpenProj.│ │  XWiki  │ │ Postiz  │  │  Monitoring   │
│ repo. │  │ project.│ │  wiki.  │ │ postiz. │  │ status./netd. │
└───────┘  └─────────┘ └─────────┘ └─────────┘  └───────────────┘

📦 Services

Service URL Beschreibung
Keycloak sso.toppyr.de Single Sign-On, Identity Provider
OpenProject project.toppyr.de Projektmanagement, Tasks
XWiki wiki.toppyr.de Dokumentation, Wiki
Gitea repo.toppyr.de Git Repositories, CI/CD
Postiz postiz.toppyr.de Social Media Scheduler
EspoCRM crm.toppyr.de CRM System
Mautic marketing.toppyr.de Marketing Automation
FreeScout support.toppyr.de Helpdesk, Ticketing
Nextcloud cloud.toppyr.de Dateiverwaltung
Uptime Kuma status.toppyr.de Monitoring, Alerts
Netdata netdata.toppyr.de System Metrics
lldap ldap.toppyr.de LDAP Directory

🚀 Deployment

Voraussetzungen

  • Docker & Docker Compose v2
  • Domain mit DNS-Einträgen auf Server-IP
  • Ports 80, 443, 2222 (SSH für Gitea) offen

Installation

# Repository klonen
git clone https://repo.toppyr.de/tobias/toppyr-stack.git
cd toppyr-stack

# Environment konfigurieren
cp .env.example .env
# Passwörter generieren und eintragen
openssl rand -base64 32  # Für jedes Passwort-Feld

# Stack starten
docker compose up -d

DNS-Einträge

Alle Subdomains als A-Record auf die Server-IP:

@, www, sso, wiki, project, status, crm, marketing, support, 
postiz, ldap, netdata, gruen, cloud, repo → <SERVER_IP>

🔐 Authentifizierung

  • SSO via Keycloak für: OpenProject, XWiki, Postiz, Gitea, Netdata
  • LDAP via lldap für: OpenProject (read-only)
  • Standalone für: EspoCRM, Mautic, FreeScout, Uptime Kuma

📁 Verzeichnisstruktur

toppyr-stack/
├── docker-compose.yml      # Hauptkonfiguration
├── .env.example            # Umgebungsvariablen-Template
├── .env                    # Echte Secrets (nicht committed!)
├── landing/
│   └── index.html          # Landing Page toppyr.de
└── webhooks/
    └── gitea-openproject-webhook.py  # Git→OpenProject Integration

🔗 Integrationen

Gitea → OpenProject Webhook

Commits mit WP-123 im Message werden automatisch als Kommentar im Work Package gepostet.

# Beispiel Commit
git commit -m "WP-42: Feature implementiert"

XWiki Git Macro

Code aus Gitea-Repos direkt im Wiki einbetten:

{{git repository="https://repo.toppyr.de/tobias/toppyr-stack.git" 
    file="docker-compose.yml" 
    branch="main"}}

🧹 Wartung

# Logs anzeigen
docker compose logs -f <service>

# Service neustarten
docker compose restart <service>

# Updates
docker compose pull
docker compose up -d

# Backup Volumes
docker run --rm -v toppyr-stack_<volume>:/data -v $(pwd):/backup \
  alpine tar czf /backup/<volume>.tar.gz /data

📊 Ressourcen

Getestete RAM-Limits (gesamt ~8-10 GB):

Service RAM Limit
Keycloak 2 GB
OpenProject 4 GB
XWiki 4 GB
Gitea 512 MB
Postiz 4 GB
Elasticsearch (Temporal) 1 GB
Andere 64-512 MB

📝 Lizenz

Private Konfiguration für toppyr.de.


Erstellt: März 2026