无公网IP 实现外网访问本地 Docker 部署 Navidrome

Navidrome 是一款可以在 macOS、Linux、Windows以及 Docker 等平台上运行的跨平台开源音乐服务器应用,它支持传输常见的 MP3、FLAC、WAV等音频格式。允许用户通过 Web 界面或 API 进行音乐库的管理和访问。本文就介绍如何快速在 Linux 系统使用 Docker 进行本地部署以及结合路由侠内网穿透进行外网远程访问。

第一步,安装 Navidrome

1. 安装 Docker,本教程操作环境为 Linux Ubuntu 系统,所以我们需要先安装 Docker 与 docker-compose 。

在终端中执行下方命令安装 Docker:

sudo curl -fsSL https://github.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh| bash -s docker --mirror Aliyun

如果上边命令中访问不了github,可以使用 gitee 的链接安装:

sudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh| bash -s docker --mirror Aliyun

安装完后启动 Docker

sudo systemctl start docker

下载 docker-compose文件

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

需要给 docker-compose 一个执行权限

sudo chmod +x /usr/local/bin/docker-compose

查看是否安装成功

docker-compose -version

2. Docker 镜像源添加方法

sudo docker pull deluan/navidrome

3. 创建并启动 Navidrome 容器

如果成功拉取镜像后,创建 navidrome 项目文件夹并编辑 docker-compose.yml:

mkdir navidrome
cd navidrome
vim docker-compose.yml

把下面内容复制到 docker-compose.yml 文件中并保存,内容如下:

version: "3"
services:navidrome:image: deluan/navidrome:latestports:- "4533:4533"restart: unless-stoppedenvironment:ND_SCANSCHEDULE: 1hND_LOGLEVEL: infoND_SESSIONTIMEOUT: 24hND_BASEURL: ""volumes:- "~/Music/data:/data"- "~/Music:/music:ro"

保存退出后,执行下面的命令启动容器:

sudo docker-compose up -d

4,启动成功后,在浏览器中输入 localhost:4533 或者本地ip:4533,可以看到进入到了 Navidrome 的登录界面,设置一个用户名和密码就可以了。

5,登录后,点击界面右上角的头像图标进入个性化,设置语言为简体中文。

6,如果你在真实存储路径中有存放的音乐, Navidrome 会自动扫描进来,并自动将歌曲分类为各个专辑的形式展现。

第二步,外网访问本地 Navidrome

安装路由侠内网穿透。

1,当前未提供网页管理,需要先在任意一台 Windows 机器安装路由侠 Windows 版本,用作跨机器管理。

2,在路由侠客户端主界面,进入“设备管理”,点击右下角的“添加设备”,此时可查看到对应的安装码,此安装码用于将设备添加到对应账号下,可选中后复制。

3,可使用以下 Docker 命令拉取镜像:

docker pull luyouxia/lyx

注意,如果因网络问题,镜像无法拉取,可直接下载后导入:

wget https://dl.luyouxia.com:8443/v2/lyx-docker-i686.tar
docker load -i lyx-docker-i686.tar

4,然后使用该镜像启动容器

docker run --name lyx -it --restart=always --net=host -e code=这里填写安装码 luyouxia/lyx

5,此时,需要等待下载和安装的过程,如果一切正常,最终可以看到一些输出,并且可以看到如下提示:

[Device] Logged in. Token: ....

这就表示安装成功了。

当前 Linux 终端这边,如果是使用的上面的命令,Docker 是运行在前台,此时可以按住 Ctrl+C ,退出路由侠,容器也将退出。现在可以使用以下命令将其放入后台持续运行:

docker start lyx

注意如果容器删除,重新 docker run, 将创建为新的设备。

需要注意的是,因为容器参数已经添加了 --restart=always,这样开机就会自动启动,不需要再手动启动路由侠了。

6,现在回到 Windows 这边设备列表,点击右上角的×返回主界面,再次进入,就可以找到这个设备,可以修改名称。

7,回到主界面,点击【内网映射】。

8,注意右上角的设备名称下拉框,这里选中刚刚添加的设备名称,此时在这个界面上添加的映射,就属于刚刚这个设备。添加或修改一般需要等待30秒,容器中的路由侠进程就会更新并加载。切换好设备后,点击【添加映射】。

9,选择【原生端口】。

10,在内网端口里填写默认端口 4533 后点击【创建】按钮,如下图。

11,创建好后,就可以看到一条映射的公网地址,鼠标右键点击【复制地址】。

12,在外网的浏览器的地址栏输入复制的外网地址就可以看到下面这个 Navidrome 登录界面了。

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

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

相关文章

从零开始,掌握Django Web开发

1. Django简介 Django是一个强大的Python Web框架,它使开发人员能够快速构建安全、可扩展的Web应用程序。让我们深入了解Django的特性和优势。 1.1 什么是Django? Django是一个高级Python Web框架,于2005年首次发布。它由新闻网站的开发人员创建,旨在处理快节奏的新闻编辑室…

解决conda create速度过慢的问题

问题 构建了docker容器 想在容器中创建conda环境,但是conda create的时候速度一直很慢 解决办法 宿主机安装的是anaconda 能正常conda create,容器里安装的是miniforge conda create的时候速度一直很慢,因为容器和宿主机共享网络了,宿主机…

【Hive】新增字段(column)后,旧分区无法更新数据问题

TOC 【一】问题描述 Hive修改数据表结构的需求,比如:增加一个新字段。 如果使用如下语句新增列,可以成功添加列col1。但如果数据表tb已经有旧的分区(例如:dt20190101),则该旧分区中的col1将为…

【Python】Selenium根据网页页面长度,模拟向下滚动鼠标,直到网页底部的操作

最近在弄selenium的爬取的过程中,我发现一些网站上的表格,是需要手动拉到底部才能加载完成的。 如果没有拉到底部,那么在获取网页表格的时候,表格就会只有显示的一部分,页面就不完整。 所以我就整理了一些模拟滚动鼠…

openharmony电源管理子系统

电源管理子系统 简介目录使用说明相关仓 简介 电源管理子系统提供如下功能: 重启服务:系统重启和下电。系统电源管理服务:系统电源状态管理和休眠运行锁管理。显示相关的能耗调节:包括根据环境光调节背光亮度,和根…

esg信息披露是什么,有什么意义

ESG信息披露是指企业将其在运营中涉及的环境(Environment)、社会(Social)及治理(Governance)因素,向投资者、消费者等利益相关者公开揭示的过程。以下是对ESG信息披露及其意义的详细解释&#x…

Power Automate 实现字符串分割、替换、换行显示

在 Power Automate 中,有时从 Forms 过来的数据是多选列表,导致选项内容是 ["AAAA","BBBB"] 这样的格式(注意是字符串而不是列表),往往需要转换为换行显示的形式易于阅读: 方法 使用表…

麒麟操作系统服务架构保姆级教程(十一)https配置

如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情 在运维工作中,加密和安全的作用是十分重要的,如果仅仅用http协议来对外展示我们的网站,过一段时间就会发现网站首页被人奇奇怪怪的篡改了,本来好好的博…

无人机(Unmanned Aerial Vehicle, UAV)路径规划介绍

无人机(Unmanned Aerial Vehicle, UAV)是无人驾驶飞行器的简称。凭借其体积小巧、操作简便、生存能力强等诸多优势,无人机在军事、电力巡检、航空航天与科学研究等诸多领域得到了广泛应用。在执行任务时,无人机可搭载多种传感器设…

RabbitMQ---消息确认和持久化

(一)消息确认 1.概念 生产者发送消息后,到达消费端会有以下情况: 1.消息处理成功 2.消息处理异常 如果RabbitMQ把消息发送给消费者后就把消息删除,那么就可能会导致,消息处理异常想要再获取这条消息的时…

Linux:System V - 共享内存

1.System V共享内存的原理 通过为用户提供系统调用接口,让用户可以申请一块空间,进程A/B也可以通过系统调用接口将创建好的内存通过页表映射进进程的地址空间。完成让不同的两个进程看见同一份资源的目的。如果未来不想继续通信,取消进程和内…

SpringBoot错误码国际化

先看测试效果: 1. 设置中文 2.设置英文 文件结构 1.中文和英文的错误消息配置 package com.ldj.mybatisflex.common;import lombok.Getter;/*** User: ldj* Date: 2025/1/12* Time: 17:50* Description: 异常消息枚举*/ Getter public enum ExceptionEnum {//…

道旅科技借助云消息队列 Kafka 版加速旅游大数据创新发展

作者:寒空、横槊、娜米、公仪 道旅科技:科技驱动,引领全球旅游分销服务 道旅科技 (https://www.didatravel.com/home) 成立于 2012 年,总部位于中国深圳,是一家以科技驱动的全球酒店资源批发商…

Solidity01 Solidity极简入门

一、Solidity 简介 Solidity 是一种用于编写以太坊虚拟机(EVM)智能合约的编程语言。我认为掌握 Solidity 是参与链上项目的必备技能:区块链项目大部分是开源的,如果你能读懂代码,就可以规避很多亏钱项目。 Solidity …

如何使用WPS的JS宏实现Word表格的自动编号

如何使用WPS的JS宏实现Word表格的自动编号&#xff1f;如下图&#xff0c;想要给表格的编号列中添加序号。 使用WPS的JS宏可以实现自动编号&#xff0c;代码如下&#xff1a; n Selection.Tables.Item(1).Rows.Count;for(i 2;i<n;i){Selection.Tables.Item(1).Cell(i,1).…

2025年1月17日(点亮一个 LED)

系统信息&#xff1a; Raspberry Pi Zero 2W 系统版本&#xff1a; 2024-10-22-raspios-bullseye-armhf Python 版本&#xff1a;Python 3.9.2 已安装 pip3 支持拍摄 1080p 30 (1092*1080), 720p 60 (1280*720), 60/90 (640*480) 已安装 vim 已安装 git 学习目标&#xff1a;…

Python在多个Excel文件中找出缺失数据行数多的文件

本文介绍基于Python语言&#xff0c;针对一个文件夹下大量的Excel表格文件&#xff0c;基于其中每一个文件内、某一列数据的特征&#xff0c;对其加以筛选&#xff0c;并将符合要求与不符合要求的文件分别复制到另外两个新的文件夹中的方法。 首先&#xff0c;我们来明确一下本…

【Linux】应用层自定义协议与序列化

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; 应用层 &#x1f98b; 再谈 "协议"&#x1f98b; 网络版计算器&#x1f98b; 序列化 和 反序列化 二&#xff1a;&#x1f525; 重新理解 read、…

数字化贷款管理:助贷系统软件为贷款中介带来的五大改变

随着金融行业的数字化转型&#xff0c;贷款中介的业务模式也在不断创新。助贷系统作为数字化管理的核心工具&#xff0c;正在为贷款中介带来深刻的变革。本文将从五个方面探讨助贷系统软件如何改变贷款中介行业的管理模式&#xff0c;提升业务效率&#xff0c;降低运营成本。乐…

1.8 GPT-4:开创人工智能的新纪元

GPT-4:开创人工智能的新纪元 自从OpenAI推出GPT-4以来,人工智能领域经历了显著的突破。作为“生成预训练转换器”家族中的最新成员,GPT-4不仅在功能上进行了提升,更在语言处理能力、理解深度以及适应性方面带来了全新的变革。本篇文章将深入探讨GPT-4的特点、创新以及它如…