Skip to content

utopia-os/matrix-server

Repository files navigation

Matrix Server - Docker Setup

Ein gehärteter Matrix Synapse Server mit Element Web Client für Community-Betrieb.

Komponenten

Service Beschreibung
Synapse Matrix Homeserver
PostgreSQL Datenbank
Redis Caching
Element Web-Client
Caddy Reverse Proxy (extern)

Schnellstart

1. Repository klonen

git clone https://github.com/DEIN_USER/matrix-server.git
cd matrix-server

2. Konfiguration erstellen

cp .env.example .env

Bearbeite .env und setze alle Werte:

# Secrets generieren
openssl rand -base64 32  # Für jedes Secret einmal ausführen

Benötigte Variablen:

  • DOMAIN, MATRIX_DOMAIN, ELEMENT_DOMAIN - Deine Domains
  • POSTGRES_PASSWORD - Datenbank-Passwort
  • SYNAPSE_*_SECRET - Synapse-Secrets
  • SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS - E-Mail-Versand

3. Setup ausführen

./setup.sh

Das Script:

  • Validiert die .env Konfiguration
  • Generiert alle Konfigurationsdateien aus Templates
  • Erstellt den Synapse Signing Key
  • Setzt die Berechtigungen

4. Caddy konfigurieren

sudo cp Caddyfile /etc/caddy/Caddyfile
sudo systemctl reload caddy

5. Server starten

docker compose up -d

6. Admin-Benutzer erstellen

./scripts/create-user.sh admin --admin

Dateistruktur

matrix/
├── docker-compose.yml       # Docker-Konfiguration
├── .env.example             # Template für Umgebungsvariablen
├── .env                     # Deine Konfiguration (nicht im Git!)
├── setup.sh                 # Setup-Script
├── templates/               # Konfigurationsvorlagen
│   ├── homeserver.yaml.template
│   ├── element-config.json.template
│   └── Caddyfile.template
├── scripts/                 # Hilfsskripte
│   ├── backup.sh
│   ├── restore.sh
│   └── create-user.sh
├── synapse-data/            # Synapse-Daten (nicht im Git!)
├── postgres-data/           # PostgreSQL-Daten (nicht im Git!)
└── redis-data/              # Redis-Daten (nicht im Git!)

Sicherheit

Was NICHT im Repository ist

  • .env - Enthält alle Secrets und Passwörter
  • synapse-data/ - Signing Keys, Datenbank, Medien
  • postgres-data/ - PostgreSQL-Daten
  • redis-data/ - Redis-Daten

Sicherheitsfeatures

  • Registrierung nur mit Token und E-Mail-Verifizierung
  • Starke Passwort-Policy (12+ Zeichen, Sonderzeichen, Zahlen)
  • Rate Limiting gegen Brute-Force
  • Keine externen Ports (nur über Caddy)
  • HTTPS mit Security Headers

Benutzer einladen

Da die öffentliche Registrierung deaktiviert ist, können neue Benutzer nur per Einladungs-Token beitreten.

Token erstellen (Admin)

curl -X POST "https://MATRIX_DOMAIN/_synapse/admin/v1/registration_tokens/new" \
  -H "Authorization: Bearer <ADMIN_ACCESS_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"uses_allowed": 1}'

Einladungslink senden

Schicke dem neuen Nutzer:

  1. Registrierungs-Link: https://ELEMENT_DOMAIN/#/register?registrationToken=DEIN_TOKEN
  2. Der Nutzer muss seine E-Mail-Adresse verifizieren

Backup & Restore

Automatisches Backup

# Cronjob einrichten (täglich 3:00 Uhr)
echo "0 3 * * * $(pwd)/scripts/backup.sh" | sudo crontab -

Manuelles Backup

./scripts/backup.sh

Restore

./scripts/restore.sh /opt/matrix-backups/matrix-backup-DATUM.tar.gz

Wartung

Updates

docker compose pull
docker compose up -d

Logs

docker compose logs -f synapse

Status

docker compose ps

Benutzer verwalten

# Normaler Benutzer
./scripts/create-user.sh username

# Admin
./scripts/create-user.sh admin --admin

Lizenz

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages