matrixdotorg/synapse此Docker镜像以单进程方式运行Synapse。默认使用SQLite数据库;生产环境中建议连接独立的PostgreSQL数据库。该镜像不包含TURN服务器。
该镜像适用于所有Docker官方支持的平台。注意,Docker在Windows上的WS1后端Linux容器为实验性功能,不受此镜像支持。
默认情况下,镜像需要一个位于/data的卷,用于存储:
您可根据可用的存储端点使用独立卷。例如,/data/media可存储在大容量但低性能的HDD存储上,而其他文件可存储在高性能端点。
要设置应用服务,只需在数据卷中创建appservices目录,并在其中写入应用服务YAML配置文件。支持多个应用服务。
第一步是生成有效的配置文件。为此,可运行带generate命令行选项的镜像。
需指定SYNAPSE_SERVER_NAME和SYNAPSE_REPORT_STATS环境变量,并挂载Docker卷以存储配置。例如:
docker run -it --rm \ --mount type=volume,src=synapse-data,dst=/data \ -e SYNAPSE_SERVER_NAME=my.matrix.host \ -e SYNAPSE_REPORT_STATS=yes \ matrixdotorg/synapse:latest generate
有关选择合适服务器名称的信息,请参见[***]
上述命令将在(通常)/var/lib/docker/volumes/synapse-data/_data中生成homeserver.yaml。应检查此文件并根据需要自定义。
generate模式支持以下环境变量:
SYNAPSE_SERVER_NAME(必填):服务器公共主机名。SYNAPSE_REPORT_STATS(必填,yes或no):是否启用***统计报告。SYNAPSE_HTTP_PORT:Synapse监听HTTP流量的端口,默认为8008。SYNAPSE_CONFIG_DIR:存储其他配置文件(如日志配置和事件签名密钥)的目录,默认为/data。SYNAPSE_CONFIG_PATH:生成的配置文件路径,默认为<SYNAPSE_CONFIG_DIR>/homeserver.yaml。SYNAPSE_DATA_DIR:存储持久数据(如数据库和媒体存储)的目录,默认为/data。UID、GID:创建数据目录的用户ID和组ID,默认为991、991。拥有有效配置文件后,可按以下方式启动Synapse:
docker run -d --name synapse \ --mount type=volume,src=synapse-data,dst=/data \ -p 8008:8008 \ matrixdotorg/synapse:latest
(假设8008是Synapse配置的HTTP监听端口。)
可通过以下命令检查启动是否正常:
docker logs synapse
若一切正常,访问http://localhost:8008应看到确认消息。
run模式支持以下环境变量:
SYNAPSE_CONFIG_DIR:存储其他配置文件的目录,默认为/data。SYNAPSE_CONFIG_PATH:配置文件路径,默认为<SYNAPSE_CONFIG_DIR>/homeserver.yaml。SYNAPSE_WORKER:执行的模块,用于worker模式运行Synapse,默认为synapse.app.homeserver(适用于非worker模式)。UID、GID:运行Synapse的用户ID和组ID,默认为991、991。TZ:容器时区,默认为UTC(详见时区列表)。对于更复杂的设置(如worker模式),可直接向Synapse传递参数。例如:
docker run -d --name synapse \ --mount type=volume,src=synapse-data,dst=/data \ -p 8008:8008 \ matrixdotorg/synapse:latest run \ -m synapse.app.generic_worker \ --config-path=/data/homeserver.yaml \ --config-path=/data/generic_worker.yaml
若未提供-m,则使用SYNAPSE_WORKER环境变量的值;若未提供至少一个--config-path或-c,则使用SYNAPSE_CONFIG_PATH环境变量的值。
Synapse运行后,可通过register_new_matrix_user创建用户。
需在配置文件中设置registration_shared_secret,并重启Synapse使更改生效。
然后执行脚本:
docker exec -it synapse register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml --help
不再需要时,记得删除registration_shared_secret并重启。
默认配置暴露单个HTTP端口:http://localhost:8008,适用于本地测试。实际使用中,需使用反向代理或配置Synapse暴露HTTPS端口。
反向代理文档参见[***]
在Synapse中启用TLS支持的更多信息,参见[***]docker run的-p参数暴露容器的TLS端口。
该Docker镜像曾支持基于环境变量创建动态配置文件,现已移除。若无配置文件运行Synapse将报错。
但可使用旧版模式的环境变量生成静态配置文件:运行带migrate_config命令的容器。例如:
docker run -it --rm \ --mount type=volume,src=synapse-data,dst=/data \ -e SYNAPSE_SERVER_NAME=my.matrix.host \ -e SYNAPSE_REPORT_STATS=yes \ matrixdotorg/synapse:latest migrate_config
这将生成与旧版模式相同的配置文件,存储在/data/homeserver.yaml,之后可按运行Synapse部分使用。
注意,此配置文件的默认值可能与generate生成的不同(如默认启用TLS)。建议检查并编辑生成的配置文件以满足需求。
若需从Synapse源码构建镜像,从仓库根目录执行以下docker build命令:
docker build -t matrixdotorg/synapse -f docker/Dockerfile .
可通过更改-f参数指向其他Dockerfile构建不同镜像。
若在Docker内部使用非标准端口或TLS,运行docker run命令时可禁用健康检查:
--no-healthcheck
若需在docker-compose中禁用健康检查,在服务配置中添加:
healthcheck: disable: true
若需自定义健康检查指向不同端口,添加:
--health-cmd 'curl -fSs http://localhost:1234/health'
可添加以下配置自定义健康检查(需docker-compose版本>2.1):
healthcheck: test: ["CMD", "curl", "-fSs", "http://localhost:8008/health"] interval: 15s timeout: 5s retries: 3 start_period: 5s
镜像内置jemalloc,将替代默认分配器。有关jemalloc的信息,参见Synapse README。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务