从零搭建网站(四):音乐网站篇

从零搭建网站(四):音乐网站篇
Azura极致听感:基于 TagLib 2.0 源码编译 Navidrome 音乐服务器
在前三篇中,我们完成了基础服务器环境与 Web 博客的搭建。本篇将进入“硬核”领域:通过源码编译安装 Navidrome。
为什么要源码编译?因为默认的发行版往往链接较旧的 TagLib 库,导致对 DSF (DSD) 等发烧级无损音频格式的支持不佳,或无法精准解析中文元数据。通过手动链接最新的 TagLib 2.0,我们将打造一个全格式支持的完美音乐中心。
一、 核心依赖:TagLib 2.0 共享库编译
Navidrome 使用 CGO 调用 TagLib 来读取音频标签。如果系统自带版本过低(如 Ubuntu 22.04 自带 1.x),必须手动编译。
1. 源码下载与配置
1 | git clone https://github.com/taglib/taglib.git |
2. 坑点提示
如果之前安装过旧版本,请务必检查 /usr/local/lib/。若存在 libtag.so.1 相关残留,请手动清理,确保系统链接指向最新的 libtag.so.2。
二、 Navidrome 构建流程
Navidrome 是一个典型的 Go (后端) + React (前端) 架构,编译分为两步。
1. 环境准备
1 | # 安装 Go (建议 1.21+) |
2. 前端 UI 预编译
前端静态文件会被嵌入到最终的二进制中。
1 | cd navidrome/ui |
3. 后端编译(链接 TagLib 2.0)
回到根目录,利用 tags 参数进行全功能构建:
1 | cd .. |
三、 部署与系统化管理
1. 目录架构与配置
建议将数据与代码分离,方便后续迁移。
1 | mkdir -p ~/navidrome_data |
配置文件示例:
1 | MusicFolder = "/home/sky/music" |
2. Systemd 自动化部署
为了让服务随笔记本开机自启,创建 /etc/systemd/system/navidrome.service:
1 | [Unit] |
执行 sudo systemctl enable --now navidrome 激活。
四、 云端接入:复用 Cloudflare 隧道
为了在室外也能通过手机收听,我们需要利用现有的 Cloudflare 隧道实现一隧多用。
1. 仪表盘配置步骤
- 登录 Cloudflare Zero Trust 仪表盘。
- 进入 Networks -> Tunnels,选择运行中的隧道点击 Configure。
- 切换至 Public Hostname 标签页,点击 Add a public hostname。
- 子域名:
music| 域名:cbsbm.cn| URL:localhost:4533。 - 保存后,CF 会自动处理 DNS 和 SSL 证书。
五、 进阶:节能与移动端体验
1. 笔记本节能管理
由于使用旧笔记本作为服务器,如果希望它在非高峰期休眠以延长硬件寿命,可以使用 rtcwake 实现定时唤醒脚本:
1 |
|
2. 移动端 App 推荐
Navidrome 完美兼容 Subsonic 协议:
- Android: 强烈推荐 Symfonium (UI 极美,支持本地缓存)。
- iOS: 推荐 Amperfy 或 Play:Sub。
- 连接: 填写
https://music.cbsbm.cn即可。
六、 结语
通过源码编译,我们赋予了 Navidrome 处理顶级音频格式的能力;通过 Cloudflare 隧道,我们将笔记本变成了专属的私有云音乐中心。至此,一个安全、高性能、零成本(利用废旧设备)的个人服务器系统已初具规模。




