Docker Compose Stack für toppyr.de - Keycloak, OpenProject, XWiki, Gitea und mehr
Go to file
Dotty Dotter a4ad5f2de7 fix: Kamailio t_relay_to_tcp — Force TCP relay
Kamailio läuft TCP-only, t_relay versuchte per UDP zu routen.
t_relay_to_tcp erzwingt TCP für alle Relays.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 21:55:41 +02:00
kamailio fix: Kamailio t_relay_to_tcp — Force TCP relay 2026-04-16 21:55:41 +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