如何使用Docker轻松搭建高颜值无广告音乐播放器SPlayer随时随地听歌

news2025/1/16 18:37:39

前言

在快节奏的生活环境中,音乐成为了许多人放松和享受的重要方式。本文将介绍如何在Linux Ubuntu系统中使用Docker快速部署一款高颜值无广告的某抑云音乐播放器——SPlayer,并结合Cpolar内网穿透工具实现出门在外也能远程访问本地服务,随时畅享音乐。

SPlayer是一款设计简约但UI非常漂亮的开源音乐播放器。它可以登录某抑云账号,界面没有任何广告,非常清爽。在使用体验上,除了支持歌词显示、下载歌曲、歌单管理等基本功能外,还进行了移动端的基础适配,并支持MV与视频播放、主题自适应、自动签到等功能。

目前SPlayer已支持Windows、macOS和Linux平台,并且可以使用Docker部署Web版。本教程将在Ubuntu系统中使用docker-compose进行部署流程的展示。

1726741704078

1. 安装Docker

本教程操作环境为Linux Ubuntu系统,在开始之前,我们需要先安装Docker。

curl -fsSL https://get.docker.com -o get-docker.sh

然后再启动docker

sudo sh get-docker.sh

最后我们在docker容器中运行下 hello world 看一下是否安装成功。

sudo docker container run hello-world

可以看到出现了hello world,也就是说明我们已经安装docker成功,那么接下来就可以直接拉取Splayer镜像了。

image-20240910145208138

2. 创建并启动Splayer容器

接下来创建Splayer项目文件夹并编辑docker-compose.yml,内容如下:

mkdir splayer

然后进入该项目文件夹

cd splayer

使用nano创建docker-compose文件:

nano docker-compose.yml

在编辑器中输入下方代码保存退出:

version: '3.9'
services:
  splayer:
    image: imsyy/splayer:latest
    container_name: splayer
    restart: unless-stopped
    network_mode: bridge
    environment:
      - TZ= Asia/Shanghai
    ports:
      - '7899:7899'

然后执行下方命令启动容器运行:

sudo docker compose up -d

如需停止可以执行:

sudo docker compose down

OK,经过以上过程,Docker部署 Splayer 播放器就完成了,现在我们可以通过任意浏览器进行访问测试。

3. 本地访问测试

在浏览器输入 http://localhost:7899 即可,显示下图即为访问成功!

image-20240920104544553

点击右上角的登录按钮,可以选择扫码登录和验证码登录两种方式登录某抑云音乐账号:

image-20240920104803747

还可以选择主题颜色模式与全局设置:

image-20240920104907764

image-20240920104924749

登录后,可以在右侧菜单中查看你在某云播放器中喜欢的音乐,收藏,云盘,创建和搜藏的歌单:

在这里插入图片描述

双击歌曲播放后,可以点击喜欢旁边的三横线标志,使用添加歌曲到歌单与查看评论等功能:

image-20240920105640075

双击歌曲播放条,可以全屏播放歌曲,点击右上角按钮可恢复正常界面:

在这里插入图片描述

全程无广,非常清爽!

4. 公网远程访问本地Splayer

不过我们目前只能在本地局域网内使用手机电脑等设备访问刚刚使用docker部署的播放器,如果出门在外,想要远程访问在家中部署的Splayer听歌,应该怎么办呢?我们可以使用cpolar内网穿透工具来实现无公网ip环境下的远程访问需求。

4.1 内网穿透工具安装

下面是安装cpolar步骤:

Cpolar官网地址: https://www.cpolar.com

使用一键脚本安装命令

sudo curl https://get.cpolar.sh | sh

在这里插入图片描述

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudo systemctl status cpolar

image-20240801132301959

Cpolar安装和成功启动服务后,在浏览器上输入ubuntu主机IP加9200端口即:【http://localhost:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

image-20240801133735424

4.2 创建远程连接公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了:Splayer 注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:7899
  • 域名类型:选择随机域名
  • 地区:选择China VIP

image-20240920110301487

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了两个公网地址(可在高级设置中配置只生成http或https一条公网地址):

在这里插入图片描述

然后就可以在其他电脑或手机平板(异地)上,使用上边任选其一的公网地址在浏览器中访问即可。

image-20240920110806726

可以看到成功实现使用公网地址异地远程访问本地部署的 Splayer 播放器!但需要重新登录某云账号。

小结

为了方便演示,我们在上边的操作过程中使用了cpolar生成的公网地址隧道,其公网地址是随机生成的。这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在24小时内会发生随机变化,更适合于临时远程测试时使用。

如果有长期远程访问本地 Splayer 播放器 或者其他本地部署的服务的需求,但又不想每天重新配置公网地址,还想地址好看又好记并体验更多功能与更快的带宽,那我推荐大家选择使用固定的二级子域名方式来远程访问。

4.3 使用固定公网地址远程访问

登录cpolar官网,点击左侧的预留,选择保留二级子域名,地区选择China VIP,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称,这里我填写的是mysplayer,大家也可以自定义喜欢的名称。

image-20240920111120893

保留成功后复制保留成功的二级子域名的名称:mysplayer,返回登录Cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道 splayer,点击右侧的编辑:

image-20240920111255895

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名:mysplayer
  • 地区:选择China VIP

点击更新(注意,点击一次更新即可,不需要重复提交)

1726802258301

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名:

image-20240920111905814

然后使用这个固定公网地址在浏览器访问,可以看到访问成功,这样即使出门在外也可以随时随地使用这个网址来远程访问本地部署的 Splayer 播放器来听音乐了!

image-20240920112133816

通过简单的步骤,我们成功在Ubuntu系统上部署了SPlayer,并使用Cpolar实现了远程访问。随时随地畅享你的个人音乐库。SPlayer不仅界面美观、功能齐全,还能让你摆脱广告干扰,享受纯粹的音乐体验。希望这篇教程对你有所帮助,祝你音乐生活更加丰富多彩!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2256532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# Decimal

文章目录 前言1. Decimal 的基本特性2. 基本用法示例3. 特殊值与转换4. 数学运算示例5. 精度处理示例6. 比较操作示例7. 货币计算示例8. Decimal 的保留小数位数9. 处理 Decimal 的溢出和下溢10. 避免浮点数计算误差总结 前言 decimal 是 C# 中一种用于表示高精度十进制数的关键…

【理论·专业课】第三次作业

第1题(存储管理_内存碎片) 请指出内部碎片与外部碎片的区别。 ANS: 内部碎片是分配给进程但未被进程使用且无法被其他进程利用的内存空间 外部碎片是内存中因进程分配释放内存形成的不连续小块,虽总和够但因不连续无…

最新的springboot 3.x的支持s3协议的2.x方法的minio上传文件方法

拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/minio:latest运行命令 docker run -d \--name minio \-p 10087:9000 \-p 10088:9001 \-e MINIO_ROOT_USERminioadmin \-e MINIO_ROOT_PASSWORDY6HYraaphfZ9k8Lv \-v /data/minio/data:/data \-v /data/…

cocos creator接入字节跳动抖音小游戏JSAPI敏感词检测(进行文字输入,但输入敏感词后没有替换为*号)

今天更新了某个抖音小游戏的版本,增加了部分剧情,半天过后一条短信审核未通过,emmm…抖音总是能给开发者惊喜…打开电脑看看这次又整什么幺蛾子… 首先是一脸懵逼,后端早已接入了官方的内容安全检测能力了(https://de…

Origin快速拟合荧光寿命、PL Decay (TRPL)数据分析处理-方法二

1.先导入数据到origin 2.导入文件的时候注意:名字短的这个是,或者你打开后看哪个里面有800,因为我的激光重频是1.25Hz(应该是,不太确定单位是KHz还是MHz),所以对应的时间是800s。 3.选中两列直接…

17. 面向对象的特征

一、面向对象的三大特征 面向对象的三大特征指的是 封装、继承、多态。 封装(encapsulation,有时称为数据隐藏)是处理对象的一个重要概念。从形式上看,封装就是将数据和行为组合在一个包中,并对对象的使用者隐藏具体的…

Apache Dolphinscheduler可视化 DAG 工作流任务调度系统

Apache Dolphinscheduler 关于 一个分布式易扩展的可视化 DAG 工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。 DolphinScheduler 的主要特性如下: 易于部署,提供四种部署方式&am…

第二部分:基础知识 6.函数 --[JavaScript 新手村:开启编程之旅的第一步]

JavaScript 函数是可重用的代码块,用于执行特定任务。函数可以接受参数(输入数据),并且可以返回一个值。JavaScript 提供了多种定义函数的方式,下面将详细介绍这些方式,并给出一些示例。 1. 函数声明 下面…

我眼中的“懂重构”(一)

初识重构 2017年的时候,领导让我看公司的一本书《重构——改善代码的既有设计》,这是一本JAVA版本的,前后看了2遍。那时候看书因为不懂看的格外仔细。我只是那时候不懂,然而多年后的今天我仍然发现很多人对重构充满误解。在刚进入…

机器学习详解(3):线性回归之代码详解

文章目录 1 数据预处理2 构建线性回归模型并绘制回归线初始化方法前向传播:forward_propagation代价函数:cost_function反向传播:backward_propagation参数更新:update_parameters训练方法:train代码运行结果 3 使用Py…

基于openzeppelin插件的智能合约升级

一、作用以及优点 部署可升级合约,插件自动部署proxy和proxyAdmin合约,帮助管理合约升级和交互;升级已部署合约,通过插件快速升级合约,脚本开发方便快捷;管理代理管理员的权限,只有proxyAdmin的…

游戏引擎学习第36天

仓库 :https://gitee.com/mrxiao_com/2d_game 回顾之前的内容 在这个程序中,目标是通过手动编写代码来从头开始制作一个完整的游戏。整个过程不使用任何库或现成的游戏引擎,这样做的目的是为了能够全面了解游戏执行的每一个细节。开发过程中&#xff0…

试题转excel;pdf转excel;试卷转Excel,word试题转excel

一、问题描述 一名教师朋友,偶尔会需要整理一些高质量的题目到excel中 以往都是手动复制搬运,几百道题几乎需要一个下午的时间 关键这些事,枯燥无聊费眼睛,实在是看起来就很蠢的工作 就想着做一个工具,可以自动处理…

16-01、JVM系列之:内存与垃圾回收篇(一)

JVM系列之:内存与垃圾回收篇(一) ##本篇内容概述: 1、JVM结构 2、类加载子系统 3、运行时数据区之:PC寄存器、Java栈、本地方法栈一、JVM与JAVA体系结构 JAVA虚拟机与JAVA语言并没有必然的联系,它只是与特…

2030. gitLab A仓同步到B仓

文章目录 1 A 仓库备份 到 B 仓库2 B 仓库修改main分支的权限 1 A 仓库备份 到 B 仓库 #!/bin/bash# 定义变量 REPO_DIR"/home/xhome/opt/git_sync/zz_xx_xx" # 替换为你的本地库A的实际路径 REMOTE_ORIGIN"http://192.168.1.66:8181/zzkj_software/zz_xx_xx.…

服务器上部署前端页面-实现IP+端口/index.html在线访问你的网页

首先一点,不管是那个框架开发的网页前端,最后都需要Build,构建完毕以后都是原始的HTML CSS JS 三样文件! 所以不管用原始的三剑客(HTML CSS JS)开发的前端还是用各类框架开发的前端界面(只是让开发简单…

树莓派 PICO RP2040 MACOS 使用

文章参考: Developing in C on the RP2040: macOS | Wellys Dev 这里会提示报错:ln: /bin/picotool: Operation not permitted 参考:Mac ln命令报错:Operation not permitted_ln operation not permitted-CSDN博客 放在 usr/lo…

顶顶通电话机器人开发接口对接大语言模型之实时流TTS对接介绍

大语言模型一般都是流式返回文字,如果等全部文字返回了一次性去TTS,那么延迟会非常严重,常用的方法就是通过标点符号断句,返回了一句话就提交给TTS。随着流TTS的出现,就可以直接把大模型返回的文字灌给流TTS&#xff0…

git使用-创建本地仓库、绑定远程仓库

文章目录 1. 创建git仓库2. commit提交到本地3. 创建远程仓库4. 关联远程仓库5. push代码至远程仓库6. 完成初始化 git作为版本控制工具,在开发过程中经常使用到。这里以github为例,简单介绍下仓库的创建及绑定,方便忘记了能快速的想起来。 1…

JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)

目录 JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码) 一、为什么要使用Array.sort() 二、Array.sort() 的使用与技巧 1、基础语法 2、返回值 3、…