听歌截图太普通?我把MusicCard部署到极空间,把歌曲做成随时可开的音乐海报页

前言

有时候听到一首歌,真正想分享的并不只是歌名。封面、歌手、某一句歌词,再加上当时的情绪,放在一起才更像完整的"听歌记录"。但直接截播放器页面往往信息太杂,自己再去排版又显得麻烦。

MusicCard做的事情比较简单:把歌曲封面、歌名、歌手和歌词整理成一张视觉卡片。相比专门在电脑上装设计软件,它更适合放在NAS里长期运行,需要时打开浏览器直接使用。

这次我把MusicCard部署到极空间:先开启SSH和Docker,拉取镜像,再分别保留Docker CLI和Docker Compose两种启动方式,把容器3000端口映射到宿主机9500。

本地页面确认能正常打开以后,再继续给9500配置外部访问入口,从随机公网地址切换到固定二级子域名。整篇重点不是把NAS写成"万能创作机器",而是把极空间 → Docker → MusicCard → 9500 → 远程访问这条链完整跑通。

这类小工具其实很适合NAS:它不需要单独占一台电脑,也不用每次重新安装,服务一直跑着就行。真正需要做的只是把容器、端口和访问入口整理清楚,后面想用的时候直接打开页面。

而且以后如果继续往极空间里增加类似的小应用,也可以沿用同样的部署和远程访问思路。

1 MusicCard适合解决什么问题

MusicCard的定位很直接:

把一首歌的信息整理成一张适合分享的音乐海报。

相比直接截播放器界面,它更适合把:

  • 歌曲封面;
  • 歌名;
  • 歌手;
  • 歌词;
  • 视觉排版;

集中到一张卡片里。

如果本身已经有极空间或其他NAS,把这种小工具放在Docker里长期运行,会比每次临时找在线工具更方便。

2 这篇实际要跑通哪些内容

整个流程分成三段。

第一段:

极空间 → SSH → Docker

第二段:

Docker → MusicCard → 9500

第三段:

外部浏览器 → 公网地址 → MusicCard:9500

先把本地页面跑通,再处理远程访问。

3 先开启极空间SSH

进入极空间系统设置:

继续打开对应设置:

按页面提示输入:

知晓风险

然后填写账号密码并启用SSH:

4 先测试SSH能不能连上

从电脑终端连接极空间:

输入密码:

连接成功:

做到这里,可以确认后面能够通过命令行继续管理Docker。

5 打开极空间Docker

进入Docker:

可以把Docker添加到桌面,后面更容易找到:

确认:

然后选择Docker数据存放的硬盘:

加载完成:

6 验证Docker服务状态

执行:

shell 复制代码
systemctl status docker.service

结果:

确认Docker服务正常以后,再继续部署MusicCard。

7 部署前查看Docker版本

按当前步骤执行:

shell 复制代码
docker -v

结果:

这一步主要用于确认当前Docker环境可用。

8 拉取MusicCard镜像

执行:

shell 复制代码
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/musiccard

结果:

本次使用的镜像地址为:

registry.cn-hangzhou.aliyuncs.com/jeson/musiccard

9 创建MusicCard目录

执行:

shell 复制代码
mkdir -p /data/musiccard          
cd /data/musiccard

结果:

这次目录使用:

/data/musiccard

后面的Compose文件也放在这里。

10 方法一:直接用docker run启动

如果只想快速启动,可以执行:

shell 复制代码
docker run -d \
  --restart always \
  --name musiccard \
  -p 9500:3000 \
  registry.cn-hangzhou.aliyuncs.com/jeson/musiccard

这里比较关键的参数是:

  • 容器名:musiccard
  • 宿主机端口:9500
  • 容器端口:3000
  • 重启策略:always

启动结果:

所以后面浏览器真正访问的是:

极空间IP:9500

11 方法二:使用Docker Compose

如果更习惯用Compose维护,也可以在部署目录创建:

docker-compose.yml

内容保持如下:

shell 复制代码
 vim docker-compose.yml
 version: '3.9' 
 services:     
     jeson:         
         image: registry.cn-hangzhou.aliyuncs.com/jeson/musiccard         
         ports:             
             - '9500:3000'         
         container_name: musiccard         
         restart: always 

然后启动:

shell 复制代码
 docker-compose up -d

结果:

两种方式的目的相同:

让MusicCard容器运行,并把3000映射到9500。

实际部署时选一种即可,不需要同时重复启动两套容器。

12 先验证局域网9500

浏览器访问:

http://极空间IP:9500

页面:

能够正常打开以后,可以确认:

浏览器 → 极空间9500 → MusicCard容器3000

这一层已经跑通。

13 本地使用到这里已经完成

如果MusicCard只准备在家里局域网使用,到这里已经够了。

以后只需要打开:

极空间IP:9500

就能进入MusicCard页面。

只有确实需要:

  • 外出时使用;
  • 手机在其他网络访问;
  • 给其他设备保留统一入口;

才需要继续配置公网访问。

14 安装cpolar

执行:

shell 复制代码
sudo curl https://get.cpolar.sh | sh

安装:

然后查看服务状态:

shell 复制代码
sudo systemctl status cpolar

结果:

确认cpolar正常运行以后,再进入Web管理页面。

15 打开cpolar管理界面

通过:

极空间IP:9200

访问cpolar Web UI:

登录以后,后面的隧道都在这里配置。

16 给MusicCard的9500创建HTTP隧道

创建参数:

  • 隧道名称:music
  • 协议:HTTP
  • 本地地址:9500
  • 域名类型:随机域名
  • 地区:China Top

配置页面:

这里映射的是MusicCard实际对外提供服务的9500端口。

17 先用随机地址验证外网访问

创建成功以后进入在线隧道列表:

从其他网络打开生成的公网地址:

页面能够正常打开以后,可以确认:

外部浏览器 → 公网地址 → 极空间9500 → MusicCard

已经跑通。

18 随机域名适合测试

随机地址的价值主要是:

先确认外网能不能访问MusicCard。

如果只是偶尔使用,做到这里已经够了。

如果想长期把它保存在手机或浏览器书签里,再继续配置固定二级子域名。

19 保留固定二级子域名

进入预留页面:

这次示例使用:

musicc

作为二级子域名名称:

实际使用时,以自己账号里成功保留的名称为准。

20 编辑MusicCard隧道

回到:

隧道管理 → 隧道列表

找到对应隧道:

进入编辑以后修改:

  • 域名类型:二级子域名;
  • Sub Domain:填写已经保留的名称;
  • 地区:China Top。

更新:

21 确认固定地址已经生效

重新进入在线隧道列表:

可以看到原来的随机地址已经切换成固定二级子域名。

22 再从外部设备打开一次

使用固定地址访问:

页面能够正常进入以后,固定远程入口也完成。

现在整条链变成:

手机 / 平板 / 其他电脑 → 固定公网地址 → 极空间9500 → MusicCard

23 Docker CLI和Compose应该怎么选

这篇同时保留了两种部署方法。

如果只是临时测试:

docker run更直接。

如果准备长期维护:

Docker Compose更容易集中保存配置。

重点不是哪一种"更高级",而是不要在同一台机器上无意中重复启动两个占用相同9500端口的容器。

24 远程访问解决的只是"怎么打开页面"

cpolar负责的是:

让外部设备能够访问极空间里的MusicCard。

它不会改变MusicCard本身的功能,也不会替代应用自己的权限管理。

如果后面MusicCard保存了私人内容、配置或其他数据,仍然应该根据应用自身能力控制访问范围。

25 这套方案真正适合什么人

比较适合:

  • 已经有极空间或NAS;
  • 喜欢用Docker部署小工具;
  • 经常做音乐分享;
  • 想把MusicCard长期放在自己的设备上;
  • 希望手机和电脑都能使用同一个入口。

如果只是偶尔生成一次海报,用本地9500已经够用。

如果确实需要跨网络访问,再增加固定公网地址会更方便。

26 最后把完整技术链重新看一遍

基础环境:

极空间 → SSH → Docker

部署:

MusicCard镜像 → 容器3000

端口映射:

9500:3000

本地访问:

极空间IP:9500

随机远程:

公网随机地址 → 9500

固定远程:

二级子域名 → 9500

实际完成:

  • SSH开启;
  • Docker启用;
  • Docker状态检查;
  • MusicCard镜像拉取;
  • /data/musiccard目录;
  • docker run部署;
  • Docker Compose部署方法;
  • 9500本地访问;
  • cpolar安装;
  • 随机公网访问;
  • 固定二级子域名;
  • 外部设备访问。

这样MusicCard才真正从一个本地Docker容器,变成可以长期保留在NAS里的音乐海报工具。

总结

这次真正跑通的是一条完整的MusicCard部署链:先在极空间开启SSH和Docker,拉取MusicCard镜像,再把容器3000端口映射到宿主机9500,通过浏览器确认本地页面能够正常打开。

部署方式同时保留了docker run和Docker Compose两套方法。前者适合快速启动,后者更适合长期维护配置;实际使用时选择一种即可,不需要为了"更完整"同时运行两份相同服务。

远程部分是在本地页面已经正常以后继续增加的能力。随机公网地址先验证链路,固定二级子域名再解决长期入口变化的问题。

对于本身就有NAS的人来说,MusicCard的价值不是让NAS承担复杂设计工作,而是把一个小而明确的音乐海报工具长期放在自己的设备上,需要时电脑、手机或平板都能从同一个入口打开。

相关推荐
sqc233sqc1 小时前
第 J8 周:ResNeXt-50 算法解析
人工智能·算法
tianbin9111 小时前
AI 应用开发避坑,API 中转站如何解决多模型接口适配难题
ai
哈__1 小时前
260+异构同步链路:DDL语法自动翻译在大规模数据同步中的实现原理
人工智能·自然语言处理·机器翻译
安然讲ai1 小时前
企业AI经营系统如何搭建?
ai
虎鲸不是鱼1 小时前
【虎鲸进化论 13】CI/CD:它在服务器上铺了条流水线
服务器·人工智能·ci/cd·大模型·自进化agent
高频因子挖掘机1 小时前
实时行情与分钟 K 线如何协同?Python 量化系统的数据管道设计实践
后端·github·api
gopher95111 小时前
RUST:错误处理 thiserror 详解
开发语言·后端·rust
mldong1 小时前
八种语言的工作流引擎,我用 6 张 UML 图画完了
后端·架构
voipmaker1 小时前
融合通信调度录音的困局:基于 MediaX 网关实现对讲语音 AI 事件萃取
人工智能·ai·音视频·语音识别·实时音视频·信息与通信·iot