NAS一键部署免费开源音乐播放器Solara
对于NAS用户而言,音乐、影视和相册管理无疑是三大核心娱乐需求。
本次我们将介绍一款基于免费API构建的音乐播放器:Solara(光域)。
本文所涉及的项目是在原版Solara(项目GIF取自原版)基础上进行修改的版本,支持通过Docker一键部署,兼容X86与ARM架构设备。该项目仅供学习交流之用,请务必支持正版音乐!

项目介绍
原项目: akudamatata/Solara,在GitHub上搜索即可找到。本文所用镜像: exus/solara-music。
⚠️ 重要声明: 原项目作者明确禁止任何商业化行为,并要求任何衍生项目必须保留原项目地址并以相同协议开源。因此,大家可以放心使用。
以下主要特性直接引自原项目说明:
🎨 主题美学: 内置亮色/暗色模式与玻璃拟态(Glassmorphism)界面,能够根据当前播放曲目的封面自动提取主色调,渲染出沉浸式的动态背景,提供出色的视觉体验。
📱 竖屏移动端: 专为移动设备设计了全新的竖屏布局,完美适配手机屏幕比例与触控手势,按钮、列表及歌词显示均针对单手操作进行了优化。
🔍 跨站曲库检索: 支持一键切换不同的音乐数据源,提供分页浏览功能,并可将搜索结果批量导入播放队列。
📻 灵活的队列管理: 支持对播放队列进行新增、删除、清空等操作,所有更改即时生效,并能自动将状态持久化保存到浏览器的 localStorage 中。
❤️ 收藏列表: 无论是搜索到的歌曲还是正在播放的列表,均可一键添加至收藏。收藏列表拥有独立的播放进度记忆、播放模式设置以及批量操作面板。
🔁 丰富的播放模式: 支持列表循环、单曲循环与随机播放等多种模式,并可记忆用户上一次使用的偏好设置。
📝 动态歌词视图: 提供逐行滚动并高亮显示歌词的功能,当前播放行会自动聚焦于视图中央。用户手动滚动歌词后,视图会暂时锁定以便阅读。
🔄 列表导入与导出: 支持将当前的播放队列与收藏列表统一导出为文件,或从文件导入,便于一键迁移收藏歌曲或从备份中恢复,并可同步至播放队列。
📥 多码率下载: 允许用户选择128Kbps、192Kbps、320Kbps乃至无损FLAC等多种音质格式,并直接获取对应的音频文件。
☁️ 轻量后端代理: 通过Cloudflare Pages Functions构建统一的后端服务,聚合各个音乐数据源,并处理音频流的跨域访问问题。
🔒 锁屏播放控制: 在手机锁屏界面会自动显示专辑封面与基础的播放控制控件(播放/暂停、上一曲/下一曲),无需解锁手机即可进行操作。
🛠️ 调试控制台: 在Web界面按下
Ctrl + D组合键可呼出实时日志面板,方便开发者或高级用户排查接口请求或交互过程中的异常情况。
不过,这里可能存在一个令部分NAS用户感到不便的点:虽然服务部署在NAS上,但音乐下载的保存路径默认无法直接绑定到NAS的共享文件夹中。除了这一点,Solara的整体服务体验相当出色。
最后需要提醒的是,此类依赖于第三方API的服务需要保持更新。如果某天发现无法正常播放或下载音乐,很可能是因为API源发生了变动。此时,通常只需重新拉取(pull)最新的Docker镜像并重新部署容器即可解决问题。
部署流程
我们以威联通(QNAP)NAS为例,演示如何使用Docker Compose的方式部署Solara。
以下是部署所需的Compose配置代码。如果复制后格式出现问题,建议借助文本编辑器或AI工具进行重新排版:
services:
solara-music:
image: aexus/solara-music:latest
container_name: solara-music
restart: unless-stopped
ports:
- "5841:3001"
environment:
- NODE_ENV=production
- PORT=3001
- SOLARA_PASSWORD=qnap1234 # 请务必修改为你自己的访问密码
- SESSION_SECRET=KLmlKDruIBRYjrT5ct7B3xqG25ZF2p59 # 请修改为32位随机字符串,可使用`openssl rand -base64 24`命令生成
volumes:
- /share/Container/solara/logs:/app/logs
配置中的卷(volumes)映射主要用于存储应用日志,如果不需要保留日志,删除此行即可。
Navidrome部署与使用全攻略:在NAS上打造个人多平台音乐流媒体库
Navidrome是一款基于Web的开源音乐收藏服务器和流媒体平台,它允许用户从任何浏览器或移动设备自由访问和播放个人音乐收藏,实现跨平台音乐流媒体体验。

官方提供了一个在线的演示环境,访问地址为 https://demo.navidrome.org,默认的登录凭据为用户名demo和密码demo,方便用户预先体验其核心功能与界面设计。
部署步骤:Docker Compose配置详解
通过Docker Compose可以快速部署Navidrome服务。以下是一个标准的基础配置示例:
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
ports:
- 4533:4533
volumes:
- ./data:/data
- ./music:/music
restart: unless-stopped
针对上述配置中的关键卷挂载参数进行说明(更详细的参数定制建议查阅官方文档):
/data目录:该路径用于持久化存储Navidrome服务器的配置、数据库及缓存数据。/music目录:该路径用于映射存放用户个人音频文件的目录,Navidrome将扫描此目录以构建音乐库。
界面导航与功能详解
在浏览器地址栏中输入 http://你的NAS设备IP地址:4533 即可访问Navidrome的Web管理界面。

首次访问系统时会引导用户创建一个管理员账户,这是初始化设置的必要步骤。

成功登录后,建议首先点击右上角的个性化设置选项,进入设置面板以修改界面语言。

将语言切换为中文后,整个操作界面便会本地化,提升使用便利性。

Navidrome支持多种视觉主题风格,用户可以根据个人喜好选择不同的界面样式。

在初始状态下,由于映射的音乐目录中尚未放入任何音频文件,因此音乐库页面会显示为空。

用户需要将个人的音乐文件(如MP3、FLAC等格式)存入Docker Compose配置中指定的/music目录所对应的主机路径。

一个小提示:在添加音乐文件后,如果界面上没有立即显示,可以点击页面右上角的菜单并选择“扫描音乐库”来手动触发索引更新。

Navidrome的Web界面设计现代且清晰,专辑封面、艺术家等信息排列有序,视觉体验良好。

点击任意歌曲进行播放后,页面底部会固定显示一个播放控制条,其中包含当前播放的歌曲名称、艺术家信息及播放进度。

对于内嵌或关联了歌词文件的歌曲,播放界面能够正常同步显示滚动歌词,增强聆听体验。

该平台具备丰富的播放管理功能,用户可以将歌曲添加到自定义歌单、标记为“喜爱”、设置循环播放模式以及管理播放列表等,核心功能一应俱全。

音乐库支持按艺术家进行分类浏览,方便用户快速定位特定歌手的全部作品。

在歌曲的详细信息页面,用户可以查看音轨的元数据,例如专辑、年份、编码格式,系统还会统计并显示每首歌的历史播放次数。

Navidrome也提供了基础的多用户管理功能,管理员可以创建子账户并分配权限,适合家庭或小团队共享音乐库。

其Web界面针对移动设备进行了响应式适配,在手机或平板电脑的浏览器上访问时,布局会自动调整以提供触控友好的操作体验。

使用体验与综合评价
这款音乐服务器软件在自托管社区中拥有较高的采用率,其核心的音乐播放与管理功能已经相当完善。最大的特色在于它支持Subsonic API,能够与众多第三方客户端(如Play:Sub, substreamer等)无缝配合使用,真正实现多平台访问。对于拥有本地音乐收藏并希望构建私有流媒体服务的用户而言,Navidrome是一个表现均衡的选择,目前没有明显的功能短板。当然,如果未来版本能集成自动音乐信息刮削(如获取专辑封面、歌词)和智能文件整理功能,将会更加完美,因为部分本地音乐文件可能缺少完善的元数据。
综合推荐指数:⭐⭐⭐⭐(用户基数大,第三方客户端生态丰富,兼容性强) 核心功能体验:⭐⭐⭐(基础功能全面,界面直观,满足日常流媒体需求) 部署简易程度:⭐⭐(基于Docker的部署流程极为简单,适合新手)
OmniTools:在NAS上部署自托管全能工具箱的完整教程
OmniTools 是一款自托管的 Web 应用程序,它集成了多种在线工具,旨在简化日常任务的处理流程。其功能范围广泛,覆盖了图像处理、视频编辑、音频操作、PDF 文档管理、文本与列表处理、日期时间计算、数学工具以及数据处理等多个实用领域。

该平台的功能亮点如下:
- 图像、视频与音频工具:提供图像缩放、格式转换、编辑优化,视频修剪、反转处理,以及音频相关操作。
- PDF 操作工具:支持 PDF 文档的分割、合并、编辑等多样化处理功能。
- 文本与列表工具:具备文本大小写转换、列表随机洗牌、文本格式化等实用特性。
- 日期时间工具:包含日期计算、时区转换等便捷功能。
- 数学工具:能够生成质数,进行电压、电流、电阻等物理量的计算。
- 数据工具:支持 JSON、CSV、XML 等多种数据格式的解析与处理操作。
您可以通过访问在线演示链接来体验 OmniTools 的功能:https://omnitools.app
OmniTools的安装步骤
使用 Docker Compose 进行安装时,配置代码如下所示:
services:
omni-tools:
image: iib0011/omni-tools:latest
container_name: omni-tools
ports:
- 8080:80
restart: unless-stopped
OmniTools使用指南
完成安装后,在浏览器中输入 http://NAS的IP:8080 即可访问 OmniTools 的用户界面。

如果初始界面显示为英文,用户可以在设置选项中轻松切换系统语言。

浏览主界面,可以快速查看是否存在符合个人需求的功能工具。

点击具体的工具集合卡片,能够展开并探索其中更细分的功能模块。

所有工具均基于 Web 界面运行,打开相应网页即可直接使用,无需额外安装任何软件。

总结与评价
OmniTools 提供了丰富的功能集合,并且支持中文界面,使得操作更加直观便捷。在实际应用场景中,此类小型工具往往难以找到免费且高效的替代方案,因此用户可以根据自身需求评估是否进行部署尝试。
综合推荐指数:⭐⭐(适合有特定需求的用户部署测试)
使用体验评价:⭐⭐(整体体验感觉中规中矩)
部署难易程度:⭐(安装过程非常简单直接)
Vikunja开源待办清单:Docker一键部署与全面使用指南
Vikunja 是一款基于开源理念开发的任务管理工具,其主要目标是帮助用户有效地组织和追踪日常生活及工作中的各类待办事项。

您可以访问其在线演示站点(使用 demo/demo 作为登录凭证)以提前体验功能:
Vikunja安装部署步骤
使用 Docker Compose 配合 Sqlite 数据库
services:
vikunja:
image: vikunja/vikunja:latest
container_name: vikunja
environment:
- VIKUNJA_SERVICE_PUBLICURL=http://192.168.31.90:3456
- VIKUNJA_SERVICE_JWTSECRET=74eBQyirDWKwog8syDktUk9vuQKXTVoE
- VIKUNJA_DATABASE_PATH=/db/vikunja.db
ports:
- 3456:3456
volumes:
- ./files:/app/vikunja/files
- ./db:/db
restart: unless-stopped
使用 Docker Compose 配合 PostgreSQL 数据库
services:
vikunja:
image: vikunja/vikunja:latest
container_name: vikunja
environment:
- VIKUNJA_SERVICE_PUBLICURL=http://192.168.31.90:3456
- VIKUNJA_SERVICE_JWTSECRET=74eBQyirDWKwog8syDktUk9vuQKXTVoE
- VIKUNJA_DATABASE_TYPE=postgres
- VIKUNJA_DATABASE_HOST=db
- VIKUNJA_DATABASE_PASSWORD=changeme
- VIKUNJA_DATABASE_USER=vikunja
- VIKUNJA_DATABASE_DATABASE=vikunja
ports:
- 3456:3456
volumes:
- ./files:/app/vikunja/files
depends_on:
db:
condition: service_healthy
restart: unless-stopped
db:
image: postgres:18
container_name: vikunja-db
environment:
POSTGRES_PASSWORD: changeme
POSTGRES_USER: vikunja
volumes:
- ./db:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -h localhost -U $$POSTGRES_USER"]
interval: 2s
start_period: 30s
restart: unless-stopped
使用 Docker Compose 配合 MySQL/MariaDB 数据库
WeChatSelkies:基于Docker的微信QQ浏览器访问方案完整指南
WeChatSelkies 是一款创新的应用程序,它允许用户通过网页浏览器直接访问和使用微信与QQ。该工具基于 Docker 容器技术构建,并利用了 Selkies WebRTC 技术来提供流畅的远程桌面体验,从而实现在 Linux 系统上运行微信/QQ客户端,并通过任何支持现代浏览器的设备进行访问。

核心功能与特性
该解决方案具备一系列突出特点,旨在提供便捷、安全且功能完备的体验:
- 🌐 浏览器直接访问:无需在本地计算机安装任何客户端软件,仅需通过支持 WebRTC 的网页浏览器即可连接并使用完整的微信或QQ功能。
- 🐳 Docker化容器部署:采用容器化部署方式,将所有依赖和环境打包,实现了良好的环境隔离,部署过程简单快捷。
- 🔒 独立数据持久化存储:支持将用户配置和聊天记录等数据映射并存储在容器之外的本机目录中,确保数据在容器更新或重建后不会丢失。
- 🎨 完善的中文环境支持:容器内预置了完整的中文字体,并进行了本地化设置,同时兼容本地中文输入法的正常使用。
- 🖼️ 便捷的图片复制功能:用户可以通过侧边栏的控制面板启用图片复制功能,方便地将会话中的图片保存到本地。
- 📁 支持双向文件传输:同样通过侧边栏面板,用户可以轻松地在本地计算机与远程运行的微信/QQ客户端之间传输文件。
- 🖥️ 广泛架构兼容性:提供适用于 AMD64(如 Intel/AMD)和 ARM64(如苹果 M 系列、树莓派)主流 CPU 架构的镜像,适应性广。
- 🔧 可选硬件加速:支持调用宿主机的 GPU 资源(如核显)进行图形渲染加速,以提升视频播放等场景的流畅度。
- 🪟 集成窗口切换器:在界面左上角提供了悬浮窗切换按钮,便于用户将微信窗口切换到后台,为未来集成更多应用(如QQ)奠定了基础。
- 🤖 客户端自动启动:可通过环境变量灵活配置容器启动时是否自动运行微信或QQ客户端,满足不同使用习惯。
安装与配置步骤
推荐使用 Docker Compose 进行部署,管理起来更为清晰方便。
Docker Compose 配置文件示例
services:
wechat-selkies:
image: nickrunning/wechat-selkies:latest
container_name: wechat-selkies
ports:
- 3001:3001
environment:
- PUID=1000
- PGID=100
- TZ=Asia/Shanghai
- LC_ALL=zh_CN.UTF-8
- AUTO_START_WECHAT=true
- AUTO_START_QQ=false
volumes:
- ./config:/config
restart: unless-stopped
关键配置参数说明
基于NAS搭建Frigate智能监控中心:本地AI识别、全功能配置与性能优化全攻略
Frigate是一款基于实时AI目标检测技术的开源网络录像机。所有视频分析过程均在您的本地设备上完成,摄像头画面数据无需上传至云端,充分保障了您的隐私与数据安全。
该软件的核心功能与特性可归纳如下:
- 深度集成:通过自定义组件与Home Assistant实现紧密集成。
- 高效设计:采用智能策略,仅在必要时间和区域执行物体检测,最大化资源利用效率与系统性能。
- 实时处理:充分利用多进程架构,优先保障实时性而非处理每一帧画面。
- 智能触发:使用开销极低的画面变动检测技术,精准定位需要运行物体检测的位置。
- 独立AI推理:利用TensorFlow进行物体检测,并运行于独立进程中,以追求最高的帧处理速度。
- 灵活通信:通过MQTT协议进行通信,便于与其他智能家居或自动化系统集成。
- 智能存储:可根据检测到的物体类型设定差异化的录像保留时间。
- 持续录制:支持7x24小时不间断视频录制。
- 流媒体优化:通过RTSP重新流传输技术,有效减少对原始摄像头的直接连接数。
- 低延迟观看:支持WebRTC和MSE,为用户提供超低延迟的实时监控画面观看体验。
您可以通过其官方演示站点体验功能:https://demo.frigate.video
安装部署指南
推荐使用Docker Compose方式进行部署,以下是一份基础的配置示例:
services:
frigate:
image: ghcr.io/blakeblackshear/frigate:stable
container_name: frigate
ports:
- 8971:8971
- 8554:8554
- 8555:8555/tcp
- 8555:8555/udp
environment:
- FRIGATE_RTSP_PASSWORD=password
- TZ=Asia/Shanghai
volumes:
- ./storage:/media/frigate
- ./config:/config
- /etc/localtime:/etc/localtime:ro
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
restart: unless-stopped
关键参数解析(更多高级参数请查阅官方文档):
- 8971端口:HTTPS访问端口,用于管理员登录Web界面。
- 5000端口(可选):HTTP访问端口,通常供无需密码的匿名用户访问。
- 8554端口:RTSP流输出端口。
- 8555端口:WebRTC流输出端口。
- FRIGATE_RTSP_PASSWORD:环境变量,用于设置RTSP流的访问密码。
- TZ:环境变量,用于指定容器运行的时区。
- /media/frigate:卷映射路径,用于持久化存储监控录像文件。
- /config:卷映射路径,用于存储Frigate的配置文件及SQLite数据库。
- /etc/localtime:路径映射,用于保持容器与宿主机时区同步。
- /dev/dri/renderD128:设备映射,用于启用Intel核显硬件加速。
基本使用与配置
启动容器后,在浏览器中输入 https://您NAS的IP地址:8971 即可访问Frigate的Web管理界面(请注意使用HTTPS协议)。

初始登录提示:首次启动时,系统会自动生成管理员账户和密码。您需要通过查看Docker容器的日志来获取这些初始凭据。
docker logs frigate
在日志中查找包含“Username”和“Password”的行。

使用获取到的用户名和密码完成登录。

登录成功后,您将进入主面板。在未添加任何摄像头之前,界面中不会显示实时画面。
技术突破:社区补丁让树莓派5正式支持NVIDIA显卡运行

几个月前,GitHub用户@yanghaku发布了一组简洁的补丁,成功修复了树莓派(Raspberry Pi)平台对AMD显卡的GPU支持问题,甚至还展示了未公开的补丁使树莓派能够驱动NVIDIA RTX 3080显卡。

(参考链接:https://www.jeffgeerling.com/blog/2025/full-egpu-acceleration-on-pi-500-15-line-patch)
近期,GitHub用户@mariobalanica发布了一个更为全面的补丁,将同样的功能扩展到了英伟达(Nvidia)显卡上,实现了对NVIDIA显卡的原生支持。

(补丁链接:https://github.com/NVIDIA/open-gpu-kernel-modules/pull/972)
出于对这项技术的浓厚兴趣,我手头恰好有树莓派和NVIDIA显卡,便决定暂时搁置对GB10系统的测试计划,转而编译并验证mariobalanica提供的这个分支。
在树莓派5上构建NVIDIA显卡支持
由于相关代码仍处于积极开发阶段,以下操作步骤未来可能发生变动。
- 安装操作系统:使用树莓派官方的“Raspberry Pi Imager”工具,将Pi OS 13 “Trixie”写入一个新的启动盘。
- 系统更新:启动树莓派,在终端中执行以下命令以确保系统软件包为最新版本。
sudo apt update && sudo apt upgrade -y - 切换内核:当前补丁仅针对4K页大小的内核有效,而树莓派默认使用的是16K内核,因此需要切换。
在文件末尾添加一行:sudo nano /boot/firmware/config.txtkernel=kernel8.img,保存后重启。 - 重启系统:执行重启命令使内核更改生效。
sudo reboot - 下载驱动:从NVIDIA官方网站下载适用于ARM64架构的最新Linux驱动程序(本文测试版本为580.95.05)。 (驱动下载:https://www.nvidia.com/en-us/drivers/unix/)
- 安装驱动(不构建内核模块):运行下载的驱动安装程序,但跳过内核模块的构建步骤。
sudo sh ./NVIDIA-Linux-aarch64-580.95.05.run --no-kernel-modules - 克隆修改版内核模块:获取@mariobalanica修改后的开源NVIDIA内核模块代码。
cd ~/Downloads && git clone --branch non-coherent-arm-fixes https://github.com/mariobalanica/open-gpu-kernel-modules.git - 编译与安装内核模块:进入克隆的目录,编译并安装内核模块。
cd open-gpu-kernel-modules make modules -j$(nproc) sudo make modules_install -j$(nproc) - 更新模块依赖:运行以下命令以更新模块依赖关系数据库。
sudo depmod -a - 最终重启:完成所有步骤后,再次重启系统以加载新的NVIDIA内核模块。
sudo reboot
显卡显示输出问题
在我所使用的NVIDIA RTX A4000显卡上,暂时无法通过DisplayPort接口向显示器输出图像。系统日志dmesg中没有报告明显的错误,也没有出现黑屏仅带闪烁光标的情况(这与目前树莓派上运行某些Intel显卡驱动的表现不同,后者在未编译新版Mesa驱动时通常会出现该问题,但至少能通过Alt + F2切换到控制台)。
开源阅读器Reader完全指南:免费书籍管理、书源导入与多平台使用教程
Reader是一款支持自定义书源的开源阅读工具,专为网络文学爱好者设计,提供便捷、舒适的在线阅读体验。它允许用户从多种网络来源获取内容,并整合到统一的书架中进行管理。
该工具提供了一个公开的演示服务器,访问地址为 https://reader.nxnow.top,默认登录凭据为用户名 guest 和密码 guest123。用户可以通过这个实例快速体验基本功能。如需深入了解所有特性和配置选项,建议查阅官方详细文档,文档地址为 https://github.com/hectorqin/reader/blob/master/doc.md。
部署安装步骤
使用 Docker Compose 是部署 Reader 的常用方式。以下是一个基本的部署配置示例,通过该配置可以快速在本地或服务器上运行 Reader 服务。
services:
reader:
image: hectorqin/reader:latest
container_name: reader
ports:
- 8080:8080
environment:
- SPRING_PROFILES_ACTIVE=prod
volumes:
- ./log:/log
- ./storage:/storage
restart: always
在以上配置中,有几个关键参数需要注意。卷映射(volumes)部分定义了持久化存储的路径:/log 目录用于存放应用程序生成的日志文件,而 /storage 目录则用于保存用户导入的书源配置文件以及个人数据。本文演示的是基础的自用版本部署流程,用户也可以根据官方文档探索其他更高级的部署模式或参数调整。

功能使用详解
部署完成后,在浏览器地址栏输入 http://您NAS设备的IP地址:8080 即可访问 Reader 的网页管理界面。首次打开的界面设计较为简洁清晰,为了获得更好的视觉展示效果,下图中已切换为深色主题模式。


要开始使用网络阅读功能,首先需要导入书源。书源定义了工具可以从哪些网站抓取和解析图书内容。社区提供了多个公开的书源集合网站,例如: https://legado.aoaostar.com https://flowus.cn/zyzyk/share/07b5bf19-2397-4065-bc1c-aecb7c00f2d4

访问上述任意一个书源网站,页面通常会显示为 JSON 格式的书源列表。用户可以直接点击网站提供的下载链接获取 JSON 文件,或者手动复制全部内容。由于内容量可能较大,直接复制有时会导致浏览器响应缓慢,因此下载文件是更稳妥的方式。

获取书源文件后,进入 Reader 网页界面。在左侧功能导航栏中找到并点击“导入书源”选项,然后选择刚才下载的 JSON 文件进行上传。

系统会列出文件中的所有书源条目,默认处于全选状态。确认无误后,点击确定按钮即可开始批量导入。导入完成后,刷新一下网页,就能在书源管理页面中看到所有新添加的书源。


有一个使用技巧需要注意:有时直接点击书源网站内的“书海”或类似聚合页面可能无法正常加载书籍列表。更可靠的方法是使用 Reader 顶部的搜索框,直接输入想要阅读的书籍名称进行搜索。

从搜索结果中找到目标书籍后,点击“加入书架”按钮,即可将其添加到个人书架中。之后返回主界面的“书架”栏目,就能看到刚刚添加的书籍,并可以立即开始阅读。


在 PC 端的网页版本中,阅读器功能相当齐全,提供了目录导航、字体调整、背景切换等常见设置,足以满足大部分桌面阅读场景的需求。
浪潮SA5212M4硬盘笼深度组装体验:一份写给动手派玩家的实用与避坑指南

浪潮 SA5212M4 硬盘笼是一款拥有12个3.5英寸盘位的存储扩展设备。它内部集成了 Expander 控制芯片,仅需一条数据线即可识别全部硬盘,并支持多个硬盘笼进行串联扩展。其机头尺寸为 430×175×88mm(宽×长×高),非常适合构建大容量存储解决方案。该硬盘笼兼容 SATA、SAS 接口的机械硬盘或固态硬盘混插,理论单盘最大支持容量可达 18TB。

入手动机与理性评估
这个硬盘笼项目实际上已经完工有一段日子了,只是教程的撰写一直被搁置。促使我动手组装它的原因,主要源于日常测试NAS设备时,需要频繁使用多块500G硬盘。于是萌生了将所有散落的硬盘集中管理起来的想法,最终便有了这次DIY实践。
在决定效仿之前,我想分享几点关于硬盘笼的客观看法,希望能帮助你做出理性判断: 首先,你需要一个机架环境。如果没有现成的机柜,随意摆放不仅不美观,也存在安全隐患,这种情况下直接购买一个多盘位的NAS机箱可能更为便捷。其次,你得拥有足够数量的硬盘。我选择的这款是12盘位型号,手头大约有8块3.5英寸硬盘和一些2.5英寸硬盘,差不多能将其填满。如果你的硬盘数量有限,直接升级现有NAS的机箱或型号或许是更直接的选择。最后需要提醒的是,硬盘笼的功耗不容小觑。如果计划搭配全固态硬盘使用,在能耗方面可能并不会带来想象中的节省,具体原因相信你也能明白。
如果你的存储需求确实指向硬盘笼,我个人不太建议完全从零开始DIY。这个过程需要投入大量精力折腾,而且在成本上往往不具备优势。在二手交易平台上,已经组装调试好的成品售价大约在300元左右,一些专业卖家甚至能提供220元左右的低价。相比之下,像我这样自行采购所有部件并进行组装,总花费接近400元。

采购清单与成本明细
第一次涉足硬盘笼组装,难免踩坑,部分配件买贵了。以下是详细的物料清单,供你参考避坑(总花费484.69元):
12盘位硬盘笼核心:选用的是浪潮SA5212M4的机头,并搭配了一个定制外壳。正是看中了这个定制外壳的完成度,所以这部分的花费相对较高。

连接线材:采购了硬盘笼供电线和SFF-8643数据线各两根。这里被卖家“坑”了一下,发来的两条供电线长度竟然不一致。实际上,SFF-8643数据线只需一根就足以带动全部12个硬盘。

SAS控制卡:选择了浪潮的SAS3008 12G直通卡,附带半高和全高两种挡板。这里有个重要提醒:到手后务必立即测试!我的第一张卡刚到时测试正常,闲置一周后再用就坏了,好在卖家售后服务不错,爽快地进行了更换。

散热风扇:为了追求静音效果,选用了猫头鹰(Noctua)的PWM 8厘米风扇,当然价格也相对不菲。

专用供电模块:这是关键的安全部件!硬盘笼绝对不能直接胡乱接入普通电源,否则12V供电会直接烧毁设备。必须使用这种专用的供电模块,或者通过大4Pin转5V的线材来供电。因为无法忍受之前长短不一的供电线,我又额外以5元一条的价格购置了两条等长的。

智能风扇控制器:这是一个可以通过米家APP进行控制的PWM风扇控制器,无需手动调节,甚至可以与其他智能设备设置联动场景。

风扇分线器:因为总共安装了4个风扇,所以需要两个4Pin一分二的转接线才能全部接入控制器。选择不带尼龙网套的款式,或者直接使用一分四的线材会更便宜。

显卡6Pin延长线:主要用于将供电控制板内置到硬盘笼中,让外部只引出一根线,看起来更整洁。这个属于美观性投资,非必需。

风扇金属保护网罩:由于风扇是向内吸风为硬盘散热,加装网罩可以防止扇叶转动时打到内部杂乱的线材。

沉头硬盘螺丝:硬盘笼本身并未附带螺丝,家里也没有足够的存货,于是便购入了一包,价格不贵。

平头螺丝:定制外壳的部分螺丝孔位是空的,购买了一些用于补全。重点是机头与外壳中间有对应的螺丝孔,上紧螺丝可以使两者紧密结合,避免中部隆起。螺丝的直径刚好,但长度略长,后来我用剪钳截短了一部分。

组装实拍与细节展示
整个组装过程本身并不复杂,基本上属于“有手就会”的级别,因此不打算展开详述。通过下面的图片,你就能大致掌握要领。最终的成品效果令人满意,如果忽略功耗略高于预期这一点,几乎找不到其他明显的缺点。
硬盘托盘细节
托盘设计带有工作状态指示灯,正面把手上分布着许多用于辅助散热的开孔。
硬盘笼自带的托盘成色不算崭新,但好在没有生锈痕迹,整体做工处于一般水平。
服务器用的硬盘托盘似乎很少见到快拆设计,基本都需要依靠螺丝进行固定。
可以直观地看到安装2.5英寸和3.5英寸机械硬盘后的效果对比。

硬盘笼本体工艺
这种从服务器上退役的机头在工艺上还是可圈可点的,所用铁皮厚度适中,边缘处理也没有毛刺。
12个硬盘位并列排开,对于大多数有数据“仓鼠症”的玩家来说,容量应该是绰绰有余了。
背板不仅支持常见的SATA接口硬盘,也兼容SAS接口硬盘,从元器件布局来看用料扎实。

散热系统搭建
这里要特别介绍一下这款可连接米家的PWM风扇控制器,它似乎是由智能灯控模块改造而来。
起初担心将控制器内置会影响蓝牙信号连接,所以我特意在外壳上开了一个小孔将天线引出。事后证明这纯属多虑,即便完全内置也完全没有问题。
散热风扇为了极致静音选择了猫头鹰品牌,实际运行效果出色。风扇风向是直接吹向硬盘的,在扇叶前方加装的网罩有效避免了与线材的意外接触。
接线方面,四个风扇通过一分二转接线汇聚到PWM风扇控制器,而控制器本身则从供电模块的风扇接口取电。

背部理线与整体布局
未整理前的背部线缆显得相当凌乱,实际上硬盘笼内部的空间并不充裕,将所有部件塞进去已经接近极限。
关于电源供电线,销售供电模块的商家表示插一根就足够了,但既然线材已经备齐,我还是选择全部插上。
SFF-8643数据线可以随意插入背板上的任何一个接口,仅用一根线即可驱动全部12个硬盘。
供电模块上的接口已被线材插满。另外提一句,如果不需要精细控制风扇转速,可以直接将风扇插在供电模块自带的接口上。
经过简单的整理并将所有线缆连接到位后,整个背板看起来就完成了,这个过程几乎没有任何技术门槛。
合理的线缆管理不会阻碍风道,四个散热风扇完全能够吹透整个硬盘区域。
我家使用的是25厘米深的机架,网上很多DIY整机都过长,而这款硬盘笼的长度在23厘米以下,刚好合适。
定制的外壳上盖和下盖厚度可观,分量十足。预留的孔位与硬盘笼本体精准对应,可以使用短柄螺丝刀从硬盘笼内部进行紧固。
我还额外加装了一个PWM风扇控制器的物理开关,可以直接切断风扇电源或用于重置控制器以连接米家APP。
最终,硬盘笼背面只需引出数据线和供电线,外观非常简洁。
插满硬盘运行的效果。首次通电时务必切记,不要直接插入重要数据盘,先用一块无关紧要的硬盘进行测试,以免因接线错误导致所有硬盘损毁。

SAS直通卡的使用
我选择的这款直通卡功耗和发热量都比较大,强烈建议为其加装一个小风扇辅助散热。
购入后必须立即上机测试,好坏无法从外观判断。我的第一张卡就是后期损坏的,幸得商家更换。
价格方面倒不算昂贵,卖家通常已刷好固件,即插即用。
我目前的用法是,将全闪存NAS与一个显卡扩展坞配合使用。直通卡插在显卡坞上,其供电则从旁边的电源直接获取。

最终总结与功耗考量
总的来说,对于绝大多数个人用户,我并不推荐自行DIY组装硬盘笼。直接购买他人配套好的成品方案,往往更加省心且可能更省钱。然而,对于确有庞大数据存储需求的用户来说,将这样一个硬盘笼机头引入家庭机架环境,是一个颇具性价比的选择。相比庞大的多盘位机箱,它能更规整地融入机架,成本也相对可控。但我必须再次强调:切勿创造需求。这种硬盘笼对普通家庭用户而言完全是用不上的“神器”,没有必要跟风购入。

尽管组装完成已有一段时间,但我实际通电运行的频率并不高。核心原因在于其功耗表现未达预期。经过对比,我发现它甚至不如单独开启一台盘位较少的成品NAS作为存储设备来得省电。

荔枝相册完整使用指南:Docker部署与私有化照片管理实战
荔枝(Lychee)是一款开源且免费的照片管理工具,设计用于在您自己的服务器或网络存储空间上独立运行。它提供了媲美本地应用程序的完整体验,支持照片的上传、组织管理与共享。该工具集成了您所需的核心功能,并确保所有照片数据均安全地存储于您掌控的环境中。

您可以通过在线演示环境预先体验其功能: https://lychee-demo.fly.dev
部署安装:通过Docker Compose快速搭建
最便捷的部署方式是使用 Docker Compose。以下是一个完整的配置示例,您可以根据自己的网络环境调整参数。
services:
lychee:
image: lycheeorg/lychee:latest
container_name: lychee
ports:
- 8080:80
environment:
- PUID=1000
- PGID=1000
- PHP_TZ=Asia/Shanghai
- TIMEZONE=Asia/Shanghai
- APP_URL=http://192.168.31.90:8080
- DB_CONNECTION=mysql
- DB_HOST=lychee_db
- DB_PORT=3306
- DB_DATABASE=lychee
- DB_USERNAME=user
- DB_PASSWORD=password
volumes:
- ./conf:/conf
- ./uploads:/uploads
- ./sym:/sym
restart: unless-stopped
lychee_db:
image: mariadb:10
container_name: lychee_db
environment:
- MYSQL_ROOT_PASSWORD=rootpassword
- MYSQL_DATABASE=lychee
- MYSQL_USER=user
- MYSQL_PASSWORD=password
volumes:
- ./mysql:/var/lib/mysql
restart: unless-stopped
核心环境变量参数说明
为了确保服务正常运行,以下是对关键环境变量的简要解释(建议部署前查阅官方文档以获取最全面的信息)。
:::tips
- PUID(可选):用于设置容器内运行进程的用户ID,关系到文件权限。
- PGID(可选):用于设置容器内运行进程的用户组ID。
- PHP_TZ:配置PHP运行时使用的时区。
- TIMEZONE:设置系统时区。
- APP_URL:这是最重要的参数之一,需要配置为Lychee应用最终被访问的完整URL地址,请根据您的实际网络情况修改。
- DB_CONNECTION:指定数据库类型,例如mysql。
- DB_HOST:数据库服务的主机地址,在Compose网络中通常使用服务名。
- DB_PORT:数据库服务的连接端口。
- DB_DATABASE:指定要连接的数据库名称。
- DB_USERNAME:拥有上述数据库访问权限的用户名。
- DB_PASSWORD:对应用户的数据库访问密码。 :::
使用指南:从初始化配置到日常操作
完成部署后,在浏览器地址栏输入 http://您的服务器IP:8080 即可访问Lychee的Web界面。