Docker Compose Stack für toppyr.de - Keycloak, OpenProject, XWiki, Gitea und mehr
Go to file
Dotty Dotter 934c832fdf fix: Kamailio Auth — HA1-Flag und htable initval korrigiert
- pv_www/proxy_authenticate: Flag "1" statt "0" (HA1 statt Plaintext)
- htable: initval=0 entfernt (verhinderte Credential-Ladung)
- pv_auth_check durch pv_www/proxy_authenticate ersetzt (5.5.2 Kompatibilität)
- Module-Reihenfolge: usrloc vor nathelper
- nathelper: sipping_from Parameter hinzugefügt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 21:26:22 +02:00
kamailio fix: Kamailio Auth — HA1-Flag und htable initval korrigiert 2026-04-16 21:26:22 +02: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 feat: Kamailio SIP Proxy hinzugefügt (Dotty Phone) 2026-04-16 19:48:27 +02:00
docker-compose.yml feat: Kamailio SIP Proxy hinzugefügt (Dotty Phone) 2026-04-16 19:48:27 +02:00
README.md feat: Kamailio SIP Proxy hinzugefügt (Dotty Phone) 2026-04-16 19:48:27 +02: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. │
└───────┘  └─────────┘ └─────────┘ └─────────┘  └───────────────┘

    ┌─────────────────────────────────────────────────────────┐
    │          Kamailio SIP Proxy (TCP, TLS via Traefik)      │
    │                    sip.toppyr.de:5061                    │
    └─────────────────────────────────────────────────────────┘

📦 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
Kamailio sip.toppyr.de:5061 SIP Proxy (Dotty Phone)

🚀 Deployment

Voraussetzungen

  • Docker & Docker Compose v2
  • Domain mit DNS-Einträgen auf Server-IP
  • Ports 80, 443, 2222 (SSH für Gitea), 5061 (SIP TLS) 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, sip → <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!)
├── kamailio/
│   ├── kamailio.cfg            # SIP Proxy Config (TCP-only)
│   └── kamailio-local.cfg.example  # Credentials-Template
├── 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