Thoát khỏi mô hình thuê nhạc trả phí hàng tháng
Đó là lúc 2 giờ sáng khi Spotify quyết định album hip-hop underground yêu thích của tôi không còn ‘khả dụng ở khu vực của bạn’. Những tranh chấp bản quyền và phí hàng tháng tăng vọt—hiện đã là 11,99 USD đối với nhiều người—cuối cùng đã đẩy tôi đến giới hạn. Tôi có 400GB file FLAC chất lượng cao nằm không trên NAS trong khi tương tự như cách tôi đã tự lưu trữ ảnh và video trên hệ thống riêng, tôi vẫn phải trả tiền cho các luồng nhạc nén mà tôi thậm chí không sở hữu. Tôi cần một cách để truyền tải dữ liệu của mình đến điện thoại và ô tô mà không cần sự cồng kềnh của một bộ đa phương tiện khổng lồ.
Nhiều người tìm đến Jellyfin cho việc này, nhưng nó thường mang lại cảm giác như đang dùng một chiếc xe đầu kéo để đưa một bức thư. Nó quá nặng nề, việc xử lý metadata cho âm nhạc đôi khi khá rắc rối, và giao diện thì ưu tiên cho video. Navidrome thì khác. Được viết bằng Go, nó coi bộ sưu tập âm thanh của bạn là ưu tiên hàng đầu, chứ không phải một tính năng bổ sung.
Tại sao Navidrome chiến thắng trong phân khúc HomeLab
Tôi đã đánh giá các ứng cử viên quen thuộc, bao gồm cả việc xây dựng máy chủ Audiobook chuyên nghiệp, trước khi chốt bộ công cụ này. Plex rất bóng bẩy nhưng lại khóa các tính năng âm nhạc tốt nhất (Plexamp) sau một gói trả phí. Jellyfin gặp khó khăn trên VPS RAM 1GB của tôi. Airsonic, dựa trên Java, khiến quạt máy chủ của tôi rú lên chỉ bằng việc lướt qua thư viện. Navidrome đạt đến điểm cân bằng hoàn hảo về hiệu quả.
- Dấu chân hệ thống tối thiểu: Phiên bản của tôi chỉ chiếm khoảng 45MB RAM khi nghỉ. Ngay cả khi lập chỉ mục 50.000 bản nhạc, nó hiếm khi vượt quá mốc 200MB.
- Hệ sinh thái Subsonic: Đây chính là vũ khí bí mật. Bằng cách triển khai Subsonic API, bạn có quyền truy cập vào hàng thập kỷ các ứng dụng bên thứ ba như Symfonium, Dsub và Amperfy.
- Ánh xạ hệ thống tệp thuần túy: Nó sẽ không chôn vùi các tệp của bạn trong một cơ sở dữ liệu riêng biệt. Nếu bạn sắp xếp lại các thư mục trên đĩa, Navidrome chỉ đơn giản là phản ánh những thay đổi đó trên giao diện người dùng.
Tôi đã sử dụng thiết lập cụ thể này trong 14 tháng. Nó chưa bao giờ yêu cầu một lần khởi động lại thủ công nào hoặc bị rò rỉ bộ nhớ, ngay cả khi có ba thành viên trong gia đình cùng phát nhạc đồng thời.
Các đánh đổi: Điều gì cần mong đợi
Không có công cụ nào là hoàn hảo. Trước khi bạn tải image về, hãy hiểu rằng Navidrome có một triết lý rất cụ thể.
Ưu điểm
- Giao diện tức thì: Giao diện web dựa trên React cực kỳ nhanh nhạy. Tìm kiếm một nghệ sĩ trong số hàng ngàn người chỉ mất vài phần nghìn giây.
- Chuyển mã trực tiếp (On-the-fly): Nếu bạn đang sử dụng kết nối 5G chập chờn, Navidrome sử dụng FFMPEG để nén tệp FLAC 35MB thành luồng Opus 2MB trong thời gian thực.
- Đa người dùng thực thụ: Bạn có thể tạo các tài khoản riêng biệt. Sở thích nhạc pop thập niên 80 đầy nghi vấn của đối tác sẽ không làm hỏng số liệu thống kê ‘Nghe nhiều nhất’ được cá nhân hóa của bạn.
Nhược điểm
- Yêu cầu thẻ (tag) hoàn hảo: Navidrome rất khắt khe với ID3 tag. Nếu thư viện của bạn chỉ gồm các tệp ‘track01.mp3’, giao diện sẽ là một mớ hỗn độn. Bạn phải dọn dẹp thư viện của mình bằng MusicBrainz Picard trước.
- Không hỗ trợ video: Đây là một chiếc hộp âm nhạc chuyên dụng. Nó sẽ không lưu trữ các phim hòa nhạc hay video âm nhạc của bạn.
Kiến trúc: Docker và Bảo mật
Tránh chạy Navidrome như một tệp nhị phân độc lập. Container hóa giúp việc cập nhật dễ dàng như một lệnh docker compose pull. Tôi luôn kết hợp nó với một reverse proxy như Traefik hoặc Nginx Proxy Manager. Bạn không bao giờ nên để lộ Subsonic API ra mạng công cộng qua giao thức HTTP không mã hóa và nên ngừng bỏ qua các cảnh báo SSL để đảm bảo an toàn cho dữ liệu cá nhân.
Từng bước: Triển khai máy chủ của bạn
Bắt đầu bằng cách sắp xếp các thư mục của bạn. Việc tách biệt dữ liệu cấu hình khỏi phương tiện giúp việc sao lưu nhanh hơn đáng kể.
mkdir -p ~/homelab/navidrome/data
mkdir -p ~/homelab/navidrome/music
Tiếp theo, tạo tệp docker-compose.yml của bạn. Cấu hình này được tinh chỉnh để ổn định và bao gồm đường dẫn tài nguyên cụ thể.
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
container_name: navidrome
user: 1000:1000 # Kiểm tra UID/GID của bạn bằng lệnh 'id'
ports:
- "4533:4533"
restart: unless-stopped
environment:
ND_MUSICFOLDER: "/music"
ND_DATAFOLDER: "/data"
ND_CACHEFOLDER: "/data/cache"
ND_LOGLEVEL: "info"
ND_SESSIONTIMEOUT: "24h"
ND_SCANINTERVAL: "1h"
ND_TRANSCODINGCACHESIZE: "500MB"
volumes:
- ./data:/data
- /path/to/your/music:/music:ro # Gắn kết chỉ đọc (read-only) để bảo vệ các tệp của bạn
Triển khai bộ công cụ bằng một lệnh:
docker compose up -d
Cấu hình và Thiết lập di động
Truy cập bảng điều khiển tại http://your-server-ip:4533 để tạo thông tin đăng nhập quản trị. Nếu bạn muốn sử dụng ứng dụng di động, hãy đảm bảo ‘Subsonic API’ được bật trong cài đặt hồ sơ người dùng.
Để có trải nghiệm tốt nhất, tôi khuyên dùng Symfonium trên Android hoặc Amperfy trên iOS. Trỏ ứng dụng đến tên miền của bạn (ví dụ: https://music.yourdomain.com), nhập thông tin đăng nhập và xem toàn bộ bộ sưu tập của bạn đồng bộ hóa trong vài giây. Nó mang lại trải nghiệm giống như Spotify mà không tốn phí hàng tháng cho tài khoản ngân hàng của bạn. Bạn cũng có thể tự động hóa thư viện giải trí để mọi thứ luôn sẵn sàng và cập nhật.
Khắc phục vấn đề ‘Nghệ sĩ không xác định’
Nếu bảng điều khiển của bạn trông như một mớ hỗn độn các thư mục ‘Unknown’, metadata của bạn chính là thủ phạm. Sử dụng công cụ CLI như beets or giao diện đồ họa MusicBrainz Picard để sửa các thẻ của bạn. Sau khi cập nhật, hãy kích hoạt ‘Quick Scan’ trong Navidrome. Thiết lập này đã hoàn toàn thay thế các dịch vụ thương mại đối với tôi. Độ trễ là không tồn tại, và lần đầu tiên sau nhiều năm, tôi thực sự sở hữu âm nhạc mà mình đang nghe.

