树莓派5无头安装UbuntuServer并搭建个人服务器以及搭建Navidrome音乐平台
树莓派5 无头模式安装 Ubuntu Server 并搭建个人服务器
由于蒟蒻太菜了,在参加完csp之后不光荣地退役了,难过了一个星期之后想要重拾对计算机和编程的热爱,忽然发现手头上积灰的树莓派5(Raspberry Pi 5),思绪回到了曾经折腾各种设备的天真无邪的时候,所以决定在使用termux搭建个人服务器失败之后,用这块树莓派来搭建一个个人服务器,但是由于经费着实紧张,所以我采用的是无头模式,在此记录我的折腾过程,希望能帮你少走一些弯路 O(∩_∩)O~
准备工作
- 树莓派(Raspberry Pi)一块,最好再带个散热器(
- SD卡(最好是大一点快一点)和读卡器
- 另一台电脑(Windows、macOS或Linux均可,我的环境是 Ubuntu,Windows下方法几乎一样,可以使用 PuTTY 来进行ssh连接)作为ssh远程连接的终端和烧录系统镜像的设备
- 网络连接(最好有一根网线来保证连接稳定,或者使用手机热点也可以)
- 一根Type-C数据线用来充电
- Ubuntu server 的镜像文件,可以在这里自行选择,也可以直接用这个链接安装
- 烧录工具,这里我使用的是官方的,如果你想使用其他烧录工具也可以,操作方法大差不差,不过这里以记录我的操作为主,所以我不会过多讲述其他烧录方法,官方烧录工具
烧录系统镜像
- 打开烧录工具,点击
CHOOSE DEVICE,选择你的树莓派,然后点击选择操作系统,往下拉,找到Use custom,然后找到刚才下载好的镜像,之后点击选择SD卡,注意不要点错了,选择你的SD卡,而不是其他硬盘,最后点NEXT,

- 他会弹出一个窗口,点击编辑设置,设置好你的wifi(如果路由器看不到其他ip地址的话,建议和我一样用手机热点),然后找到右边的
SERVICES,开启SSH服务,选择使用密码登陆,然后保存,选是,然后开始烧录,烧录的时间看你的SD卡速度,有的快有的慢,如果比较慢的话可以去CF写写题,安利一下我之前写过题解的[CF1907G]Lights,如果TQL写完了还没烧录完,可以看看我的题解,因为我用的方法很神奇,我目前还没看到有人用这种方法写题解2333

- 烧录成功之后是如下界面

烧录完成之后不要急着弹出,还需要配置一下网络连接
- 打开SD卡根目录下的
network-config文件,使用文本编辑器打开,配置wifi和有线连接,这里我踩了大坑,Ubuntu Server 并不会自己开启有线连接,需要在这里提前进行配置,同时wifi的密码会被加密,所以需要提前配置一下,可以直接复制下面的代码,修改你的wifi名称和你的wifi密码
version: 2
wifis:
wlan0:
optional: true
dhcp4: true
access-points:
"你的wifi名称":
password: "你的wifi密码"
ethernets:
eth0:
dhcp4: true
optional: true
连接树莓派
在进行完上面的操作之后,把SD卡插进树莓派,接好网线,通电,不出意外的话树莓派就会启动了,然后在手机热点界面也是可以看到树莓派的,然后就可以通过ssh连接了 ,用户名密码就是刚才设置的时候设置的那个
ssh 用户名@树莓派的ip地址或者raspberrypi.local
如果是其他操作系统或者不希望使用bash环境的话,可以使用其他ssh工具连接


换源&&更新
顺利连接之后,第一件事应该是换源,因为默认源虽然不能说慢到离谱,但也确实很慢,所以我认为第一件事应该是换源,因为良好的网速能有效提高我们的效率并且不会那么打击自己的心态,我使用的是清华源,如果想用或者其他型号的树莓派要使用其他源的话可以去镜像站找自己需要的源来替换,但是要注意这里选择的不是普通的Ubuntu源,而是 Ubuntu Ports 源,并且还要使用arm的架构源,不要一不小心用了amd的
备份源文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sorces.list.d/ubuntu.sources.bak
编辑源文件
- 用你喜欢的编辑器(虽然一开始就只有
vim和nano)打开/etc/apt/sources.list,加入或替换成这些内容
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ noble main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ noble main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ noble-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ noble-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ noble-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ noble-backports main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ noble-security main restricted universe multiverse
# deb-src http://ports.ubuntu.com/ubuntu-ports/ noble-security main restricted universe multiverse
- 然后打开
/etc/apt/sources.list.d/ubuntu.sources,把里面的内容全部删掉,替换成下面的内容
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
# Types: deb-src
# URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
# Suites: noble noble-updates noble-backports
# Components: main restricted universe multiverse
# Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
Types: deb
URIs: http://ports.ubuntu.com/ubuntu-ports/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
# Types: deb-src
# URIs: http://ports.ubuntu.com/ubuntu-ports/
# Suites: noble-security
# Components: main restricted universe multiverse
# Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
# 预发布软件源,不建议启用
# Types: deb
# URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
# Suites: noble-proposed
# Components: main restricted universe multiverse
# Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
# # Types: deb-src
# # URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
# # Suites: noble-proposed
# # Components: main restricted universe multiverse
# # Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
更新软件包列表并升级
sudo apt update && sudo apt upgrade -y
配置apache2
光秃秃的服务器我们已经搭建好了,那我们要怎么让他运行第一个网页呢?我们可以使用nginx或者apache2,这里我用了apache2,因为我感觉这个配置起来简单一点
sudo apt update
sudo apt install apache2
然后apache2就安装好了,接下来我们需要调整防火墙设置,并开启apache2服务
sudo ufw allow 'Apache'
sudo systemctl enable apache2
sudo systemctl start apache2
验证一下,输入 sudo systemctl status apache2,如果显示如下效果那就算是成功了

打开浏览器,输入树莓派的ip地址,你将会看到这个界面

如何更改这个界面让他变成我们自己的网站呢?找到/var/www/html这个目录,里面的index.html就是默认界面,只需要把这个文件替换为我们自己的网站,就可以在这个服务器上运行自己的网站了
内网穿透
虽然我们已经搭建好了服务器,但是如果想要在外网访问的话还需要进行内网穿透,如果是用于测试的话可以使用ngrok或cpolar内网穿透,如果你有映射出去的需求的话可以试试cpolar的付费套餐或者frp等工具(需要买一个服务器做跳板)以及公网ip等方法,这里我就不多说了,因为我经费紧张所以没有去做这个,网上有很多相关的文章,可以善用搜索引擎
配置Navidrome
其实到上一步应该已经接近尾声,但是我忽然想起陪伴我一年多的mp3里面还有很多的歌曲,所以我想把这些歌放到我的服务器,然后就可以听了
Navidrome是一个挺好用的音乐服务软件,主要是轻量且自由,你可以用它来搭建一个私人音乐服务器,然后通过网页或者app来听歌,搭建的过程,可以采用Docker或者Webmin的方式,由于实在不想折腾Docker和Webmin(虽然他们可以很方便地管理流量之类的,但我都不准备内网穿透,所以就没有采用这种方式),所以我选择了直接下载安装包的方式来本地安装
安装ffmpeg
Navidrome需要ffmpeg来进行音频转码,所以我们需要先安装ffmpeg
sudo apt install ffmpeg
下载并安装Navidrome
wget https://github.com/navidrome/navidrome/releases/download/v0.58.5/navidrome_0.58.5_linux_arm64.deb
sudo apt install ./navidrome_0.58.5_linux_arm64.deb
如果要用dpkg安装也可以,不过可能会缺少依赖,可以用sudo apt -f install来修复依赖
配置默认音乐文件夹
配置文件的默认路径是 /etc/navidrome/navidrome.toml,用vim或nano打开他,找到或添加这一行
MusicFolder = "/path/to/your/music/library"
将/path/to/your/music/library替换为你实际存放音乐文件的路径,保存并关闭文件
启动Navidrome服务
sudo systemctl enable --now navidrome
sudo systemctl start navidrome
检查服务状态,看看Navidrome是否成功启动
sudo systemctl status navidrome
sudo journalctl -u navidrome -f
不出意外的话,打开浏览器,输入http://树莓派的ip地址:4533,你将会看到Navidrome的注册界面,注册一个管理员账号,Navidrome的安装就成功了
结束了吗?
当你往音乐文件夹添加歌曲的时候,你或将惊讶地发现Navidrome不会扫描不到默认音乐文件夹里面的音乐,如果仔细浏览日志文件的话,你会看到这一段
raspberrypi navidrome[3146]: time="时间" level=error msg="Error stating dir" error="stat 你的音乐路径: permission denied"
这是因为Navidrome默认是以navidrome用户运行的,而这个用户没有权限访问你的音乐文件夹,所以我们需要给navidrome用户添加权限,让他顺利访问音乐文件夹
# 把 navidrome 加入到 用户组 组
sudo usermod -aG 你的用户名 navidrome
# 确保 音乐文件夹的父目录可以被访问
sudo chmod 750 你的音乐文件夹的父目录
# 把音乐目录的所属组改为 你的用户名(如果已经是就跳过)
sudo chgrp -R 你的用户名 你的音乐文件夹
# 给目录可读/可进入(目录需要执行位以便遍历)
sudo find 你的音乐文件夹 -type d -exec chmod 750 {} ;
# 给文件设置为组可读(音乐文件不需要可执行)
sudo find 你的音乐文件夹 -type f -exec chmod 640 {} ;
# 让组权限在子文件夹继承(可选,视需要)
sudo find 你的音乐文件夹 -type d -exec chmod g+s {} ;
# 重启 navidrome 服务
sudo systemctl restart navidrome
回到浏览器,刷新页面,你将会看到Navidrome已经成功扫描到了你的音乐文件,可以愉快地听歌了
但是
如果你遇到了播放不了(进度条卡在0,而不是乱码)的情况,那可能是因为Navidrome没有权限使用ffmpeg来进行转码,可以通过下面的命令来赋予权限并重启navidrome服务
sudo setcap 'cap_net_bind_service=+ep' /usr/bin/ffmpeg
sudo systemctl restart navidrome
然后就可以愉快听歌了~

最后
你将获得一个口袋里的服务器,希望这次折腾的经历能帮助到你或者鼓舞到你,我在网上看到过一段话,叫做什么都可以丢,但是信心不能丢
参考文章
- 搭建与连接:
- https://blog.csdn.net/weixin_44223509/article/details/120753053 ,
- https://developer.aliyun.com/article/1633424,
- 配置apache2:
- https://ubuntu.com/tutorials/install-and-configure-apache#1-overview ,
- https://blog.csdn.net/qq_57526628/article/details/143992343
- 配置navidrome:
- https://ruohai.wang/202307/navidrome-setup/ ,
- https://zml3589110.github.io/posts/870218609 ,
- https://zhuanlan.zhihu.com/p/16371526999 ,
- https://www.navidrome.org/docs/installation/linux/
- 其他有关系但不大的(早期折腾termux服务器时帮助到我的的和关于内网穿透的):
- https://developer.aliyun.com/article/1323968 ,
- https://www.cnblogs.com/geek233/p/18791892 ,
- https://blog.csdn.net/qq_23357159/article/details/115256330









