
realtyem/synapse本镜像基于matrixdotorg的worker Dockerfile构建,是专为Unraid系统设计的Matrix Synapse家庭服务器(homeserver)镜像。它简化了Synapse的部署与管理,提供自动配置生成和多进程工作进程(worker)支持,适合需要高效管理Matrix家庭服务器的用户。
自动配置生成
删除主配置文件homeserver.yaml后,镜像会基于环境变量自动重建配置,保持配置文件清洁且与最新版本同步。若使用现有homeserver.yaml,需手动将主监听端口从默认8008修改为8080(因内部反向代理需求)。
灵活的多进程支持
通过环境变量指定worker类型即可启用多进程模式,无需复杂配置。镜像会自动处理反向代理和复制,支持动态添加/移除worker,提升服务器性能。
matrix.org)进行联邦的部署@someone:example.com,服务器名称必须设为example.com,而非matrix.example.com。详情参考官方文档。matrix.org)前,必须备份密钥和数据库。若重建服务器时密钥不一致,其他服务器可能拒绝连接。| 变量名 | 说明 | 取值示例 |
|---|---|---|
SYNAPSE_SERVER_NAME | 服务器名称,决定用户ID格式(如@user:example.com中的example.com) | example.com |
SYNAPSE_REPORT_STATS | 是否向Matrix官方报告使用统计 | yes或no(必填) |
通过SYNAPSE_WORKER_TYPES变量配置工作进程,支持多进程模式:
取值说明:
full:启用完整worker集(推荐生产环境)支持的worker类型:
account_data, event_persister, presence, receipts, to_device, typing,
background_worker, event_creator, frontend_proxy, media_repository, pusher, synchrotron, user_dir,
client_reader, federation_sender, federation_inbound, federation_reader
full包含的worker:
account_data, background_worker, event_creator, event_persister, federation_inbound, federation_reader, federation_sender, frontend_proxy, media_repository, presence, pusher, receipts, to_device, typing, synchrotron, user_dir
| 变量名 | 说明 | 取值范围/默认值 |
|---|---|---|
SYNAPSE_WORKERS_WRITE_LOGS_TO_DISK | 是否将worker日志写入磁盘 | 1(启用)/0(禁用),默认0 |
SYNAPSE_LOG_LEVEL | 日志级别 | ERROR, WARNING, INFO(默认), DEBUG |
SYNAPSE_METRICS | 是否启用Prometheus指标导出 | yes/1/true/on启用,其他为禁用 |
POSTGRES_HOST | PostgreSQL数据库主机地址 | 默认127.0.0.1 |
POSTGRES_PORT | PostgreSQL端口 | 默认5432 |
POSTGRES_DB | 数据库名称 | 默认synapse |
POSTGRES_USER | 数据库用户名 | 默认synapse |
POSTGRES_PASSWORD | 数据库密码 | 无默认,需手动设置 |
SYNAPSE_MAX_UPLOAD_SIZE | 最大上传文件大小 | 默认50M,推荐改为2048M |
SYNAPSE_TURN_URIS | TURN服务器URL列表,逗号分隔(无空格) | 例如turn:turn.example.com?transport=udp |
SYNAPSE_TURN_SECRET | TURN服务器密钥 | 自定义字符串 |
SYNAPSE_ENABLE_REGISTRATION | 是否允许公开注册(默认禁用,存在安全风险) | yes/no,默认no |
SYNAPSE_REGISTRATION_SHARED_SECRET | 注册共享密钥(自动生成) | 自动生成,无需手动设置 |
SYNAPSE_MACAROON_SECRET_KEY | Macaroon密钥(自动生成,保存为文件) | 自动生成,无需手动设置 |
SYNAPSE_SERVE_SERVER_WELLKNOWN | 是否提供服务器well-known文件(用于联邦和委托) | True/False,默认False |
SYNAPSE_PUBLIC_BASEURL | 公开基础URL(用于委托,如服务器名称为example.com但反向代理至matrix.example.com) | [***] |
UID/GID | 运行容器的用户/组ID | 默认991/991 |
以下变量取值为yes/y/1/true/t/on时启用对应功能,其他值禁用:
| 变量名 | 说明 | 依赖条件 |
|---|---|---|
SYNAPSE_METRICS | 启用内置Prometheus指标服务 | 无 |
SYNAPSE_ENABLE_REDIS_METRIC_EXPORT | 启用Redis指标导出(Redis内置,多worker时自动使用) | SYNAPSE_METRICS启用 |
SYNAPSE_ENABLE_POSTGRES_METRIC_EXPORT | 启用PostgreSQL指标导出 | SYNAPSE_METRICS启用 |
SYNAPSE_ENABLE_COMPRESSOR | 启用数据库压缩工具(每周日1点自动运行) | POSTGRES_PASSWORD设置 |
SYNAPSE_ENABLE_BUILTIN_COTURN | 启用内置COTURN服务器 | 无 |
COTURN_MIN_PORT/COTURN_MAX_PORT | COTURN服务器端口范围 | 默认49153/49173 |
| 路径 | 说明 | 必要性 |
|---|---|---|
/data | 存储配置文件(如homeserver.yaml、密钥文件等) | 必填 |
/data/media_store | 存储媒体文件(缩略图、图片、视频等),可能占用大量空间 | 推荐 |
/var/lib/prometheus | 存储Prometheus指标数据库(SQLite),避免容器更新时丢失指标数据 | 推荐 |
/var/run/postgresql | PostgreSQL Unix socket路径(如需通过socket连接数据库) | 可选 |
bashdocker run -d \ --name synapse \ -e SYNAPSE_SERVER_NAME=example.com \ -e SYNAPSE_REPORT_STATS=yes \ -e SYNAPSE_WORKER_TYPES=full \ -e SYNAPSE_MAX_UPLOAD_SIZE=2048M \ -v /path/to/appdata/synapse:/data \ -v /path/to/media_store:/data/media_store \ -v /path/to/prometheus:/var/lib/prometheus \ -p 8080:8080 \ your-image-name:latest
yamlversion: '3' services: synapse: image: your-image-name:latest container_name: synapse restart: unless-stopped environment: - SYNAPSE_SERVER_NAME=example.com - SYNAPSE_REPORT_STATS=yes - SYNAPSE_WORKER_TYPES=full - SYNAPSE_MAX_UPLOAD_SIZE=2048M - POSTGRES_HOST=postgres - POSTGRES_USER=synapse - POSTGRES_PASSWORD=your-secure-password - POSTGRES_DB=synapse volumes: - /path/to/appdata/synapse:/data - /path/to/media_store:/data/media_store - /path/to/prometheus:/var/lib/prometheus ports: - "8080:8080" depends_on: - postgres postgres: image: postgres:14 container_name: synapse-postgres restart: unless-stopped environment: - POSTGRES_USER=synapse - POSTGRES_PASSWORD=your-secure-password - POSTGRES_DB=synapse volumes: - /path/to/postgres-data:/var/lib/postgresql/data



manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务