2026 NAS 摸鱼指南:追剧、听歌、看书全搞定
哈喽,艾瑞巴蒂我是生活爱好者。
春节假期在家玩嗨了,开工的第一天很多人上班都不适应,那就好好摸鱼吧!今天帮大家整理如何用NAS开启2026年的摸鱼之旅。
本文使用设备:威联通NAS。
一、影视项目
1、omnibox
omnibox是一款家庭影视项目,支持添加视频源,还支持观看视频直播。

代码
services:
omnibox: # 服务名(docker compose 内部标识)
image: docker.1ms.run/lampon/omnibox:latest # 镜像地址与标签:latest 表示拉取/使用最新版本
container_name: omnibox # 容器固定命名(不写则由 compose 自动生成)
restart: always # 重启策略:无论异常退出或重启 Docker 服务都会自动拉起容器
environment:
- TZ=Asia/Shanghai # 容器内时区(影响日志时间、定时任务等)
ports:
- "7023:7023" # 端口映射:宿主机7023 -> 容器7023(左边可自定义,右边通常是应用监听端口)
volumes:
- /share/Container/omnibox/data:/app/data # 挂载数据卷:宿主机目录 -> 容器目录(用于持久化数据)
# 说明:这一段 PanSou 也要加上并重新创建(你原注释保留)
networks:
- media-net # 将该服务加入外部网络 media-net(便于与同网络的其它容器互通)
networks:
media-net: # 网络名(需要与外部已存在的 Docker 网络同名)
external: true # external=true 表示使用“已存在”的外部网络,不由 compose 创建
2、kvideo
该项目拥有现代化UI,可以自行添加播放源。支持自动获取豆瓣的评分,以及影视的介绍。

代码
version: '3.8' # Compose 文件版本(用于决定可用语法特性)
services:
kvideo: # 服务名(compose 内部标识)
image: docker.1ms.run/kuekhaoyang/kvideo:latest # 镜像地址与标签:latest=最新版本
container_name: kvideo # 容器固定名称
restart: always # 重启策略:异常退出或 Docker 重启后自动拉起
ports:
- "3000:3000" # 端口映射:宿主机3000 -> 容器3000(左侧可按需改)
environment:
- ACCESS_PASSWORD=qnap # 访问密码:用于进入页面/管理(建议改复杂些)
volumes:
- /share/Container/container-station-data/appdata/kvideo:/app/data # 数据持久化:宿主机目录 -> 容器数据目录
network_mode: bridge # 网络模式:使用默认 bridge 网桥(容器在独立网段,通过端口映射对外提供服务)
3、E视界
它将影视资源聚合起来,支持搜索观看。

代码
services:
donggua-tv: # 服务名(compose 内部标识)
image: ghcr.io/ednovas/dongguatv:latest # 镜像地址(GHCR),latest=最新版本
container_name: donggua-tv # 容器固定名称
ports:
- "3006:3000" # 端口映射:宿主机3006 -> 容器3000(左侧可自行更改,右侧通常是程序监听端口)
environment:
- TMDB_API_KEY=your_api_key_here # TMDB 的 API Key:用于获取影视元数据(需替换为你自己的密钥)
- ACCESS_PASSWORD=qnap1234 # 访问密码:用于进入站点/管理(建议改成更复杂的)
- CACHE_TYPE=sqlite # 缓存/数据库类型:使用 sqlite(对应下面的 cache.db 文件)
# - TMDB_PROXY_URL=https://tmdb-proxy.your-name.workers.dev # 可选:TMDB 代理地址(网络受限时启用;不用就注释掉)
volumes:
- /share/Container/donggua/db.json:/app/db.json # 采集源配置文件:保存所有源的配置与规则(持久化)
- /share/Container/donggua/cache.db:/app/cache.db # sqlite 数据库文件:缓存/索引数据(持久化)
- /share/Container/donggua/cache/images:/app/public/cache/images # 图片缓存目录:海报/封面等缓存(持久化)
restart: always # 重启策略:容器异常退出或 Docker 重启后自动拉起
二、音乐项目
1、COCO 音乐
它支持在线听音乐,以及下载音乐,该项目的在下载音乐时是通过浏览器下载,不会直接下载到NAS。

镜像:ghcr.io/panda-995/coco-downloader:latest
2、sqmusic
sqmusic相对于COCO 来讲,不仅可以下载MP3格式的音乐,还支持flac,ape格式,音乐是下载到NAS里面。

version: '3.8'
services:
# 主应用服务:sqmusic_main
sqmusic_main:
# 使用的镜像,来自阿里云仓库
image: registry.cn-hangzhou.aliyuncs.com/sqdockler/simple_sq_music_plus:v3.0.28
container_name: sqmusic_main # 容器名称
environment:
- DB_IP=mysql # 数据库IP地址,指向mysql服务
- DB_PORT=3306 # 数据库端口
- DB_NAME=sqmusicv3 # 数据库名称
- DB_USERNAME=root # 数据库用户名
- DB_PASSWORD=sqmusicv3password # 数据库密码
volumes:
# 将宿主机的/music目录挂载到容器内的/share/Container/sqmusic/file目录
- /share/Container/sqmusic/file:/music
depends_on:
# 确保mysql服务在启动此容器之前已准备好并处于健康状态
mysql:
condition: service_healthy
networks:
- sq-app-network # 使用指定的网络
expose:
- "8099" # 仅暴露端口8099给其它容器,不映射到宿主机
restart: always # 容器崩溃后自动重启
# Web前端服务:sqmusic_web
sqmusic_web:
# 使用的镜像,来自阿里云仓库
image: registry.cn-hangzhou.aliyuncs.com/sqdockler/simple_sq_music_plus_web:v3.0.15
container_name: sqmusic_web # 容器名称
ports:
# 将容器的80端口映射到宿主机的8096端口
- "8096:80"
networks:
- sq-app-network # 使用指定的网络
depends_on:
# 确保sqmusic_main服务在启动此容器之前已启动
- sqmusic_main
restart: always # 容器崩溃后自动重启
# 数据库服务:mysql
mysql:
# 使用的MySQL镜像版本5.7
image: docker.1ms.run/mysql:5.7
container_name: sqmusic_mysql # 容器名称
environment:
# 设置数据库的root密码
MYSQL_ROOT_PASSWORD: sqmusicv3password
# 设置数据库名称
MYSQL_DATABASE: sqmusicv3
volumes:
# 将宿主机的/mysql_data目录挂载到容器内的/var/lib/mysql目录,存储数据库数据
- /share/Container/sqmusic/mysql_data:/var/lib/mysql
# 可以取消下面注释来使用Docker卷来持久化数据
# - sqmusic-db:/var/lib/mysql
networks:
- sq-app-network # 使用指定的网络
healthcheck:
# 检查MySQL服务是否健康,尝试ping数据库
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s # 每10秒检查一次
timeout: 5s # 每次检查最多等5秒
retries: 5 # 重试5次
restart: always # 容器崩溃后自动重启
# 网络配置
networks:
sq-app-network:
driver: bridge # 使用bridge驱动,适合容器之间的通信
# volumes:
# #sqmusic-db: # 如果使用Docker卷持久化数据库数据,可以取消注释
3、tunescout
它的音乐资源来源于油管和B站,甚至它可以下载B站中的视频。

代码
services:
tunescout:
image: docker.1ms.run/yuwancumian2009/tunescout-v2:latest
container_name: tunescout
restart: unless-stopped
ports:
- "8506:8503"
volumes:
# 音乐库目录,可以和Navidrome同目录,直接下载到这里面
- /share/Container/音乐:/music
# 下载暂存目录
- /share/Container/download:/download
# 歌单文件输出目录
- /share/Container/playlists:/playlists
# 配置文件与数据库,提前去目录创建!!
- /share/Container/tunescout/config.json:/app/config.json
- /share/Container/tunescout/library_cache.db:/app/library_cache.db
- /var/run/docker.sock:/var/run/docker.sock
environment:
- TZ=Asia/Shanghai
# 登录账户
- WEB_USERNAME=qnap
# 登录密码
- WEB_PASSWORD=qnap1234
4、道理鱼音乐
支持媒体库扫描、刮削、在线播放,同时支持有声书与音乐视频的播放。

代码
services:
postgres: # PostgreSQL 数据库服务(存储应用核心数据)
image: docker.1ms.run/postgres:16-alpine # Postgres 16(alpine 精简版)
container_name: daoliyu-postgres # 容器固定名称
restart: unless-stopped # 重启策略:除非手动停止,否则都会自动重启
environment:
POSTGRES_DB: "daoliyu" # 初始化创建的数据库名
POSTGRES_USER: "daoliyu" # 初始化创建的数据库用户
POSTGRES_PASSWORD: "daoliyupassword" # 数据库密码(建议改强密码/用 secrets 管理)
ports:
- "5433:5432" # 端口映射:宿主机5433 -> 容器5432(左侧改成5433是为了避免占用宿主机默认5432)
volumes:
- /share/Container/postgres:/var/lib/postgresql/data # 数据持久化:数据库文件存到宿主机目录
redis: # Redis 缓存/队列服务(提升性能、做缓存/会话/任务等)
image: docker.1ms.run/redis:7-alpine # Redis 7(alpine 精简版)
container_name: daoliyu-redis # 容器固定名称
restart: unless-stopped # 重启策略
volumes:
- /share/Container/redis:/data # 数据持久化:Redis 数据文件(如果开启持久化时有效)
backend: # 后端服务(Node.js API,连接 Postgres 和 Redis,管理媒体库)
image: docker.1ms.run/msmkls/daoliyu-backend:0.1.8 # 后端镜像版本 0.1.8
container_name: daoliyu-backend # 容器固定名称
restart: unless-stopped # 重启策略
depends_on:
- postgres # 依赖数据库先启动(不代表数据库一定已就绪,仅保证启动顺序)
- redis # 依赖 Redis 先启动
environment:
NODE_ENV: production # 运行环境:生产模式
DATABASE_URL: "postgresql://daoliyu:daoliyupassword@postgres:5432/daoliyu" # 数据库连接串:用服务名 postgres 作为主机名
APP_PORT: 4000 # 后端服务监听端口(容器内部)
LIBRARY_ROOT: "/data/media" # 媒体库根目录(容器内部路径)
REDIS_URL: "redis://redis:6379/0" # Redis 连接地址:用服务名 redis 作为主机名,使用 0 号库
volumes:
- /share/Container/backend-storage:/app/storage # 应用数据/持久化存储(例如封面、索引、上传等)
- /share/Container/音乐:/data/media # 音乐目录挂载到容器(作为媒体库根目录)
- /share/Container/有声书:/data/audiobooks # 有声书目录挂载
- /share/Container/音乐视频:/data/music-videos # 音乐视频目录挂载
- /share/Container/playlists:/data/playlists # 歌单文件目录挂载(导入/导出用)
frontend: # 前端服务(Web UI,提供网页访问入口)
image: docker.1ms.run/msmkls/daoliyu-frontend:0.1.8 # 前端镜像版本 0.1.8
container_name: daoliyu-frontend # 容器固定名称
restart: unless-stopped # 重启策略
depends_on:
- backend # 依赖后端先启动(保证启动顺序)
ports:
- "5173:8080" # 端口映射:宿主机5173 -> 容器8080(浏览器访问 http://NAS_IP:5173)
三、电子书
1、Calibre-Web
Calibre-Web是一款电子书管理工具,支持在线阅读。

代码
services:
calibre-web: # 服务名:Calibre-Web(电子书管理/在线阅读 Web 界面)
image: docker.20040311.xyz/linuxserver/calibre-web:latest # 镜像:linuxserver 维护的 calibre-web,latest=最新版本
container_name: calibre-web # 容器固定名称
environment:
- PUID=0 # 以哪个宿主机用户UID运行(0=root;更安全的做法是用实际用户如1000)
- PGID=0 # 以哪个宿主机用户组GID运行(0=root 组;更安全的做法是用实际用户组如1000)
- TZ=Asia/Shanghai # 容器时区(影响日志时间、计划任务等)
- DOCKER_MODS=linuxserver/mods:universal-calibre # 可选:安装/启用 Calibre 相关组件(便于格式转换等)
- OAUTHLIB_RELAX_TOKEN_SCOPE=1 # 可选:放宽 OAuth token scope 校验(用于某些 OAuth 登录兼容性)
volumes:
- /share/Container/calibre/data:/config # 配置持久化:数据库、设置、插件等(非常重要)
- /share/Container/calibre/library:/books # 书库目录:挂载电子书文件所在路径(Calibre 库或书籍目录)
ports:
- 8083:8083 # 端口映射:宿主机8083 -> 容器8083(左侧可按需改)
restart: unless-stopped # 重启策略:除非手动停止,否则容器退出会自动重启
2、Booksonic

镜像源:linuxserver/booksonic:latest
3、kavita
kavita支持格式比较多:漫画(cbr、cbz、zip/rar/rar5、7zip、原始图像),书籍(epub、pdf)

代码
version: '3.8' # Compose 文件版本(决定可用语法特性)
services:
kavita: # 服务名:Kavita(漫画/电子书/轻小说等媒体库管理与阅读)
image: docker.1ms.run/jvmilazz0/kavita:latest # 镜像地址与标签:latest=最新版本
container_name: kavita # 容器固定名称
volumes:
- /share/Container/kavita/manga:/manga # 漫画/图像类资源目录挂载到容器(供 Kavita 扫描入库)
- /share/Container/kavita/books:/books # 电子书/小说等资源目录挂载到容器
- /share/Container/kavita/config:/kavita/config # Kavita 配置与数据库持久化目录(非常重要)
environment:
- TZ=Asia/Shanghai # 容器时区(影响日志时间、定时任务等)
ports:
- "5006:5000" # 端口映射:宿主机5006 -> 容器5000(左侧可按需改,右侧为应用监听端口)
restart: unless-stopped # 重启策略:除非手动停止,否则容器退出会自动重启
