NAME
gyptazy - it's all about FreeBSD, Proxmox, BGP and Coding!

OPTIONS

CONTENT

Matrix Synapse FreeBSD or Debian: SSO Made Simple with Azure

():

When deploying an open-source chat solution like Matrix Synapse, authentication is a critical component. Many organizations rely on centralized identity providers to manage access securely and efficiently. This is where OpenID Connect (OIDC) comes into play, enabling seamless integration with enterprise identity platforms such as Microsoft Azure Active Directory, now known as Microsoft Entra ID.

By leveraging OIDC, Matrix Synapse can use Azure AD as a Single Sign-On (SSO) provider. Users authenticate with their existing corporate credentials while benefiting from enforced security measures such as multi-factor authentication (MFA / 2FA). This removes the need for separate login credentials and significantly improves security and usability.

One of the major strengths of Matrix Synapse is its flexibility. Unlike proprietary chat platforms, Matrix allows full control over authentication and identity integration. Combining Synapse with Azure AD delivers enterprise-grade security without vendor lock-in.

This guide walks through installing and configuring Matrix Synapse on FreeBSD or Debian, integrating Microsoft Azure AD via OIDC, and preparing the system for production use.

Installation

This section covers installing the required base packages for a Matrix Synapse server, including PostgreSQL for database management, Nginx as a reverse proxy, and Certbot for TLS certificates.

FreeBSD

For FreeBSD based systems the following packages need to be installed by pkg:

# Install packages
pkg install -y py39-matrix-synapse postgresql15-server postgresql15-client py39-certbot py39-certbot-nginx

# Enable services
sysrc postgresql_enable="YES"
sysrc nginx_enable="YES"
sysrc synapse_enable="YES"

# Obtain SSL certificate
certbot certonly --standalone -d matrix.example.com

Debian

For Debian based systems the following packages must be installed via the official Matrix Debian Repository:

# Add Matrix upstream repository
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" \
  > /etc/apt/sources.list.d/matrix-upstream.list

# Install packages
apt update
apt install -y matrix-synapse-py3 libpq5 postgresql nginx certbot python3-certbot-nginx

# Obtain SSL certificate
certbot certonly --standalone -d matrix.example.com

Configuration

The following sections describe how to configure PostgreSQL, Microsoft Azure AD (Entra ID), and Matrix Synapse to enable secure OIDC-based authentication.

Microsoft Azure AD Tenant

To integrate Matrix Synapse with Microsoft Azure AD using OpenID Connect, you must register an application in your Entra ID tenant.

Configure the application registration as follows:

After clicking Register, note the following values as they are required later:

Next, create a client secret:

Database

For production environments, PostgreSQL is strongly recommended over SQLite due to better performance and scalability. The following steps apply to both FreeBSD and Debian:

su - postgres
createuser --pwprompt matrix
createdb --encoding=UTF8 --locale=C --template=template0 --owner=matrix matrix

Adjust Matrix Server Config

Matrix Synapse is configured using the homeserver.yaml file.

Configuration File Locations

This file controls database settings, federation behavior, authentication providers, and general server options.

Switching to PostgreSQL for Production

Replace the default SQLite configuration with the following PostgreSQL settings:

database:
  name: psycopg2
  args:
    user: matrix
    password: $PASSWORD
    database: matrix
    host: localhost
    cp_min: 5
    cp_max: 10

Ensure PostgreSQL is running and accessible. This configuration prepares Synapse for production workloads.

Adding Microsoft Azure AD OIDC Provider

oidc_providers:
  - idp_id: microsoft
    idp_name: Microsoft
    issuer: "https://login.microsoftonline.com/<tenant-id>/v2.0"
    client_id: "<client-id>"
    client_secret: "<client-secret>"
    scopes: ["openid", "profile"]
    authorization_endpoint: "https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize"
    token_endpoint: "https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token"
    userinfo_endpoint: "https://graph.microsoft.com/oidc/userinfo"

    user_mapping_provider:
      config:
        localpart_template: "{{ user.preferred_username.split("@")[0] }}"
        display_name_template: "{{ user.name }}"

Configure Nginx Reverse Proxy

An Nginx HTTPS virtual host is required to expose Matrix Synapse securely and ensure proper federation with other Matrix servers.

Restart The Service

After completing the configuration, restart the services:

# FreeBSD
service matrix-synapse restart
service nginx restart

# Debian
systemctl restart matrix-synapse
systemctl restart nginx

Conclusion

Running Matrix Synapse on FreeBSD or Debian with Microsoft Azure AD (Entra ID) via OpenID Connect provides a secure, scalable, and enterprise-ready messaging platform. This setup combines the openness of Matrix with centralized identity management, delivering strong authentication without sacrificing flexibility or control.