安装部署
本页用于完成 FlowMedia 的首次部署,并解释 docker-compose.yml 中每个关键参数的作用。
FlowMedia 推荐以 Docker Compose 方式部署。整体链路通常为:
CloudDrive2 挂载网盘 → FlowMedia 归档/同步 → Emby / Jellyfin / Plex / Navidrome 索引 → 客户端播放系统要求
| 项目 | 要求 | 说明 |
|---|---|---|
| 操作系统 | Linux,推荐 Ubuntu 22.04+ / Debian 12+ / 群晖 / 飞牛 / Unraid | 需要能正常运行 Docker 和 FUSE 挂载 |
| Docker | 24.0 或更高版本 | 用于运行 FlowMedia、Emby、Navidrome、CloudDrive2 等容器 |
| Docker Compose | v2 | 推荐使用 docker compose 命令 |
| CPU / 内存 | 建议 2 核 CPU、8 GB 内存以上 | 大库扫描、刮削、封面处理会占用一定资源 |
| 磁盘 | 建议为配置目录预留 5 GB 以上 | 用于数据库、日志、缓存、封面与字体 |
| 网络 | 国内环境访问 TMDB / Telegram 通常需要代理 | 代理只解决访问外部 API,不提供任何资源 |
| 可选组件 | CloudDrive2 | 用于把 115 / 123 / 阿里云盘挂载到宿主机目录 |
目录准备
建议先在宿主机创建固定目录,后续升级容器时配置和数据不会丢失。
bash
mkdir -p /volume1/docker/flowmedia/config
mkdir -p /volume1/docker/flowmedia/cover
mkdir -p /volume1/docker/flowmedia/fonts
mkdir -p /volume1/media
mkdir -p /volume1/music
mkdir -p /volume1/CloudNAS
mkdir -p /volume1/docker/emby
mkdir -p /volume1/docker/navidrome/data
mkdir -p /volume1/docker/clouddrive2/config| 宿主机目录 | 容器内路径 | 用途 | 是否必填 |
|---|---|---|---|
/volume1/docker/flowmedia/config | /config | FlowMedia 数据库、日志、缓存、运行配置 | 必填 |
/volume1/docker/flowmedia/cover | /cover | 自定义媒体库封面,可覆盖内置封面 | 可选 |
/volume1/docker/flowmedia/fonts | /fonts | 自定义封面字体 | 可选 |
/volume1/media | /media | 视频 STRM / 软链接输出目录,也可作为本地视频库目录 | 推荐 |
/volume1/music | /music | 音乐软链接输出目录,也可作为本地音乐库目录 | 推荐 |
/volume1/CloudNAS | /CloudNAS | CloudDrive2 网盘挂载根目录 | 推荐 |
/volume1/docker/emby | /config | Emby 配置目录 | 使用 Emby 时必填 |
/volume1/docker/navidrome/data | /data | Navidrome 数据目录 | 使用 Navidrome 时必填 |
/volume1/docker/clouddrive2/config | /config | CloudDrive2 配置目录 | 使用 CloudDrive2 时必填 |
路径可以按你的系统改成
/mnt/...、/data/...等,但同一条链路中的路径必须保持一致。例如 FlowMedia 输出到/media,Emby 容器也要能看到同一个宿主机目录。
docker-compose.yml
下面是常见的单机部署示例。请先把 LICENSE_KEY、账号密码、宿主机目录按自己的环境改好。
yaml
version: "3.8"
services:
flowmedia:
image: treehello/flowmedia:latest
container_name: flowmedia
restart: always
privileged: true
ports:
- "6688:6688"
- "6689:6689"
- "6699:6699"
volumes:
- /volume1/docker/flowmedia/config:/config
- /volume1/docker/flowmedia/cover:/cover
- /volume1/docker/flowmedia/fonts:/fonts
- /volume1/media:/media
- /volume1/music:/music
- /volume1/CloudNAS:/CloudNAS:rslave
environment:
- LICENSE_KEY=请替换为你的授权码
- DEFAULT_USERNAME=admin
- DEFAULT_PASSWORD=请替换为强密码
- TZ=Asia/Shanghai
- PUID=0
- PGID=0
# 国内访问 TMDB / Telegram 时按需启用
# - HTTP_PROXY=http://192.168.1.10:7890
# - HTTPS_PROXY=http://192.168.1.10:7890
# - ALL_PROXY=socks5://192.168.1.10:7890
emby:
image: emby/embyserver:latest
container_name: emby
privileged: true
restart: always
ports:
- "8096:8096"
volumes:
- /volume1/docker/emby:/config
- /volume1/media:/media
environment:
- PUID=0
- PGID=0
- UID=0
- GID=0
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
restart: always
ports:
- "4533:4533"
volumes:
- /volume1/docker/navidrome/data:/data
- /volume1/music:/music
environment:
- ND_SCANSCHEDULE=5m
- ND_LOGLEVEL=info
clouddrive2:
image: cloudnas/clouddrive2:latest
container_name: clouddrive2
restart: always
privileged: true
network_mode: host
pid: host
devices:
- /dev/fuse:/dev/fuse
environment:
- CLOUDDRIVE_HOME=/config
volumes:
- /volume1/CloudNAS:/CloudNAS:rslave
- /volume1/docker/clouddrive2/config:/configFlowMedia 服务参数
| 参数 | 示例 | 作用 | 填写建议 |
|---|---|---|---|
image | treehello/flowmedia:latest | FlowMedia 镜像名和版本 | 一般保持 latest,需要固定版本时改为具体 tag |
container_name | flowmedia | 容器名称 | 保持默认即可 |
restart | always | 容器异常退出或宿主机重启后自动启动 | 推荐 always |
privileged | true | 允许容器访问挂载、文件权限等底层能力 | 使用 CloudDrive2/FUSE 挂载目录时建议开启 |
6688:6688 | 主服务端口 | Web UI、API、设置、任务管理都走该端口 | 浏览器访问 http://服务器IP:6688 |
6689:6689 | Emby 反代端口 | Emby 客户端通过该端口走 302 直连 | 使用 Emby 302 直连时必须映射 |
6699:6699 | Navidrome 反代端口 | Subsonic 客户端通过该端口走 302 直连 | 使用 Navidrome 302 直连时必须映射 |
/config | /volume1/docker/flowmedia/config:/config | 保存数据库、日志、缓存、运行配置 | 必须持久化,不要放临时目录 |
/cover | /volume1/docker/flowmedia/cover:/cover | 自定义媒体库封面 | 不需要自定义封面可保留空目录 |
/fonts | /volume1/docker/flowmedia/fonts:/fonts | 自定义封面字体 | 不需要自定义字体可保留空目录 |
/media | /volume1/media:/media | 视频输出目录,通常给 Emby / Jellyfin / Plex 索引 | FlowMedia 和媒体服务器必须挂同一个宿主机目录 |
/music | /volume1/music:/music | 音乐输出目录,通常给 Navidrome 索引 | FlowMedia 和 Navidrome 必须挂同一个宿主机目录 |
/CloudNAS | /volume1/CloudNAS:/CloudNAS:rslave | CloudDrive2 网盘挂载根目录 | 群晖/Ubuntu 通常用 rslave;飞牛系统可改 rshared |
环境变量参数
| 参数 | 示例 | 作用 | 注意事项 |
|---|---|---|---|
LICENSE_KEY | FlowMedia-xxxx-xxxx | 授权码 | 必填。捐赠后获得,一机一容器一码 |
DEFAULT_USERNAME | admin | 首次登录用户名 | 只影响初始管理员创建,后续可在设置中修改 |
DEFAULT_PASSWORD | 强密码 | 首次登录密码 | 请不要使用示例弱密码,首次登录后建议立即修改 |
TZ | Asia/Shanghai | 容器时区 | 影响日志、任务历史、Cron 定时判断 |
PUID | 0 | 容器运行用户 UID | 权限不熟悉时可先用 0;想降权运行时填宿主机目录所有者 UID |
PGID | 0 | 容器运行用户 GID | 与 PUID 配套使用 |
HTTP_PROXY | http://192.168.1.10:7890 | HTTP 代理 | 国内访问 TMDB / Telegram 时常用 |
HTTPS_PROXY | http://192.168.1.10:7890 | HTTPS 代理 | 建议与 HTTP_PROXY 一起配置 |
ALL_PROXY | socks5://192.168.1.10:7890 | SOCKS 代理 | 使用 SOCKS5 代理时配置 |
Emby 参数说明
| 参数 | 作用 | 填写建议 |
|---|---|---|
8096:8096 | Emby 原生 Web 端口 | 管理 Emby 用 8096,客户端 302 播放用 FlowMedia 6689 |
/config | Emby 配置和数据库 | 必须持久化 |
/media | Emby 媒体库目录 | 与 FlowMedia 的 /media 指向同一个宿主机目录 |
PUID/PGID/UID/GID | 文件权限 | 与宿主机媒体目录权限保持一致,权限不熟悉时可先用 0 |
Navidrome 参数说明
| 参数 | 作用 | 填写建议 |
|---|---|---|
4533:4533 | Navidrome 原生 Web 端口 | 管理 Navidrome 用 4533,Subsonic 客户端 302 播放用 FlowMedia 6699 |
/data | Navidrome 数据目录 | 必须持久化 |
/music | Navidrome 音乐库目录 | 与 FlowMedia 的 /music 指向同一个宿主机目录 |
ND_SCANSCHEDULE | 自动扫描周期 | 5m 表示每 5 分钟扫描一次;大库可改为 30m 或手动扫描 |
ND_LOGLEVEL | 日志级别 | 一般保持 info |
CloudDrive2 参数说明
| 参数 | 作用 | 填写建议 |
|---|---|---|
network_mode: host | 让 CloudDrive2 直接使用宿主机网络 | 挂载和回调更稳定,推荐保留 |
pid: host | 与宿主机共享 PID 命名空间 | CloudDrive2/FUSE 场景常用配置 |
privileged: true | 允许使用 FUSE 挂载能力 | 必须保留 |
/dev/fuse:/dev/fuse | FUSE 设备映射 | 必须保留,否则无法挂载网盘 |
CLOUDDRIVE_HOME=/config | CloudDrive2 配置目录 | 与 /config 卷配套 |
/CloudNAS:rslave | 网盘挂载根目录共享给其他容器 | 飞牛系统如挂载不刷新,可尝试改为 rshared |
启动与更新
首次启动:
bash
docker compose up -d
docker compose logs -f flowmedia更新 FlowMedia:
bash
docker compose pull flowmedia
docker compose up -d flowmedia停止服务:
bash
docker compose down不要删除
/config对应的宿主机目录,否则任务、历史、设置等运行数据会丢失。
首次登录
- 等待容器启动完成,首次启动通常需要几十秒。
- 浏览器访问
http://<服务器IP>:6688。 - 使用
DEFAULT_USERNAME/DEFAULT_PASSWORD中配置的账号密码登录。 - 进入「核心配置 → 用户」修改密码。
- 先配置网盘、CloudDrive2、TMDB、媒体服务器,再创建归档和同步任务。
部署前检查清单
| 检查项 | 为什么重要 |
|---|---|
LICENSE_KEY 已填写 | 未授权会导致服务无法正常使用 |
/config 已持久化 | 防止升级或重建容器后数据丢失 |
/CloudNAS 能在 FlowMedia 容器中看到文件 | 归档、同步、Webhook 都依赖该路径 |
/media 与 Emby 看到的是同一目录 | 否则 Emby 无法索引 FlowMedia 生成的 STRM |
/music 与 Navidrome 看到的是同一目录 | 否则 Navidrome 无法索引音乐软链接 |
| 6688 / 6689 / 6699 已放通 | 分别对应管理页面、Emby 反代、Navidrome 反代 |
| 代理可访问 TMDB / Telegram | 国内环境下刮削和订阅通常需要 |