Initial commit: Matrix stack (Synapse + Synapse-Admin + Element Web) behind Traefik

Fully dockerized deployment with automatic Let's Encrypt certificates via
Traefik's static file provider (no docker.sock needed), bind-mounted data
folders instead of named volumes, and domain/secrets kept out of git via
.env + rendered templates.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
snoopy
2026-09-04 16:40:59 +02:00
commit 708312c80c
13 changed files with 456 additions and 0 deletions

39
.env.example Normal file
View File

@@ -0,0 +1,39 @@
# =============================================================================
# Matrix stack configuration
# Copy this file to ".env" and fill in real values before starting the stack.
# ".env" is git-ignored on purpose: it is the only place where your real
# domain name and secrets live.
# =============================================================================
# --- Domain ------------------------------------------------------------------
# Bare domain used as the Matrix server_name (this is what ends up in every
# user id: @user:DOMAIN). A DNS A/AAAA record for DOMAIN and for each
# subdomain below must point to this server's IP.
DOMAIN=example.com
# Subdomains (each needs its own DNS record pointing here)
MATRIX_SUBDOMAIN=matrix
ELEMENT_SUBDOMAIN=element
ADMIN_SUBDOMAIN=admin
TRAEFIK_SUBDOMAIN=traefik
# --- Traefik / Let's Encrypt ---------------------------------------------------
# Email used for Let's Encrypt account registration and expiry notices.
ACME_EMAIL=changeme@example.com
# htpasswd credentials for the Traefik dashboard (traefik.DOMAIN).
# Generate your own with:
# openssl passwd -apr1
# Format: user:hash (escape any literal "$" as "$$" if you edit this by hand
# outside of a real .env file consumed by docker compose)
TRAEFIK_DASHBOARD_AUTH='admin:changeme'
# --- PostgreSQL (Synapse database) -------------------------------------------
POSTGRES_DB=synapse
POSTGRES_USER=synapse
POSTGRES_PASSWORD=changeme
# --- Synapse -------------------------------------------------------------------
# Shared secret used only once, to create the first admin account via
# `register_new_matrix_user`. Generate with: openssl rand -hex 32
REGISTRATION_SHARED_SECRET=changeme