前言
有时候我并不需要音乐,只想让房间里多一点不打扰思路的声音。写东西时放一点雨声,午休时听海浪,晚上看书时再叠一层篝火,这种环境音最大的好处不是“治愈”,而是它足够轻,不需要我一直选歌、切列表。Moodist 正好属于这类工具:页面简单,声音可以自由组合,打开浏览器就能按自己的节奏搭一组背景音。对我来说,真正有意思的不是音效有多花哨,而是能不能把这个页面放到自己的 NAS 上,换设备以后还照样打开。环境音这种东西一旦变成日常习惯,我反而不想每台设备都重新装一个 App、重新找同一组声音,能保留一个固定入口会更省心。
这次我直接在群晖 NAS 上部署 Moodist。先通过 SSH 登录192.168.50.142:22,切到管理员权限,在/volume1/docker/moodist下拉取镜像,再用 Docker 把宿主机8478映射到容器8080。局域网确认页面正常后,再安装群晖版 cpolar,通过随机公网地址验证外部访问,最后把地址切换成固定二级子域名moodist。整篇我会把“环境音页面”“群晖上的 Docker 服务”和“cpolar 提供的公网入口”分开写,不把远程访问本身说成 Moodist 的功能,也不把私有化部署扩大成对所有数据行为的绝对保证。
1. Moodist 更像一个“环境音调音台”
Moodist 的定位很简单:
把多种环境声音放到一个页面里,按自己的需求组合。
当前材料里提到的声音包括:
- 雨打屋檐;
- 篝火;
- 山间溪流;
- 咖啡馆低语;
- 海浪;
- 森林细雨;
- 雷雨等白噪音。
我更愿意把它当成一个轻量背景音工具,而不是音乐播放器。
场景也很自然:
写东西时放雨声,午休时切海浪,晚上阅读时再加一点篝火。
这种工具一旦放到 NAS 上,真正方便的地方不是“声音更多”,而是页面可以长期留在自己的环境里。
2. 先 SSH 登录群晖 NAS
这次直接从终端进入群晖。
执行:
sshshan@192.168.50.142-p22当前示例信息是:
- 用户名:
shan - IP:
192.168.50.142 - SSH 端口:
22
登录以后切到管理员权限:
sudo-i后面的目录创建、镜像拉取和容器启动都在这套环境里继续。
3. 给 Moodist 单独准备目录
先创建:
mkdir-p/volume1/docker/moodist再进入:
cd/volume1/docker/moodist当前目录是:
/volume1/docker/moodist
这一步主要是把后续 Moodist 相关操作集中到一个位置,方便自己管理。
不过当前 Docker 启动命令里没有额外 volume 映射,所以这个目录本身并没有在后面的docker run中被挂载进容器。
这两件事要分开理解。
4. 拉取 Moodist 镜像
执行:
dockerpull ghcr.io/remvze/moodist:latest如果当前群晖还没有 Docker,会出现无法直接使用 Docker 的情况。
这时回到群晖套件中心安装 Docker。
安装完成以后,就可以继续使用 Docker。
这里拉取的镜像明确写的是:
ghcr.io/remvze/moodist:latest
后面真正运行容器时,镜像写法会略有不同,我按当前步骤分别保留。
5. 启动 Moodist 容器
执行:
dockerrun-d\--restartunless-stopped\--namemoodist\-p8478:8080\ghcr.io/remvze/moodist这条命令里的关键参数是:
- 容器名:
moodist - 宿主机端口:
8478 - 容器端口:
8080 - 重启策略:
unless-stopped - 运行镜像:
ghcr.io/remvze/moodist
这里和前面的 pull 有一个细节差异:
前面显式拉取的是:
ghcr.io/remvze/moodist:latest
而docker run使用的是:
ghcr.io/remvze/moodist
两种写法都按当前步骤保留。
6. 先确认局域网页面能打开
部署完成以后,在浏览器访问:
http://群晖IP:8478
页面能正常出现以后,说明:
群晖 Docker → Moodist →8478:8080→ 局域网浏览器
这一层已经跑通。
到这里,我就可以在局域网里直接打开 Moodist,自由组合环境音。
如果只准备在家里使用,其实已经够了。
7. 为什么还要给 Moodist 加公网入口
真正让我想继续往下配的场景很简单:
在家里调好一套习惯,到了公司、通勤路上或者其他设备又想继续用。
这时候局域网地址:
http://群晖IP:8478
就不能直接访问。
所以后面再加入 cpolar。
cpolar 在这里负责的是:
把已经运行在
8478的 Moodist Web 页面提供到公网。
它不生成雨声、海浪或篝火,也不参与 Moodist 的声音组合逻辑。
8. 在群晖上安装 cpolar 套件
这里使用的是 cpolar 群晖套件。
先进入 cpolar 官网下载页面。
找到:
NAS 群晖
并进入下载。
接着根据 NAS 型号和群晖系统版本选择套件。
当前教程里通过群晖搜索助手看到的型号是:
DS3622xs+
回到下载页面选择对应型号和系统版本。
当前下载到的安装包名称是:
cpolar_x64-7.0_3.2.92-1.spk
这个文件名我按当前材料保留。
9. 在套件中心手动安装
回到群晖:
套件中心 → 手动安装
选择前面下载的 cpolar 套件。
继续确认安装。
点击完成。
安装结束以后,cpolar 会出现在已安装列表里。
点击 cpolar,可以进入软件信息页,并看到它的 Web UI 访问地址。
打开以后就能进入 cpolar 管理页面。
10. 先给 Moodist 建一个随机公网地址
登录 cpolar Web UI,进入:
隧道管理 → 创建隧道
当前参数为:
- 隧道名称:
moodist - 协议:
http - 本地地址:
8478 - 域名类型:随机域名
- 地区:
China Top
这里的本地地址对应前面的 Docker 宿主机端口:
8478
创建以后进入在线隧道列表。
用生成的公网地址访问。
Moodist 页面可以正常打开。
这一层真正验证的是:
Moodist8478→ cpolar HTTP 公网地址 → 外部浏览器。
11. 长期使用,再换固定二级子域名
随机地址更适合先验证连通性。
如果以后准备把 Moodist 当成一个长期保存的环境音入口,再换固定地址更方便收藏。
进入 cpolar 的预留页面。
选择:
保留二级子域名
当前参数是:
- 地区:
china top - 二级子域名:
moodist
预留以后,回到原来的隧道配置。
修改为:
- 域名类型:二级子域名
Sub Domain:填写预留成功的二级子域名- 地区:
China Top
点击更新。
更新以后再查看在线隧道列表。
随机公网地址已经变成固定二级子域名。
最后从任意设备浏览器访问固定地址,Moodist 页面仍然可以正常打开。
12. 我会怎么用这套 Moodist
对我来说,这套部署最适合的不是“做一个白噪音网站”,而是留一个自己随时能打开的声音入口。
比如:
深夜写东西:雨声 + 篝火。
午休:海浪 + 轻风。
读书:森林 + 溪流。
通勤:直接打开固定地址,不需要重新找 App。
这里最重要的是把三层角色分清:
Moodist:负责环境音页面和声音组合。
群晖 Docker:负责把 Moodist 服务跑起来。
cpolar:负责让外部设备能访问这个 Web 页面。
这样后面如果页面打不开,也能先判断到底是容器、端口还是公网入口出了问题。
总结
这次真正跑通的主线是:
群晖 NAS → SSHshan@192.168.50.142:22→sudo -i→/volume1/docker/moodist→ghcr.io/remvze/moodist:latest→ Docker8478:8080→ Moodist Web → cpolar 群晖套件 →DS3622xs+→cpolar_x64-7.0_3.2.92-1.spk→ 随机公网 →China Top→ 固定二级子域名moodist→ 外部浏览器访问。
几个细节需要继续留意:
- 前面 pull 使用
ghcr.io/remvze/moodist:latest,后面的docker run使用ghcr.io/remvze/moodist,当前步骤分别保留; - 虽然创建了
/volume1/docker/moodist,但现有docker run没有 volume 挂载,不能仅凭目录存在就认为容器数据已经持久化到这个路径; - 当前 cpolar 套件文件名是
cpolar_x64-7.0_3.2.92-1.spk,对应材料里的群晖环境; - cpolar 随机隧道和固定二级子域名都映射本地
8478; - 固定二级子域名示例继续使用
moodist; - cpolar 只负责公网入口,不参与 Moodist 的声音生成和组合;
- 原稿里“随时随地开发”“声音数据始终掌握在自己手中”这类与当前 Moodist 使用场景不完全对应或说得过满的表述,没有继续沿用。
对我来说,这类小工具最适合长期留在 NAS 上:它不需要天天维护,也不负责复杂业务,但在需要的时候打开一个地址,就能把熟悉的雨声、海浪和篝火重新放回来。技术链路跑通以后,剩下的事情反而很简单——选几种声音,让背景安静下来。