🚀 Tuwunel + Element Web 终极部署教程 (Docker Compose 版)
Tuwunel 是一个基于 Rust 编写的高性能 Matrix 聊天服务器端(Homeserver),它是 Conduwuit 的继任者(而 Conduwuit 又是 Conduit 的分支),主打极致的性能、轻量化和企业级稳定性。相比官方的 Synapse,Tuwunel 资源占用更低且响应迅速。
准备工作
- 服务器系统:Debian / Ubuntu
- 核心工具:Docker, Docker Compose, Nginx Proxy Manager (NPM)
- 域名准备 (假设):
- 服务端域名:
matrix.xxx.com(用于数据传输) - 客户端域名:
mt.xxx.com(用于网页访问,可选)
- 服务端域名:
第一步:创建目录与配置文件
在服务器上建立一个干净的目录:
mkdir -p /docker_data/Tuwunel
cd /docker_data/Tuwunel
1. 创建 docker-compose.yml
这是最关键的文件。我们使用 Docker 卷 (tuwunel_data) 来存储数据库,彻底根除 Permission Denied 错误。
创建文件:
nano docker-compose.yml
复制粘贴以下内容:
version: '3'
services:
# --- 1. 服务端:Tuwunel ---
tuwunel:
image: jevolk/tuwunel:latest
container_name: tuwunel-server
restart: unless-stopped
ports:
# 外部端口 6167 <--> 内部端口 6167
- "6167:6167"
volumes:
# 【核心】使用 Docker 托管卷,自动管理权限
- tuwunel_data:/var/lib/tuwunel
environment:
# 你的服务端域名,自行修改
- TUWUNEL_SERVER_NAME=matrix.xxx.com
# 监听端口与地址
- TUWUNEL_PORT=6167
- TUWUNEL_ADDRESS=0.0.0.0
# 允许注册 (为了建管理员账号,先开着)
- TUWUNEL_ALLOW_REGISTRATION=true
# 开启无 Token 注册必须加这行“发誓”参数
- TUWUNEL_YES_I_AM_VERY_VERY_SURE_I_WANT_AN_OPEN_REGISTRATION_SERVER_PRONE_TO_ABUSE=true
# 上传限制 (50MB)
- TUWUNEL_MAX_REQUEST_SIZE=50000000
- RUST_LOG=info
# --- 2. 客户端:Element Web ---
element-web:
image: vectorim/element-web:latest
container_name: element-web
restart: unless-stopped
ports:
# 外部端口 8077 <--> 内部端口 80
- "8077:80"
volumes:
# 挂载客户端配置文件
- ./element-config.json:/app/config.json
# 声明数据卷
volumes:
tuwunel_data:
(保存退出:Ctrl+O -> Enter -> Ctrl+X)
2. 创建 element-config.json
这个文件告诉网页端去哪里连接服务器。
创建文件:
nano element-config.json
复制粘贴以下内容:
{
"default_server_config": {
"m.homeserver": {
"base_url": "https://matrix.xxx.com",
"server_name": "matrix.xxx.com"
}
},
"brand": "Element",
"integrations_ui_url": "https://scalar.vector.im/",
"integrations_rest_url": "https://scalar.vector.im/api",
"integrations_widgets_urls": [
"https://scalar.vector.im/_matrix/integrations/v1",
"https://scalar.vector.im/_matrix/integrations/v1/3rdparty"
],
"hosting_signup_link": "https://element.io/matrix-services"
}
(保存退出)
第二步:启动服务
在当前目录下执行:
docker compose up -d
等待几秒后,检查状态:
docker ps
确保两个容器状态都是 Up (特别是 tuwunel-server 没有显示 Restarting)。
第三步:配置 Nginx Proxy Manager (NPM)
你需要配置两条反向代理规则。
1. 配置服务端 (Server)
-
Domain Names:
matrix.xxx.com -
Scheme:
http -
Forward Host:
你的服务器IP(或者容器名tuwunel-server,如果在同一网络) -
Forward Port:
6167 -
SSL: 开启并强制 HTTPS。
-
Advanced (高级配置 - 必填): 为了让联邦和客户端能自动发现服务器,必须添加
.well-known配置。点击 Advanced 选项卡,填入:location /.well-known/matrix/server { return 200 '{"m.server": "matrix.ms.rontalks.ggff.net:443"}'; default_type application/json; add_header Access-Control-Allow-Origin *; } location /.well-known/matrix/client { return 200 '{"m.homeserver": {"base_url": "https://matrix.xxx.com"}}'; default_type application/json; add_header Access-Control-Allow-Origin *; }
2. 配置客户端 (Element Web)
- Domain Names:
mt.xxx.com(你的网页端域名) - Scheme:
http - Forward Host:
你的服务器IP - Forward Port:
8077 - SSL: 开启并强制 HTTPS。
第四步:注册并设置管理员
-
注册: 访问你的网页版 (
https://mt.xxx.com),注册一个新账号(例如rontalks)。 -
暂停服务: 回到 SSH 终端,暂停容器(必须暂停才能操作数据库):
docker compose down -
进入控制台提权: 复制并在终端执行以下命令:
docker run --rm -it \ -v tuwunel_data:/var/lib/tuwunel \ -e TUWUNEL_SERVER_NAME=matrix.xxx.com \ jevolk/tuwunel:latest \ --console -
执行提权: 出现
uwu>后输入:admin users make-user-admin @rontalks:matrix.xxx.com(记得把 @rontalks... 换成你的真实 ID)
-
退出: 按
Ctrl + D。
第五步:安全收尾 (关闭注册)
为了防止陌生人随意注册,建议关闭注册功能。
-
修改配置:
nano docker-compose.yml将
TUWUNEL_ALLOW_REGISTRATION=true改为false。 -
最终重启:
docker compose up -d
恭喜!你现在拥有了一个高性能、安全、完全属于你自己的 Matrix 聊天服务器。
这是真正的“天神权限”。比如你要重置某人的密码,或者彻底删除某个违规账号,Element 网页版上是点不动的,你需要再次回到我们刚才那个 uwu> 控制台里敲命令。
还记得怎么进控制台吗? docker compose run --rm -e TUWUNEL_SERVER_NAME=matrix.xxx.com tuwunel --console
常用管理命令小抄 (Cheat Sheet):
-
查看所有注册用户:
admin users list -
重置用户密码 (比如你的朋友忘了密码):
admin users reset-password @username:你的域名 新密码 -
封禁/停用账号 (遇到发广告的):
admin users deactivate @badguy:你的域名 -
创建新用户 (如果不开放注册,你可以手动建号):
register -u 用户名 -p 密码 -a (如果是管理员加-a)
文章评论