当前位置: 首页 > news >正文

如何使用群晖NAS的Audio Station结合内网穿透实现远程访问本地曲库

文章目录

    • 本教程解决的问题是:
    • 按照本教程方法操作后,达到的效果是
    • 本教程使用环境:
    • 1 群晖系统安装audiostation套件
    • 2 下载移动端app
    • 3 内网穿透,映射至公网

image-20230920140707113

很多老铁想在上班路上听点喜欢的歌或者相声解解闷儿,于是打开手机上的某雅软件和某音乐软件点进去一看:

image-20230920134832853 image-20230920135500146

奈何目前移动端的娱乐软件广告很烦人,不知不觉就会点进去而且不好退出,甚至开了会员还要看广告,各种营销词汇让老铁们破了财又不能消灾,那怎么解决这个问题呢?

image-20230920140005744

本教程解决的问题是:

不用流氓软件,如何在户外使用手机听下载到家中电脑里的音乐文件呢?

按照本教程方法操作后,达到的效果是

公网环境下(连接其他局域网/流量)使用 移动端 (ios,安卓,ipad等)都可以通过群晖audiostation读取存储在家中电脑硬盘上的音频文件(mp3等格式)。

本教程使用环境:

首先,本教程基于群晖生态,所以需要安装配置黑群晖或已拥有正版群晖nas

已经购买正版群晖nas的大佬们请移步至第2章:

没有群晖的 小白/白嫖党,我有 一键安装群晖虚拟机内网穿透 教程如下:

在校学生如何白嫖黑群晖虚拟机和内网穿透,实现海量资源的公网访问?(小白专用) - cpolar 极点云

如果您 已经购买正版群晖,但是对 quickconnect带宽不满意 的用户,可使用专业的内网穿透软件实现快速读取局域网内资源,怎样在群晖系统中安装内网穿透软件详见:

如何在群晖系统中安装cpolar(群晖7.X版) - cpolar 极点云

1 群晖系统安装audiostation套件

按照上面教程打开群晖虚拟机/使用正版群晖后:

打开套件中心:

image-20230912100519972

搜索并安装audiostation:

image-20230919175543261

安装后,打开filestation:

image-20230919175842022

群晖系统自动创建了 music文件夹

image-20230919175937172

此时我们将本地音频文件导入至 music 文件夹:

image-20230919175951322

上传后,点击 **所有音乐 ** 即可显示我们上传的音频文件

image-20230920095131080

双击就可播放:

image-20230920095159769

2 下载移动端app

想要在户外访问,就要下载群晖的移动端软件:

在应用商店下载 DSaudio

Screenshot_20230920-095529_Google Play Store

打开后,进入登陆页面:

Screenshot_20230920-095550_DS audio

输入:

  1. 群晖的本地ip
  2. 群晖账号
  3. 群晖密码
Screenshot_20230920-101234_DS audio

点击 播放列表

Screenshot_20230920-101413_DS audio Screenshot_20230920-101435_DS audio

成功加载我们上传的音频文件:

Screenshot_20230920-101452_DS audio

双击 即可播放

Screenshot_20230920-101545_DS audio

3 内网穿透,映射至公网

想要在户外访问本地资源,就需要内网穿透软件,这里我们可以使用免费不限流量的cpolar,如何安装cpolar请参考:

如何在群晖系统中安装cpolar(群晖7.X版) - cpolar 极点云

安装完毕后,打开cpolar套件,点击右下角 :9200的局域网地址:

image-20230919133650364

默认浏览器会打开cpolar webui界面:

image-20230919133714878

登录进去后,点击左侧仪表盘的隧道管理——创建隧道,我们来创建一条用于映射nas局域网地址到公网的隧道,

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
  • 协议:选择NAS群晖
  • 本地地址:5000
  • 域名类型:随机域名
  • 地区:选择China(免费版选择China,付费版可选择china vip)

点击创建

cpolar免费版支持随机域名(24小时变化,第4章我们会讲解如何固定地址);

image-20230919113148847

下一步我们 点击 在线隧道列表:

image-20230919112247942

复制这个公网链接到浏览器:

image-20230919133738225

打开网址,映射成功:

image-20230919133800080

要注意的是,以上步骤使用的是随机临时端口地址,所生成的公网地址为随机临时地址,该公网地址24小时内会随机变化。我们接下来为其配置固定的端口地址,该地址不会变化,设置后将无需每天重复修改地址。

配置固定公网地址需要将cpolar升级到专业版套餐或以上。

登录cpolar官网,点击左侧的预留,找到保留的tcp地址,我们来为我的世界保留一个固定tcp地址:

  • 地区:选择US
  • 描述:即备注,可自定义

点击保留

image-20230919141329495

保留成功后提示:

image-20230919141352734

回到webui:

http://localhost:9200/#/tunnels/list

隧道-编辑

image-20230919141707004

二级子域名

image-20230919141617328

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复(我们这里保留原样)
  • 协议:选择NAS群晖
  • 本地地址:5000
  • 域名类型:二级子域名
  • 地区:选择US

点击创建

还是回到在线隧道列表,复制这个有二级子域名的 固定 公网访问地址:

image-20230919142210913

app 打开后粘贴生成的 固定公网地址

输入群晖系统的 用户名 密码

Screenshot_20230920-113749_DS audio

成功登陆:

Screenshot_20230920-113821_DS audio

点击 播放列表 后,就能看到我们上传的 mp3文件:

image-20230920131858551

点击即可播放:

image-20230920131912513

固定地址登陆群晖audiostation的全部步骤已经操作完毕,接下来我们就可以随时随地听存储在个人电脑上的歌曲,相声啦!

相关文章:

如何使用群晖NAS的Audio Station结合内网穿透实现远程访问本地曲库

文章目录 本教程解决的问题是:按照本教程方法操作后,达到的效果是本教程使用环境:1 群晖系统安装audiostation套件2 下载移动端app3 内网穿透,映射至公网 很多老铁想在上班路上听点喜欢的歌或者相声解解闷儿,于是打开手…...

要在CentOS中安装Docker

要在CentOS中安装Docker,请按照以下步骤进行操作: 首先,确保系统已更新到最新版本。运行以下命令: sudo yum update接下来,安装需要的软件包以允许使用HTTPS进行软件包下载。运行以下命令: sudo yum ins…...

Android Gldie复用只取之前decode过的缓存resource,Kotlin

Android Gldie复用只取之前decode过的缓存resource,Kotlin import android.graphics.Bitmap import android.os.Bundle import android.util.Log import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.life…...

EasyExcel实现动态表头功能

EasyExcel实现动态表头功能 开发过程中,大部分都会使用到导出报表功能,目前阶段会用得有 poi导出(暂无), easyexcel导出(官方文档,https://easyexcel.opensource.alibaba.com/docs/current/&am…...

Python | 安装、环境配置及包的安装

Python | 安装、环境配置及包的安装 一、前言二、python安装及编辑器配置2.1 python安装2.2 python调试2.3 python编辑器 | PyCharm2.3.1 PyCharm下载2.3.2 PyCharm安装2.3.3 PyCharm启动界面2.3.4 PyCharm初步设置2.3.5 PyCharm环境配置(含Python Interpreter配置)2.3.5.1 New…...

CentOS 7 安装 JDK17(注意版本号要与自己的版本一致)

查看是否有自带的 JDK java -versionrpm -qa | grep jdk卸载自带 JDK rpm -e --nodeps [name] # 如 rpm -e --nodeps java-1.8.0-openjdk-1.8.0.242.b08-1.el7.x86_64查看自带 JDK 是否卸载干净 java -versionrpm -qa | grep jdk在 oracle 官网下载自己所需 JDK 版本&#x…...

JavaScript 数组操作

JavaScript 中的数组提供了各种操作方法,包括增加、删除、修改、查找、排序、遍历、去重和转换等。以下是一些常用的数组操作方法: 增加元素 push(element1, element2, …, elementN): 将一个或多个元素添加到数组的末尾,并返回新数组的长度…...

idea使用lombok编译问题

idea编译报错问题如下: java: You arent using a compiler supported by lombok, so lombok will not work and has been disabled.Your processor is: com.sun.proxy.$Proxy26Lombok supports: OpenJDK javac, ECJ解决方案:在idea配置中File->Setti…...

GoLong的学习之路(番外)如何使用依赖注入工具:wire

我为什么要直接写番外呢?其原因很简单。项目中会使用,其实在这里大家就可以写一些项目来了。 依赖注入的工具本质思想其实都大差不差。无非控制反转和依赖注入。 文章目录 控制反转为什么需要依赖注入工具 wire的概念提供者(provider&#x…...

【pyspider】爬取ajax请求数据(post),如何处理python2字典的unicode编码字段?

情景:传统的爬虫只需要设置fetch_typejs即可,因为可以获取到整个页面。但是现在ajax应用越来越广泛,所以有的网页不能用此种爬虫类型来获取页面的数据,只能用slef.crawl()来发起http请求来抓取数据。 直接上例子: 可以…...

torch.cumprod实现累乘计算

cumprod取自“cumulative product”的缩写,即“累计乘法”。 数学公式为: y i x 1 x 2 x 3 . . . x i y_ix_1\times{x_2}\times{x_3}\times{...}\times{x_i} yi​x1​x2​x3​...xi​ 官方链接:torch.cumprod 用法: impo…...

设计模式之迭代器模式

什么是迭代器模式 迭代器模式(Iterator pattern)是一种对象行为型设计模式,它提供了一种方法来顺序访问聚合对象中的元素,而又不暴露该对象的内部表示,同时也可以将迭代逻辑与聚合对象的实现分离,增强了代码…...

使用SSH ,让windows和linux互通

简介 SSH 是一种安全网络协议,旨在让客户端和服务器之间进行安全的数据传输。SSH 的核心思想是利用公钥加密技术和共享密钥加密技术相结合的方式,使客户端和服务器之间建立起安全的连接。 当客户端发起连接请求时,服务器会对客户端进行身份验…...

常用设计模式——策略模式

策略模式是什么 策略模式(Strategy):针对一组算法,将每一个算法封装起来,从而使得它们可以相互替换。 比如我们一个软件的会员等级,每一个等级都会有对应的一些等级权益,那么每一个等级权益就…...

牛客网 CM11.链表分割

目录 1.解题思路2.代码实现 1.解题思路 此题目思路相对简单,利用双指针,一个指针指向小于val的,一个指针指向大于等于val的,但实现起来,如果仅仅使用单链表,那么还需特别判断第一个指针是否为空从而特意做…...

[iOS开发]iOS中TabBar中间按钮凸起的实现

在日常使用app的过程中,经常能看到人家实现了底部分栏控制器的中间按钮凸起的效果,那么这是怎么实现的呢? 效果演示: 实现原理: 创建按钮 创建一个UITabBar的子类,重写它的layoutSubviews方法&#xff1…...

数字时代,企业的数据共享意味着什么?

随着数字化整体在社会方方面面的推进,通过数据直接或间接创造的价值越来越大,逐渐成为了构建现代社会的重要要素。而对于企业来说,数据也是在数字经济中容易接触也切实能够利用产生大量价值,所以如何最大化利用数据,让…...

壹[1],QT自定义控件创建(QtDesigner)

1,环境 Qt 5.14.2 VS2022 原因:厌烦了控件提升的繁琐设置,且看不到界面预览显示。 2,QT制作自定义控件 2.1,New/其他项目/Qt4 设计师自定义控件 2.2,设置项目名称 2.3,设置 2.4,设…...

解决Java对接LDAP AD域登录出现Unprocessed Continuation Reference(s)错误

出现该错误的原因,主要是因为Java namingx的库,默认选项是未设置跟随,389返回的是AD域条目的引用,需要进行引用跟随。 解决方法分为两种,第一类不使用全局目录服务的端口389和636,而是使用真实端口 把代码…...

could not read ok from ADB Server

执行adb devices提示 List of devices attached * daemon not running; starting now at tcp:5037 could not read ok from ADB Server * failed to start daemon 方法1,关闭防火墙, could not read ok from ADB Server_夜星辰2023的博客-CSDN博客 我…...

【JavaEE】-- HTTP

1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

如何为服务器生成TLS证书

TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...

第八部分:阶段项目 6:构建 React 前端应用

现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...

算法—栈系列

一&#xff1a;删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...