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

Freyr-js Docker 部署:10 分钟搭好音乐下载容器

Freyr-js Docker 部署:10 分钟搭好音乐下载容器

【免费下载链接】freyr-jsA tool for downloading songs from music streaming services like Spotify and Apple Music.项目地址: https://gitcode.com/gh_mirrors/fr/freyr-js

Freyr-js 是一款音乐下载工具,能从 Spotify、Apple Music 等流媒体抓取歌曲;用 Docker 部署可跳过繁琐的依赖配置。本文把安装、克隆、构建、启动串成一条编号流程,并讲清下载目录挂载与内存参数,10 分钟跑通首次下载。

📦 从克隆到启动:一条流程装好 Freyr-js

环境准备与部署三步合并成一条流程,跟着做即可。

1. 安装 Docker 并拉取源码先装好 Docker 与 Docker Compose(负责创建和编排容器),装完拉下源码并进入目录,后面所有命令都在这个目录执行。

sudo apt-get update && sudo apt-get install docker.io docker-compose -y sudo systemctl enable docker && sudo systemctl start docker git clone https://gitcode.com/gh_mirrors/fr/freyr-js && cd freyr-js

2. 构建镜像在源码目录执行构建,Dockerfile 走多阶段构建,先装依赖、精简代码,最终产出基于 Alpine 的轻量镜像。

docker build -t freyr-js:latest .

3. 启动容器这条命令一次性挂上下载目录、指定 Node 内存上限并给容器起名;容器以后台运行,随时可用docker logs freyr-container查看日志。

docker run -d --name freyr-container \ -v ~/freyr-music:/data \ -e "FREYR_NODE_ARGS=--max-old-space-size=4096" \ freyr-js:latest

⚙️ 下载目录挂载、内存参数与持久化

启动命令里的参数各司其职,理解它们能帮你避开大多数坑:

  • -v ~/freyr-music:/data:把宿主机目录挂到容器内的/data。Dockerfile 已把/data声明为持久化卷,歌曲都落在这里,容器重启也不会丢。挂载前先执行mkdir -p ~/freyr-music建好目录,否则 Docker 会以 root 自动创建,之后写入容易被拒。
  • -e "FREYR_NODE_ARGS=--max-old-space-size=4096":入口脚本 freyr.sh 会把它作为 Node 启动参数,给进程划出 4GB 堆内存,批量下载整张专辑时更稳。
  • 目录归属:容器内以 uid 1000 的 freyr 用户运行,宿主机目录要归属给它,写入才不会报权限错误,具体命令见文末排查清单。

🎵 用一条 Spotify 链接跑通首次下载

容器已在后台运行,用docker exec进去执行下载,把下面这条 Spotify 曲目链接换成你自己的即可。

docker exec -it freyr-container freyr https://open.spotify.com/track/127QTOFJsJQp5LbJbu3A1y

Freyr-js 会解析链接、抓取元数据与封面,最终把.m4a按「艺术家/专辑/曲目」结构保存到挂载目录~/freyr-music下。

🔍 Freyr-js 支持哪些音乐服务

它支持的服务由 src/services/ 目录下的模块决定,目前包含:

  • spotify.js:Spotify
  • apple_music.js:Apple Music
  • deezer.js:Deezer
  • youtube.js:YouTube

只要手里有这些平台的歌曲、专辑、艺人或播放列表链接,都可以丢给 Freyr-js 处理。

🛠️ 权限报错与网络异常排查清单

按顺序逐项排查,多数问题能直接定位:

  • 写入挂载目录报 Permission Denied:通常是宿主机目录归属不对,把目录交给容器用户即可。
sudo chown -R 1000:1000 ~/freyr-music
  • 下载卡住或连不上源:先确认容器网络正常;如果宿主机网络更稳,重建容器时加上--network=host直接走宿主机网络。
  • 内存不足被杀:把启动命令里的--max-old-space-size=4096调大到实际可用内存。

容器化部署的价值在于环境隔离、跨机器可移植、维护简单:同一镜像在任何装了 Docker 的机器上行为一致,升级或迁移时重建容器即可。现在按上面的编号流程走一遍,十分钟就能开始下载你的第一首歌。

【免费下载链接】freyr-jsA tool for downloading songs from music streaming services like Spotify and Apple Music.项目地址: https://gitcode.com/gh_mirrors/fr/freyr-js

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4187809.html

相关文章:

  • Java大厂面试:Spring Boot、Redis与微服务实战解析
  • STM32外部中断按键检测:从CubeMX配置到HAL库实战与消抖方案
  • 5 秒克隆一个声音:Real-Time-Voice-Cloning 实时语音克隆完整教程
  • Spring Boot性能优化实战与面试策略
  • FOC电机控制:从核心原理到系统框架的顶层视角解析
  • 科颜氏洗面奶源头工厂:讲点氨基酸洁面代工的底牌
  • 采药题本质:01背包动态规划入门精讲
  • 宝塔面板从零安装到实战:图形化服务器运维指南
  • C#类型转换全解析:从隐式到显式,掌握安全数据转换的核心
  • 如何逆向APK?免费Apktool完整指南:从解码到重打包一次讲清
  • Python调用Bing翻译网页版:免费API替代方案与实现详解
  • Java面试核心:从JVM到微服务的系统化指南
  • 基于Agentic LLM与DuckDB的钻井智能分析系统TADI架构解析
  • Claude Code 接入国内 AI 模型实战:解决区域限制与推理循环问题
  • SQL核心三剑客:DDL、DML、DCL原理与实战优化指南
  • C++11 forward_list:单向链表的极致内存优化与应用场景解析
  • Claude Code跨会话消息:打破AI编程助手信息孤岛,实现并行开发协同
  • Android RxJava 实战入门:解决异步、线程切换与生命周期绑定三大痛点
  • 完整跑通 tmom 多厂区 MOM/MES 系统:从部署到车间过站的实操手册
  • 从流程图到状态机:嵌入式开发中的事件驱动编程范式
  • Java面试实战:技术深度与软素质双维度考察
  • Java后端面试核心:SQL优化、HashMap并发与内存调优
  • 从OpenClaw到Hermes:AI智能体开发工具链的升级与实战迁移指南
  • 2026年Java面试题库:核心考点与趋势解析
  • 多智能体与领域知识驱动的代码适配框架:从Spring Boot到Quarkus的自动化迁移实践
  • 链表数据结构与面试核心要点解析
  • Python win32com自动化Office与Outlook:从原理到实战报表邮件系统
  • 电力约束下数据中心转型:从算力军备竞赛到能效优化实战
  • 算法日常・每日刷题--<BFS最短路径>4
  • 深入解析RS232、RS422、RS485串口通信:从电气原理到工业应用实战