Navidrome là một máy chủ nhạc mã nguồn mở cho phép bạn phát trực tuyến bộ sưu tập âm thanh cá nhân của mình từ bất kỳ đâu. Nó cho bạn quyền tự do nghe nhạc từ bất kỳ trình duyệt hay thiết bị di động nào. Giống như Spotify cá nhân của bạn vậy!
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách đưa Navidrome chạy an toàn bằng Podman trên Fedora Linux. Điểm hay nhất là vì Navidrome xây dựng các image container chính thức multi-architecture, bao gồm linux/amd64, linux/arm64 và linux/arm/v6/v7, nên thiết lập này có tính di động cao. Dù phần cứng của bạn là một máy chủ x86 PC tiêu chuẩn hay một Raspberry Pi low-powered dựa trên ARM, bài walk-through này đều đáp ứng được.
Các lệnh Podman trong bài chạy dưới người dùng thường (không dùng root); riêng các lệnh liên quan đến SELinux cần quyền sudo.
Image chính thức cho Navidrome Music Server có tại:
deluan/navidrome – Docker Image
Dùng image container chính thức với Podman và Podman Compose
Các image container có sẵn cho các nền tảng linux/amd64, linux/arm/v6, linux/arm/v7 và linux/arm64. Chúng chứa mọi thứ cần thiết để chạy Navidrome.
[nico@stamfordbridge navidrome\]$ podman pull deluan/navidrome
✔ docker.io/deluan/navidrome:latest
Trying to pull docker.io/deluan/navidrome:latest…
Getting image source signatures
Copying blob 75c0824146ea done |
Copying blob 4f4fb700ef54 done |
Copying blob 4f4fb700ef54 done |
Copying blob e1dbf20ea67c done |
Copying blob 1cc3d825d8b2 done |
Copying config 0c9bad3bd7 done |
Writing manifest to image destination
0c9bad3bd7305815d56fe588a64f9172a8bb6aa2bfef3ad77e764c8694e7e860
Nếu bạn bật SELinux trên máy chủ Fedora Linux, hãy thêm ngữ cảnh SELinux container_file_t cho thư mục Data và Music cùng toàn bộ nội dung bên trong. Hai lệnh này cần quyền sudo.
[nico@stamfordbridge navidrome]$ sudo semanage fcontext -a -t container_file_t '/home/nico/navidrome/Data(/.\*)?'
[nico@stamfordbridge navidrome]$ sudo semanage fcontext -a -t container_file_t '/home/nico/navidrome/Music(/.\*)?'
Áp dụng chính sách SELinux cho thư mục Data và Music.
[nico@stamfordbridge navidrome]$ sudo restorecon -R /home/nico/navidrome/Data
[nico@stamfordbridge navidrome]$ sudo restorecon -R /home/nico/navidrome/Music
Đổi chủ sở hữu của /home/nico/navidrome/Data và /home/nico/navidrome/Music thành 1000.
[nico@stamfordbridge navidrome]$ podman unshare chown 1000:1000 /home/nico/navidrome/Data
[nico@stamfordbridge navidrome]$ podman unshare chown 1000:1000 /home/nico/navidrome/Music
Dùng podman-compose
Tạo tệp podman-compose.yml với nội dung sau (hoặc thêm dịch vụ navidrome bên dưới vào tệp hiện có của bạn):
[nico@stamfordbridge navidrome]$ cat podman-compose.yml
version: "3"
services:
navidrome:
image: deluan/navidrome:latest
user: 1000:1000 # should be owner of volumes
ports:
- "4533:4533"
restart: unless-stopped
environment:
# Optional: put your config options customization here. Examples:
ND_SCANSCHEDULE: 1h
ND_LOGLEVEL: info
ND_SESSIONTIMEOUT: 24h
ND_BASEURL: ""
volumes:
- "/home/nico/navidrome/Data:/data"
- "/home/nico/navidrome/Music:/music:ro"
Khởi động container navidrome bằng podman-compose up -d.
[nico@stamfordbridge navidrome]$ podman-compose up -d
Lưu ý rằng các biến môi trường ở trên chỉ là ví dụ và không bắt buộc. Các giá trị trong ví dụ đã là giá trị mặc định.
Dùng công cụ dòng lệnh podman
[nico@stamfordbridge navidrome]$ podman run -d - name navidrome - restart=unless-stopped - user $(id -u):$(id -g) -v /home/ec2-user/navidrome/Music:/music -v /home/ec2-user/navidrome/Data:/data -p 4533:4533 -e ND_LOGLEVEL=info deluan/navidrome:latest
c00c31d49ec5e0f0a0141aef9e2b69abf6a1b5f0604515bc7111f3e0ef398237
[nico@stamfordbridge navidrome]$ podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c00c31d49ec5 docker.io/deluan/navidrome:latest 9 seconds ago Up 9 seconds 0.0.0.0:4533->4533/tcp navidrome
Tùy chỉnh
Đối số user lý tưởng nên phản ánh UID:GID của chủ sở hữu thư viện nhạc để tránh các vấn đề về quyền. Để thử nghiệm, bạn có thể bỏ qua chỉ thị này, nhưng theo nguyên tắc chung, bạn không nên chạy container production với quyền root.
Hãy nhớ đổi đường dẫn volume để trỏ đến đường dẫn cục bộ của bạn.
/datalà nơi Navidrome lưu DB và cache,/musiclà nơi lưu các tệp nhạc của bạn.Các tùy chọn cấu hình có thể được tùy chỉnh bằng biến môi trường khi cần. Với podman-compose, chỉ cần thêm chúng vào phần environment hoặc tệp yml. Với podman CLI, dùng tham số
-e. Ví dụ:-e ND_SESSIONTIMEOUT=24h.Nếu bạn muốn dùng tệp cấu hình với Navidrome chạy trong Podman, bạn có thể tạo tệp cấu hình
navidrome.tomltrong thư mục/datavà đặt tùy chọnND_CONFIGFILE=/data/navidrome.toml.




