拉取官方镜像
docker pull zlmediakit/zlmediakit:master
首次运行临时容器
docker run -d --name zlmediakit-tmp zlmediakit/zlmediakit:master
提取默认配置文件
# 创建宿主机配置目录
mkdir -p /opt/zlmediakit/conf
# 复制容器内配置文件到宿主机
docker cp zlmediakit-tmp:/opt/media/conf/config.ini /opt/zlmediakit/conf/
# 删除临时容器
docker rm -f zlmediakit-tmp
编辑配置文件
vim /opt/zlmediakit/conf/config.ini
必改项
[api]
secret = your_custom_secret # 必须修改默认值
[rtp_proxy]
port_range = 30000-30500 # 端口范围需与容器映射一致
[http]
port = 80 # 保持与容器映射端口对应 宿主机映射到8080
allow_ip_range = 0.0.0.0/0 # 允许所有IP访问
ssl_port=443 # 若开启HTTPS
[rtmp]
port=1935 # 必须与Docker映射的容器端口一致
[websocket]
port=9000 # 若开启WebSocket
[general]
mediaServerId = xWXfsArzAcUCSkVz #服务器唯一id 可自定义
可选优化项
[general]
mediaServerId=0001 # 集群部署时需区分ID
[hook]
enable_flow_report=1 # 开启流量统计
如果之前运行过同名容器,先停止并删除旧容器:
docker stop zlmediakit && docker rm zlmediakit
以下中 30000-30500 端口,可缩小范围,一定要大于50个,根据实际的业务调整
以下端口都可修改,但是必须与config.ini 一致
在运行ZLMediaKit的Docker容器时,需要根据流媒体服务需求开放以下端口。以下是详细的端口说明和配置建议:
必开核心端口
端口/范围 协议 用途说明 配置示例
1935 TCP RTMP协议(推流/拉流) -p 1935:1935
80 TCP HTTP协议(HLS/HTTP-FLV播放) -p 8080:80(宿主机端口可调)
554 TCP RTSP协议(实时流传输) -p 554:554
30000-30500 TCP/UDP RTP代理端口范围(WebRTC/RTP转发) -p 30000-30500:30000-30500/tcp
-p 30000-30500:30000-30500/udp
方式1:直接运行
docker run -d --name zlmediakit \
-p 1935:1935 -p 8080:80 -p 554:554 \
-p 30000-30500:30000-30500/tcp \
-p 30000-30500:30000-30500/udp \
-v /opt/zlmediakit/conf/config.ini:/opt/media/conf/config.ini \
zlmediakit/zlmediakit:master
方式2:docker-compose部署(推荐)
# docker-compose.yml
services:
zlmediakit:
image: zlmediakit/zlmediakit:master
volumes:
- /data/zlmediakit/conf/config.ini:/opt/media/conf/config.ini
ports:
- "1935:1935"
- "8080:80"
- "8444:443"
- "554:554"
- "30000-30500:30000-30500/tcp"
- "30000-30500:30000-30500/udp"
restart: always
启动命令:
docker-compose up -d
验证配置生效
1. 查看实时日志
docker logs -f zlmediakit-zlmediakit-1 | grep "config loaded"
# 应显示"config loaded from /opt/media/conf/config.ini"
**2. 访问管理界面**
浏览器打开`http://宿主机IP:8080`,若显示ZLMediaKit欢迎页且无IP白名单错误,则配置成功
**3. API接口测试**
```bash
curl http://宿主机IP:8080/api/defaultAuth
# 返回的secret应与配置一致
热更新配置(无需重启)
通过API触发配置重载:
curl "http://宿主机IP:8080/api/reloadConfig?secret=your_custom_secret"
#此镜像为github action 持续集成自动编译推送,跟代码(master分支)保持最新状态
docker run -id -p 1935:1935 -p 8080:80 -p 8443:443 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 9000:9000/udp zlmediakit/zlmediakit:master
docker run --name zlmediakit -id -p 1935:1935 -p 8080:80 -p 8444:443 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 19000:9000/udp zlmediakit/zlmediakit:master
rtsp使用554端口号
rtmp使用1935端口号
ws使用80端口号
wss使用443端口号
启动的时候查看日志,会给出 secret参数
2025-04-08 17:32:36.094 W [MediaServer] [1-MediaServer] main.cpp:283 start_main | The api.secret is invalid,
modified it to: E8J04AJKH6lqowwqMjyEEaCxq7mwxmIt, saved config file: ../conf/config.ini
进入docker容器中查看这个配置文件
docker exec -it 325a62ecd352 /bin/sh
配置文件路径:/opt/media/conf/config.ini
secret=E8J04AJKH6lqowwqMjyEEaCxq7mwxmIt
另一种查看secret的方法 (这个只能在访问地址上添加secret参数后才能点开查看)
访问网址,出现7个序号的菜单,点击第6条:6 webassist/,此时页面上会提示:在url路径中添加正确的secret参数
在菜单栏中找到"服务器配置",能看到"API配置"
添加上secret参数后的访问地址:
https://192.168.2.163:8444/webassist/?secret=E8J04AJKH6lqowwqMjyEEaCxq7mwxmIt
http://192.168.2.163:8080/webassist/?secret=E8J04AJKH6lqowwqMjyEEaCxq7mwxmIt
ffmpeg -re -i "1.mp4" -vcodec h264 -acodec aac -f flv rtmp://192.168.2.163/live/test2
ffplay rtmp://192.168.2.202:8080/live/aaa
通过接口添加摄像机视频流地址:
http://192.168.2.163:8080/index/api/addStreamProxy?vhost=__defaultVhost__&app=live&stream=fff&url=rtsp://xxx:xxx@ip/LiveMedia/ch1/Media1/trackID=1&secret=Uzjepg727JcfzKJfKEhWGIcKnNLacwNJ
VLC播放地址:http://192.168.2.163:8080/live/fff/hls.m3u8