news 2026/9/26 6:18:13

想随时听自己的环境音?用 Moodist + 群晖搭一个可远程打开的白噪音页面

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
想随时听自己的环境音?用 Moodist + 群晖搭一个可远程打开的白噪音页面

前言

有时候我并不需要音乐,只想让房间里多一点不打扰思路的声音。写东西时放一点雨声,午休时听海浪,晚上看书时再叠一层篝火,这种环境音最大的好处不是“治愈”,而是它足够轻,不需要我一直选歌、切列表。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 上:它不需要天天维护,也不负责复杂业务,但在需要的时候打开一个地址,就能把熟悉的雨声、海浪和篝火重新放回来。技术链路跑通以后,剩下的事情反而很简单——选几种声音,让背景安静下来。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 6:17:09

DeepSeek系列论文系统梳理:从MLA到FP8训练的技术演进与工程实践

1. 为什么值得系统梳理DeepSeek系列论文从2024年下半年开始,DeepSeek这个名字在技术圈出现的频率越来越高。但很多人对它的认知停留在“一个便宜好用的大模型API”或者“又一个国产开源模型”这个层面,实际上DeepSeek团队从2023年成立到现在,…

作者头像 李华
网站建设 2026/9/26 6:16:45

免费降AI率工具实测:从AIGC检测原理到论文改写避坑指南

最近实验室几乎人人都在聊同一件事:写论文用AI五分钟,降AI率要用一整天。我一开始是不信的,直到自己连着两篇课程论文被学校AIGC检测标红,才意识到这关躲不过去。市面上的免费降AI率工具多到能绕操场一圈,每个广告都写…

作者头像 李华
网站建设 2026/9/26 6:16:38

C语言switch-case完全指南:语法、执行逻辑、实战场景与避坑技巧

我第一次用C语言写多分支逻辑,写的是长长一串else if。当时觉得挺顺手的,直到代码被前辈看见,对方说:这种等值匹配的情况,用switch-case会清晰得多。我嘴上没服气,心里却记下了。后来写多分支写多了才明白&…

作者头像 李华
网站建设 2026/9/26 6:16:18

AI Coding面试高频题全解析:从快排到Redis分布式锁

这两年我做技术面试官,陆续面过不少投AI Coding方向的候选人。简历上清一色写着“熟练使用AI编程助手”,结果一到笔试和代码面,水平落差比想象中大。这篇内容是我整理的真实AI Coding面试题合集,每道题都带实现和配套解法&#xf…

作者头像 李华
网站建设 2026/9/26 6:15:20

DeepSeek+区块链:工业制造全生命周期数据防篡改追溯方案

简介:这份891页的DeepSeek工业制造全生命周期数据防篡改追溯方案,面向工业数据治理、区块链应用开发及智能制造系统设计人员,系统解决设备数据采集、生产执行、质量检测、供应链协同等环节的防篡改与快速溯源难题。资源共一个PDF文档&#xf…

作者头像 李华