Summary Introduction Welcome and Overview Setup Installation Using Postgres Configuring a Reverse Proxy Configuring a Forward/Outbound Proxy Configuring a Turn Server Delegation Upgrading Upgrading between Synapse Versions Usage Federation Configuration Configuration Manual Homeserver Sample Config File Logging Sample Config File Structured Logging Templates User Authentication Single-Sign On OpenID Connect SAML CAS SSO Mapping Providers Password Auth Providers JSON Web Tokens Refresh Tokens Registration Captcha Application Services Server Notices Consent Tracking URL Previews User Directory Message Retention Policies Pluggable Modules Writing a module Spam checker callbacks Third-party rules callbacks Presence router callbacks Account validity callbacks Password auth provider callbacks Background update controller callbacks Account data callbacks Porting a legacy module to the new interface Workers Using synctl with Workers Systemd Administration Admin API Account Validity Background Updates Delete Group Event Reports Media Purge History Register Users Registration Tokens Manipulate Room Membership Rooms Server Notices Statistics Users Server Version Federation Manhole Monitoring Understanding Synapse Through Grafana Graphs Useful SQL for Admins Database Maintenance Tools State Groups Request log format Admin FAQ Scripts Development Contributing Guide Code Style Release Cycle Git Usage Testing Demo scripts OpenTracing Database Schemas Experimental features Synapse Architecture Cancellation Log Contexts Replication TCP Replication Internal Documentation Single Sign-On SAML CAS Room DAG concepts State Resolution The Auth Chain Difference Algorithm Media Repository Room and User Statistics Scripts Other Dependency Deprecation Policy Running Synapse on a Single-Board Computer