SynapseAdmin.NET

A modern .NET 10 Blazor Server web application for administering Synapse Matrix homeservers.

C# AGPL-3.0 167 commits
dotnet blazor matrix synapse selfhosted admin-panel

A modern .NET 10 Blazor Server web application for administering Synapse (Matrix homeservers).

Features

  • Dashboard: At-a-glance overview of your server’s status and metrics.
  • User Management: Search, view, deactivate, and manage properties of server users.
  • Room Management: Search and inspect server rooms and their details.
  • Event Reports: Review and manage reported events/messages from users.
  • Registration Tokens: Generate and manage tokens to restrict server registration.
  • Federation Destinations: Check federation status and manage destination queues.
  • Server Notices: Broadcast important notices directly to users from the server.
  • Multi-Language Support: Fully localized interface with support for English, German, and French.

Security

SynapseAdmin.NET implements AES-256-GCM encryption for session tokens stored on disk. This ensures that even if someone has access to your server’s storage, they cannot read your Matrix access tokens without the passphrase.

Always set a secure, unique DP_PASSPHRASE environment variable in production. If this value is changed, all existing sessions will be invalidated, but your data will remain secure.

Technologies

  • Architecture: N-Tier Service Pattern (Separation of UI and Logic)
  • Framework: .NET 10 Blazor Server (Interactive Server Mode)
  • UI Component Library: MudBlazor
  • Logging: Serilog (File & Console)
  • Matrix SDK: LibMatrix (Git Submodule)
  • Deployment: Docker & Docker Compose

Quick Start

docker compose up -d

This will:

  • Pull the latest image from GHCR
  • Map port 8080 for the web interface
  • Persist logs to ./logs and encryption keys to ./keys
  • Encrypt persisted keys using DP_PASSPHRASE

Docker CLI

docker run -d \
  -p 8080:8080 \
  -e DP_PASSPHRASE="your-secure-passphrase-here" \
  -v ./logs:/app/logs \
  -v ./keys:/app/keys \
  --name synapseadmin \
  ghcr.io/benjamin-aicheler/synapseadmin.net:latest

Local Development

git clone --recursive https://github.com/benjamin-aicheler/SynapseAdmin.NET.git
cd SynapseAdmin.NET
dotnet run --project src/SynapseAdmin/SynapseAdmin.csproj

Reverse Proxy

The app respects X-Forwarded-For and X-Forwarded-Proto headers. Configure your reverse proxy (Nginx, Traefik, Cloudflare) to pass these headers for proper SSL termination support.