适用环境:Debian 12/13(64位),局域网访问,IP 以
192.168.1.2为例
目标:将网盘影视资源通过 STRM 方式挂载,经 WebDAV 共享给网易爆米花,实现海报墙刮削与无广告播放
架构总览
text
网盘(夸克/115/阿里云盘等)
│
▼
┌──────────────────┐ ┌─────────────────┐ ┌──────────────────┐
│ SmartStrm │────▶│ /mnt/sata/strm │────▶│ Apache WebDAV │
│ (Docker容器) │ │ (STRM文件目录) │ │ (端口 8091) │
└──────────────────┘ └─────────────────┘ └──────────────────┘
│
▼
┌──────────────────┐
│ 网易爆米花 App │
│ (WebDAV 客户端) │
└──────────────────┘SmartStrm:扫描网盘,为每个视频生成
.strm快捷文件(KB 级文本),不下载实际视频。WebDAV:将 STRM 文件目录共享给客户端。
网易爆米花:读取 STRM 文件,自动刮削生成海报墙,播放时由 SmartStrm 的 302 代理将视频流直连到网盘 CDN。
一、Debian 系统准备
1.1 更新系统并安装基础工具
bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl gnupg ca-certificates lsb-release1.2 确认 IP 地址
bash
ip a | grep "inet " | grep -v 127.0.0.1记录局域网 IP(如 192.168.1.2),后续所有配置都会用到。
二、安装 Docker 与 Docker Compose
SmartStrm 通过 Docker 镜像分发,推荐使用 Compose 部署。
2.1 安装 Docker(官方 APT 仓库方式)
bash
# 卸载旧版本(如有)
sudo apt remove docker docker-engine docker.io containerd runc
# 添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 添加 Docker APT 源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/debian $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker Engine 与 Compose 插件
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 启动并设置开机自启
sudo systemctl enable --now docker2.2 验证安装
bash
sudo docker run hello-world看到 “Hello from Docker!” 即成功。
2.3 将当前用户加入 docker 组(可选,免 sudo)
bash
sudo usermod -aG docker $USER
# 重新登录 shell 后生效三、部署 SmartStrm
3.1 创建数据目录
bash
sudo mkdir -p /opt/smartstrm/{config,strm,logs,tools}
sudo mkdir -p /mnt/sata/strm
sudo chown -R $USER:$USER /opt/smartstrm3.2 编写 docker-compose.yml
bash
nano /opt/smartstrm/docker-compose.ymlyaml
name: smartstrm
services:
smartstrm:
image: cp0204/smartstrm:latest
container_name: smartstrm
restart: unless-stopped
network_mode: host
volumes:
- /opt/smartstrm/config:/app/config # 配置目录
- /mnt/sata/strm:/strm # STRM 生成目录(与 WebDAV 共享同一目录)
- /opt/smartstrm/logs:/app/logs # 日志目录(可选)
- /opt/smartstrm/tools:/app/tools # 工具目录(可选)
environment:
- PORT=8024 # 管理后台端口
- ADMIN_USERNAME=admin # 管理用户名
- ADMIN_PASSWORD=你的强密码 # 管理密码,务必修改关键点:
/mnt/sata/strm:/strm将宿主机的/mnt/sata/strm挂载为容器内的/strm,SmartStrm 生成的 STRM 文件会直接写入这个目录。network_mode: host是必须的,因为 SmartStrm 的 302 代理需要绑定自定义端口。
3.3 启动 SmartStrm
bash
cd /opt/smartstrm
sudo docker compose up -d查看日志确认启动成功:
bash
sudo docker logs -f smartstrm3.4 访问管理后台
浏览器打开 http://192.168.1.2:8024,使用 ADMIN_USERNAME / ADMIN_PASSWORD 登录。
3.5 配置存储(连接网盘)
进入「存储管理」→「添加存储」:
SmartStrm 支持 OpenList、WebDAV、夸克、115、123、天翼、迅雷等主流网络存储驱动。保存后点击「测试」确认连接成功。
3.6 创建 STRM 生成任务
进入「任务管理」→「创建任务」:
扫描路径:选择网盘中媒体文件所在的目录
输出目录:选择
/strm(容器内路径,对应宿主机/mnt/sata/strm)生成模式:选择「代理解析」模式(推荐),由 SmartStrm 处理 STRM 请求并 302 重定向到 CDN
保存并运行任务,STRM 文件将生成到 /mnt/sata/strm。
3.7 配置 302 代理(Pro 功能)
进入「系统设置」→「302 代理」:
由于使用 network_mode: host,无需额外端口映射。302 代理的作用是让视频流直连网盘 CDN,不占用 NAS 带宽。
四、配置 WebDAV 服务
将 /mnt/sata/strm 通过 WebDAV 共享给网易爆米花。
4.1 确认端口规划
先检查端口占用情况:
bash
sudo ss -tlnp | grep -E ':(80|8080|8090|8091|8024|8097)\b'本次案例中:
4.2 安装 Apache2 与 WebDAV 模块
bash
sudo apt install -y apache2 apache2-utils
sudo a2enmod dav dav_fs4.3 创建认证用户
bash
sudo htpasswd -c /etc/apache2/webdav.passwd popcorn
# 后续添加用户去掉 -c 参数
sudo chown www-data:www-data /etc/apache2/webdav.passwd
sudo chmod 640 /etc/apache2/webdav.passwd4.4 配置监听端口
编辑 /etc/apache2/ports.conf,添加:
apache
Listen 80
Listen 80914.5 配置 WebDAV 虚拟主机
创建 /etc/apache2/sites-available/webdav.conf:
apache
<VirtualHost *:8091>
ServerAdmin webmaster@localhost
ServerName 192.168.1.2
Alias /strm /mnt/sata/strm
<Directory /mnt/sata/strm>
DAV On
Options Indexes FollowSymLinks
AllowOverride None
AuthType Basic
AuthName "WebDAV"
AuthUserFile /etc/apache2/webdav.passwd
Require valid-user
</Directory>
ErrorLog ${APACHE_LOG_DIR}/webdav-error.log
CustomLog ${APACHE_LOG_DIR}/webdav-access.log combined
</VirtualHost>关键点:
<Directory>必须写真实文件系统路径/mnt/sata/strm,不能写 URL 路径/strm,否则 PROPFIND 等 WebDAV 方法会返回 405。
4.6 处理目录权限
Apache 以 www-data 运行,需要读取 /mnt/sata/strm:
bash
# 方式一:ACL(推荐,不影响 SmartStrm 容器的写入权限)
sudo apt install -y acl
sudo setfacl -R -m u:www-data:rwx /mnt/sata/strm
sudo setfacl -R -d -m u:www-data:rwx /mnt/sata/strm
# 验证
sudo -u www-data ls -la /mnt/sata/strm/ | head注意:
/mnt/sata/strm同时被 SmartStrm 容器(以 root 运行)和 Apache(www-data)访问,使用 ACL 是最安全的方式,不会影响容器写入。
4.7 启用站点并重载
bash
sudo a2ensite webdav.conf
sudo apache2ctl configtest
sudo systemctl reload apache2消除 ServerName 告警:在 /etc/apache2/apache2.conf 末尾添加:
apache
ServerName 192.168.1.24.8 验证 WebDAV
bash
# 目录读取
curl -u popcorn:你的密码 http://192.168.1.2:8091/strm/
# WebDAV 协议层验证
curl -u popcorn:你的密码 -X PROPFIND -H "Depth: 1" \
http://192.168.1.2:8091/strm/ -i | head -5预期:200(目录列表)或 207 Multi-Status。
五、网易爆米花客户端配置
5.1 添加 WebDAV 源
打开网易爆米花 App → 右上角「+」→ 选择 WebDAV:
5.2 使用深度链接快速添加(可选)
网易爆米花支持通过深度链接快捷添加 WebDAV 配置:
text
https://bmh.163.com/la/?import=webdav&scheme=http&host=192.168.1.2&port=8091&username=popcorn&password=你的密码&path=%2Fstrm将链接生成二维码,用爆米花 App 扫码即可自动填入配置。
5.3 注意事项
手机/平板必须与 Debian 服务器处于同一局域网(同一 WiFi 或网段)
如果路由器开启了 AP 隔离(客户端隔离) ,需关闭,否则设备间无法互访
如果开启了防火墙:
bash
sudo ufw allow 8091/tcp5.4 刮削与播放
添加完成后,爆米花会自动扫描 STRM 文件并刮削媒体信息,生成海报墙。播放时,请求经 SmartStrm 302 代理重定向到网盘 CDN,视频流直连播放,不经过 NAS 中转。
六、日常维护
6.1 SmartStrm 更新
bash
sudo docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower -cR smartstrm或手动:
bash
cd /opt/smartstrm
sudo docker compose pull
sudo docker compose up -d6.2 定时扫描新资源
SmartStrm 支持基于 Crontab 的定时计划,可在任务中设置「增量生成」模式,自动扫描网盘新增文件并生成 STRM。
6.3 添加更多 WebDAV 共享
如需共享其他目录(如 /mnt/sata/music),在 webdav.conf 中追加一组配置:
apache
Alias /music /mnt/sata/music
<Directory /mnt/sata/music>
DAV On
Options Indexes FollowSymLinks
AllowOverride None
AuthType Basic
AuthName "WebDAV"
AuthUserFile /etc/apache2/webdav.passwd
Require valid-user
</Directory>然后授权并 reload:
bash
sudo setfacl -R -m u:www-data:rwx /mnt/sata/music
sudo setfacl -R -d -m u:www-data:rwx /mnt/sata/music
sudo apache2ctl configtest && sudo systemctl reload apache26.4 查看日志
bash
# SmartStrm 日志
sudo docker logs -f smartstrm
# WebDAV 错误日志
sudo tail -f /var/log/apache2/webdav-error.log6.5 常用命令速查
七、故障排查
八、完整配置文件参考
/opt/smartstrm/docker-compose.yml
yaml
name: smartstrm
services:
smartstrm:
image: cp0204/smartstrm:latest
container_name: smartstrm
restart: unless-stopped
network_mode: host
volumes:
- /opt/smartstrm/config:/app/config
- /mnt/sata/strm:/strm
- /opt/smartstrm/logs:/app/logs
- /opt/smartstrm/tools:/app/tools
environment:
- PORT=8024
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=你的强密码/etc/apache2/ports.conf(关键行)
apache
Listen 80
Listen 8091/etc/apache2/sites-available/webdav.conf
apache
<VirtualHost *:8091>
ServerAdmin webmaster@localhost
ServerName 192.168.1.2
Alias /strm /mnt/sata/strm
<Directory /mnt/sata/strm>
DAV On
Options Indexes FollowSymLinks
AllowOverride None
AuthType Basic
AuthName "WebDAV"
AuthUserFile /etc/apache2/webdav.passwd
Require valid-user
</Directory>
ErrorLog ${APACHE_LOG_DIR}/webdav-error.log
CustomLog ${APACHE_LOG_DIR}/webdav-access.log combined
</VirtualHost>网易爆米花连接参数
结语
整套方案的核心逻辑是:SmartStrm 负责“生成 STRM 快捷方式 + 302 代理直链”,Apache WebDAV 负责“把 STRM 目录共享出去”,网易爆米花负责“刮削海报墙 + 播放”。
整个部署过程中最容易踩坑的三个点:
SmartStrm 必须用
network_mode: host,否则 302 代理无法正常工作。WebDAV 的
<Directory>必须用真实文件系统路径,URL 路径只用于Alias。/mnt/sata/strm的权限要同时满足 SmartStrm(写入)和 www-data(读取) ,ACL 是最稳妥的方案。
评论