SSD Nodes Learn 🎉 VPS از $5.50/ماه
راهنماها Matt Connorتوسط Matt Connor

راهنمای راه‌اندازی استریم موسیقی شخصی روی VPS با Navidrome

با نصب Navidrome روی VPS، آرشیو موسیقی خود را به سرویس استریم شخصی تبدیل کنید. این راهنما شامل تنظیمات TLS، مدیریت فضای دیسک، استفاده از کلاینت‌های Subsonic و روش‌های تهیه بک‌آپ است.

مزایای استریم موسیقی به صورت self-hosted روی یک VPS

استریم موسیقی به صورت self-hosted روی یک VPS به این معناست که شما هم نرم‌افزار پخش‌کننده را اجرا می‌کنید و هم فایل‌های موسیقی را تأمین می‌کنید. سرور، فایل‌هایی را که از قبل مالکیت آن‌ها را دارید میزبانی می‌کند و هر گوشی هوشمندی می‌تواند از طریق اینترنت و با یک ورود ساده به آن دسترسی داشته باشد. پیش از شروع، صادقانه به این نکته توجه کنید: این روش جایگزین پخش‌کنندهٔ یک سرویس استریم می‌شود، نه کاتالوگ آن. تا زمانی که موسیقی جدیدی نخرید یا آن را rip نکنید و فایلش را روی سرور کپی نکنید، هیچ محتوای جدیدی به کتابخانهٔ شما اضافه نخواهد شد.

فشار فایل‌های صوتی بر سرور بسیار کمتر از ویدیو است. حجم فایل‌ها کوچک است، گوشی‌ها تمامی فرمت‌های رایج را بدون نیاز به کمک پردازش می‌کنند و هر شنونده پهنای باند کمتری نسبت به یک تماس ویدیویی مصرف می‌کند. در این سناریو، CPU چالش اصلی نیست؛ فضای دیسک محدودیت واقعی است. دو عامل دیگر که موفقیت این راهکار را تعیین می‌کنند، کیفیت تگ‌های فایل‌های شما و قابلیت اپلیکیشن گوشی برای دانلود موسیقی جهت استفادهٔ آفلاین است.

Navidrome انتخاب پیش‌فرض زمانی است که فقط به فایل‌های صوتی اهمیت می‌دهید. این برنامه یک فایل باینری Go در یک کانتینر است و وضعیت خود را در یک دیتابیس SQLite واحد نگهداری می‌کند. این برنامه از API پروتکل Subsonic پشتیبانی می‌کند؛ به همین دلیل است که خانواده بزرگی از اپلیکیشن‌های موبایل شخص ثالث برای آن وجود دارد. نسخه 0.63.2 در آگوست 2026 نسخه جاری بود. این پروژه ادعا می‌کند که روی سخت‌افزارهای ضعیفی مانند Raspberry Pi Zero به‌خوبی اجرا می‌شود، بنابراین نرم‌افزار سرور بخشی نیست که بابت آن هزینه پرداخت کنید.

Jellyfin اگر از قبل Jellyfin را به عنوان مدیا سرور روی یک VPS برای ویدیو اجرا می‌کنید، ارزش استفاده دارد. کتابخانه موسیقی آن کار می‌کند و Finamp یک اپلیکیشن موسیقی Jellyfin برای اندروید و iOS است که آهنگ‌ها را برای گوش دادن آفلاین دانلود می‌کند. محدودیت اصلی، API است. Jellyfin هیچ endpoint داخلی برای Subsonic ندارد و پلاگین جامعه کاربری که این قابلیت را اضافه می‌کرد، از سال 2022 دیگر به‌روزرسانی نشده است؛ بنابراین اکوسیستم اپلیکیشن‌های Subsonic برای آن در دسترس نیست. شما باید از اپلیکیشن‌هایی استفاده کنید که با API اختصاصی Jellyfin سازگار هستند و تعداد آن‌ها کمتر است.

Funkwhale گزینه فدرال (federated) است و نسخه 2.0 آن در مارس 2026 منتشر شد. یک سرور Funkwhale به نام pod شناخته می‌شود. پادها از طریق ActivityPub (پروتکلی که پشت Mastodon قرار دارد) با هم فدره می‌شوند و کاربر یک پاد می‌تواند کتابخانه عمومی پاد دیگری را دنبال کند. این برنامه نیز بخشی از API پروتکل Subsonic را پشتیبانی می‌کند، با یک تفاوت مهم: هر کاربر باید یک رمز عبور جداگانه برای Subsonic در تنظیمات خود تعیین کند، زیرا پروتکل Subsonic انتظار دارد رمز عبوری داشته باشد که سرور بتواند آن را بخواند. نصب Funkwhale سنگین‌تر است، زیرا علاوه بر وب‌اپلیکیشن، به PostgreSQL و یک صف وظایف (task queue) نیاز دارد.

اگر به دنبال قابلیت فدرال نیستید یا Jellyfin از قبل روی سرور شما اجرا نمی‌شود، Navidrome را انتخاب کنید. باقی این راهنما به راه‌اندازی Navidrome با استفاده از Docker می‌پردازد.

چرا API نرم‌افزار Subsonic تعیین می‌کند از چه اپلیکیشن موبایلی استفاده کنید

نرم‌افزار Subsonic یک سرور موسیقی بود که API مبتنی بر HTTP آن به زبان مشترک برای سرویس‌های صوتی self-hosted تبدیل شد و OpenSubsonic پروژه‌ای جامعه‌محور است که به توسعهٔ آن ادامه می‌دهد. همین پیشینه باعث شده است که شما برای گوشی خود حق انتخاب داشته باشید. Navidrome هیچ اپلیکیشن موبایل اختصاصی ارائه نمی‌کند و نیازی هم به آن ندارد، زیرا هر کلاینت Subsonic با استفاده از آدرس سرور و مشخصات حساب کاربری شما به آن متصل می‌شود.

این موضوع بیش از هر چیز برای قابلیت همگام‌سازی آفلاین (offline sync) اهمیت دارد؛ قابلیتی که تعیین می‌کند آیا این سیستم در استفادهٔ روزمره کارآمد است یا خیر. گوشی شما در داخل تونل به سرور دسترسی ندارد، بنابراین کلاینت باید فایل‌ها را از قبل در حافظهٔ محلی ذخیره کرده باشد. همهٔ کلاینت‌ها قابلیت استریم دارند، اما فقط برخی از آن‌ها امکان دانلود را فراهم می‌کنند. فهرست کلاینت‌ها در navidrome.org/apps مشخص می‌کند کدام‌یک از این قابلیت پشتیبانی می‌کنند و تنوع انتخاب در هر دو پلتفرم زیاد است: Substreamer و Ultrasonic در Android، و Amperfy و play:Sub در iOS. چندین مورد از قدرتمندترین کلاینت‌ها پولی هستند و Symfonium در Android گزینه‌ای است که کاربران بیش از همه از آن نام می‌برند. پیش از تصمیم‌گیری نهایی، دو مورد را نصب و امتحان کنید، زیرا این بخشی از سیستم است که هر روز با آن سروکار دارید.

کتابخانه موسیقی به چه مقدار فضای ذخیره‌سازی نیاز دارد؟

ChartStorage per 1,000 albums by audio format
The data behind this chart
[
  {
    "label": "Opus 128k",
    "kbps": 128,
    "gb_per_1000_albums": 43
  },
  {
    "label": "MP3 320k",
    "kbps": 320,
    "gb_per_1000_albums": 108
  },
  {
    "label": "FLAC 16/44.1",
    "kbps": 900,
    "gb_per_1000_albums": 304
  },
  {
    "label": "FLAC 24/96",
    "kbps": "3,000",
    "gb_per_1000_albums": "1,013"
  }
]

این ارقام، مقادیر تقریبی بر اساس نرخ بیت (bitrate) هستند و اندازه‌گیری دقیق یک مجموعه واقعی نیستند؛ محاسبه آن نیز به قدری ساده است که می‌توانید با فایل‌های خودتان آن را بررسی کنید. یک آلبوم را 45 دقیقه در نظر بگیرید که معادل 2700 ثانیه است. نرخ بیت به کیلوبیت بر ثانیه را در 2700 ضرب کرده و سپس بر 8000 تقسیم کنید تا حجم به مگابایت به‌دست آید. با نرخ 320 kbps، حجم یک آلبوم حدود 108 مگابایت خواهد بود، بنابراین هزار آلبوم حدود 108 گیگابایت فضا اشغال می‌کند.

فرمت‌های بدون افت کیفیت (Lossless) پاسخ را تغییر می‌دهند. فایل‌های FLAC با کیفیت CD به‌طور میانگین نزدیک به 900 kbps در محتوای معمولی هستند، بنابراین همان هزار آلبوم به حدود 304 گیگابایت فضا نیاز دارد. یک کتابخانه 24 بیتی با نرخ نمونه‌برداری 96 کیلوهرتز، به حدود 1,013 گیگابایت می‌رسد؛ یعنی یک ترابایت کامل برای مجموعه‌ای که لیست آن را می‌توان روی کاغذ نوشت. یک نسخه Opus مناسب برای گوشی با نرخ 128 kbps، همان هزار آلبوم را در 43 گیگابایت جای می‌دهد. دستور du -sh /path/to/music را روی کتابخانه‌ای که هم‌اکنون دارید اجرا کنید، زیرا هنگام انتخاب طرح، تنها میانگین نرخ بیت فایل‌های خودتان اهمیت دارد.

پهنای باند بخش کوچک‌تر هزینه‌هاست. یک استریم 320 kbps معادل 40 کیلوبایت بر ثانیه است، بنابراین یک ساعت گوش دادن حدود 144 مگابایت ترافیک مصرف می‌کند. صد ساعت در ماه حدود 14 گیگابایت می‌شود که هیچ محدودیت انتقال داده‌ای در VPSها آن را حس نمی‌کند. استثنا، اولین همگام‌سازی آفلاین گوشی است که می‌تواند در یک شب ده‌ها گیگابایت ترافیک ایجاد کند.

لایه ذخیره‌سازی یا لایه پردازشی؟

یک سرور موسیقی مجموعه‌ای بزرگ از داده‌های سرد (cold data) است که تقریباً هیچ پردازش سنگینی روی آن انجام نمی‌شود. خواندن یک فایل با سرعت 40 کیلوبایت بر ثانیه، هر دیسکی را در حالت بیکار نگه می‌دارد و CPU تنها در زمان اسکن کتابخانه یا transcoding درگیر می‌شود که در اکثر مواقع نیازی به آن نخواهید داشت. بنابراین، NVMe سریع در پلن‌های پردازشی در اینجا هیچ مزیتی برای شما ندارد، در حالی که قیمت آن به ازای هر گیگابایت، مانع اصلی شما برای آپلود نسخه‌های FLAC است. این دقیقاً موردی است که یک VPS ذخیره‌سازی بر یک VPS معمولی برتری دارد، زیرا قیمت‌گذاری این پلن‌ها بر اساس ترابایت است، نه تعداد هسته پردازنده.

میزان حافظه مورد نیاز ناچیز است. Navidrome یک کتابخانه شخصی را با چند صد مگابایت رم مدیریت می‌کند و اوج مصرف حافظه در زمان اسکن کتابخانه رخ می‌دهد، نه هنگام پخش موسیقی. به سرور خود 1 گیگابایت یا 2 گیگابایت رم اختصاص دهید و باقی بودجه را صرف دیسک کنید.

ابتدا دایرکتوری‌ها را ایجاد کنید و مالکیت آن‌ها را به شناسه کاربری که کانتینر با آن اجرا می‌شود، اختصاص دهید. اگر با Compose آشنا نیستید، Docker Compose روی یک VPS مفروضات این فایل را توضیح می‌دهد.

sudo install -d -m 755 -o 1000 -g 1000 /srv/navidrome /srv/music

فایل docker-compose.yml را در دایرکتوری اختصاصی خود ایجاد کنید:

services:
  navidrome:
    image: deluan/navidrome:0.63.2
    user: "1000:1000"
    ports:
      - "127.0.0.1:4533:4533"
    restart: unless-stopped
    environment:
      ND_LOGLEVEL: "info"
      ND_SESSIONTIMEOUT: "24h"
      ND_SCANNER_SCHEDULE: "@every 24h"
      ND_BACKUP_PATH: "/data/backup"
      ND_BACKUP_SCHEDULE: "0 4 * * *"
      ND_BACKUP_COUNT: "7"
    volumes:
      - /srv/navidrome:/data
      - /srv/music:/music:ro
docker compose up -d
docker compose ps

docker compose ps باید وضعیت سرویس را به جای restarting، در حالت running نشان دهد. کانتینری که در یک حلقه مدام restart می‌شود، تقریباً همیشه با مشکل مجوز دسترسی در /srv/navidrome مواجه است و docker compose logs navidrome نام فایلی را که امکان نوشتن در آن وجود نداشته، مشخص می‌کند.

چهار جزئیات در این فایل قابل توضیح است. پورت فقط روی 127.0.0.1 منتشر شده است، بنابراین سرور از طریق reverse proxy در دسترس است و نه از طریق پورت 4533 در اینترنت آزاد: Docker قوانین فایروال خود را اعمال می‌کند، بنابراین یک 4533:4533 ساده حتی در سروری که ufw همه چیز را مسدود کرده است، همچنان در معرض دسترسی قرار می‌گیرد. حجم موسیقی (music volume) فقط‌خواندنی (read-only) است، به این معنی که یک باگ در اسکنر نمی‌تواند تنها نسخه فایل‌های شما را حذف کند. ND_SCANNER_SCHEDULE به‌طور پیش‌فرض غیرفعال است و راهنماهایی که پیش از نسخه 0.55 Navidrome نوشته شده‌اند، آن را ND_SCANSCHEDULE می‌نامند؛ نامی که دیگر وجود ندارد. سه تنظیم پشتیبان‌گیری، قابلیت داخلی تهیه نسخه پشتیبان از دیتابیس را فعال می‌کنند که بخش پشتیبان‌گیری در ادامه به آن متکی است.

انتقال موسیقی به سرور

کتابخانه موسیقی خود را با استفاده از rsync منتقل کنید. این ابزار در صورت قطع اتصال، به‌جای شروع مجدد، عملیات را از همان‌جا ادامه می‌دهد.

rsync -av --info=progress2 ~/Music/ user@music.example.com:/srv/music/

rsync -avP /path/to/local/music/ user@your-vps:/path/to/docker/music/

اسلش انتهایی در مسیر مبدأ اهمیت دارد. بدون آن، شما با /srv/music/Music مواجه می‌شوید. پس از پایان کپی، مالکیت فایل‌ها را اصلاح کنید:

sudo chown -R 1000:1000 /srv/music
id -u

chown -R 1000:1000 /path/to/docker/music/

کانتینر با شناسه کاربری 1000 اجرا می‌شود و mount به‌صورت read-only است؛ بنابراین هر فایل باید توسط این شناسه قابل خواندن باشد. اگر حساب SSH شما در VPS دارای uid 1000 نیست، فایل‌های کپی‌شده با مالکیت دیگری ذخیره می‌شوند و اسکنر هیچ آهنگی پیدا نمی‌کند، در حالی که رابط وب همچنان خالی باقی می‌ماند. دستور id -u شناسه واقعی شما را نمایش می‌دهد و نحوه عملکرد PUID و PGID در کانتینرهای Docker نگاشت این شناسه‌ها را به‌طور کامل توضیح می‌دهد.

یک reverse proxy و TLS برای دسترسی به سرویس از هر مکان

یک رکورد DNS از نوع A به سمت VPS خود تنظیم کنید و سپس سه خط زیر را در Caddy قرار دهید:

music.example.com {
    reverse_proxy 127.0.0.1:4533
}
sudo systemctl reload caddy

Caddy گواهی را در اولین درخواست دریافت می‌کند. پورت‌های 80 و 443 باید باز باشند، زیرا چالش ACME (محیط مدیریت خودکار گواهی) روی پورت 80 پاسخ داده می‌شود. در nginx، عبارت proxy_buffering off; را به بلوک location اضافه کنید: Navidrome رویدادهای پیشرفت را از طریق یک اتصال طولانی‌مدت به رابط وب ارسال می‌کند و با فعال بودن buffering، رابط کاربری منتظر پاسخی می‌ماند که nginx هنوز آن را نگه داشته است. اگر سرویس را به جای زیردامنه اختصاصی، در مسیری مانند /music ارائه می‌دهید، ND_BASEURL را روی همان مسیر تنظیم کنید، در غیر این صورت رابط کاربری به صورت یک صفحه خالی بارگذاری می‌شود. سه پروکسی رایج در Nginx, Caddy and Traefik on a VPS مقایسه شده‌اند.

سایت را باز کرده و اولین حساب کاربری را ایجاد کنید. هیچ رمز عبور پیش‌فرضی وجود ندارد و از اولین بازدیدکننده خواسته می‌شود کاربر مدیر (admin) را بسازد؛ بنابراین پیش از آنکه آدرس را در اختیار کسی قرار دهید، این کار را انجام دهید. سپس مسیری که کلاینت تلفن همراه استفاده می‌کند را دقیقاً تست کنید:

SALT=$(openssl rand -hex 6)
TOKEN=$(printf '%s%s' 'YOUR_PASSWORD' "$SALT" | md5sum | cut -d' ' -f1)
curl -s "https://music.example.com/rest/ping.view?u=YOUR_USER&t=$TOKEN&s=$SALT&v=1.16.1&c=curl&f=json"

یک پاسخ سالم با {"subsonic-response":{"status":"ok" شروع می‌شود و navidrome را به عنوان نوع سرور معرفی می‌کند. وجود "status":"failed" و کد خطای 40 در بدنه پاسخ به این معناست که پروکسی به‌درستی کار می‌کند و اعتبارنامه‌ها اشتباه هستند. خطای گواهی در این مرحله اولین چیزی است که باید رفع شود، زیرا اکثر کلاینت‌های تلفن همراه گواهی نامعتبر را با پیامی رد می‌کنند که هیچ اطلاعات مفیدی به کاربر نمی‌دهد.

چرا کتابخانه شما پس از اولین اسکن به‌درستی نمایش داده نمی‌شود

Navidrome به‌جای پوشه‌ها، بر اساس تگ‌ها (tags) مرور می‌کند؛ بنابراین آنچه می‌بینید توسط تگ‌ها تعیین می‌شود. آهنگی که تگ album artist ندارد، تحت عنوان track artist دسته‌بندی می‌شود. به همین دلیل است که یک آلبوم مجموعه‌ای (compilation) که در هر آهنگ هنرمند متفاوتی دارد، به بیست آلبوم تک‌آهنگی تبدیل می‌شود. این مشکل را در فایل‌ها اصلاح کنید، نه در Navidrome: ابزارهای MusicBrainz Picard و beets هر دو می‌توانند یک آلبوم را در پایگاه داده MusicBrainz جستجو کرده و تگ‌های استاندارد را روی فایل‌ها بازنویسی کنند.

Navidrome همچنین تگ‌های چند-هنرمندی را به هنرمندان جداگانه تقسیم می‌کند؛ بنابراین نام گروهی که شامل جداکننده (separator) باشد به اشتباه تفکیک می‌شود. AC/DC نمونه‌ای است که همه با آن مواجه می‌شوند. ND_SCANNER_ARTISTSPLITEXCEPTIONS شامل نام‌هایی است که هرگز نباید تقسیم شوند.

فایل‌های جدید چند ثانیه پس از قرارگیری در مسیر، توسط یک file watcher شناسایی می‌شوند. این watcher به اعلان‌های تغییر هسته (kernel change notifications) وابسته است و این اعلان‌ها برای فایل‌هایی که روی یک network share (که از ماشین دیگری mount شده) نوشته می‌شوند، ارسال نمی‌گردند. بنابراین در چنین تنظیماتی، استفاده از ND_SCANNER_SCHEDULE دوره‌ای تنها راه به‌روز نگه داشتن کتابخانه است. یک اسکن کامل (full rescan) تگ‌های تمام فایل‌ها را می‌خواند که در کتابخانه‌های بزرگ فرآیندی کند است؛ این یکی از دلایلی است که محافظت از پایگاه داده در ادامه اهمیت دارد.

کاربران، لیست‌های پخش و اشتراک‌گذاری

مدیر سیستم حساب‌های دیگر را در رابط وب ایجاد می‌کند و امکان ثبت‌نام توسط خود کاربر وجود ندارد. هر کاربر تعداد دفعات پخش، لیست‌های پخش، موارد دلخواه و امتیازات جداگانه‌ای دارد، بنابراین سلیقهٔ موسیقی اعضای یک خانواده با یکدیگر ترکیب نمی‌شود.

لیست‌های پخش از دو طریق وارد می‌شوند. لیست پخشی که در یک کلاینت ساخته شود، در دیتابیس ذخیره می‌گردد. یک فایل .m3u که در پوشهٔ کتابخانه قرار داده شود، در حین اسکن وارد می‌شود؛ این ساده‌ترین روش برای انتقال لیست‌های پخش از یک پخش‌کنندهٔ دسکتاپ است. لیست‌های پخش هوشمند در واقع فایل‌های .nsp هستند؛ فایل‌های کوچک JSON که حاوی قوانین بوده و به همان روش وارد می‌شوند و با تغییر کتابخانه، خودبه‌خود به‌روزرسانی می‌گردند.

قابلیت اشتراک‌گذاری به‌صورت پیش‌فرض از نسخه 0.63.0 که در ژوئیه 2026 منتشر شد، فعال است. این قابلیت به کاربر اجازه می‌دهد یک لینک عمومی برای یک آلبوم ایجاد کند که هر کسی بدون نیاز به ورود به سیستم، قادر به باز کردن آن باشد. در سروری که کل کتابخانهٔ شما را میزبانی می‌کند، ممکن است این رفتار مطلوب نباشد؛ تنظیم ND_ENABLESHARING روی false این قابلیت را غیرفعال می‌کند.

پشتیبان‌گیری از پایگاه داده به‌صورت مجزا از فایل‌های موسیقی

پشتیبان‌گیری خود Navidrome تنها شامل پایگاه داده است. مستندات به‌صراحت بیان می‌کنند که فرایند پشتیبان‌گیری، پایگاه داده شامل کاربران، تعداد دفعات پخش (play counts) و سایر موارد را ذخیره می‌کند و شامل فایل‌های موسیقی یا تنظیمات نمی‌شود. این تفکیک، رویکرد درستی است زیرا این دو بخش به شیوه‌های متفاوتی دچار خرابی می‌شوند. فایل‌های موسیقی را می‌توان دوباره از روی دیسکی که از آن کپی (rip) شده‌اند، بازیابی کرد. اما تعداد دفعات پخش، امتیازها، موارد دلخواه و لیست‌های پخش در جای دیگری وجود ندارند و با اسکن مجدد (rescan) بازگردانده نمی‌شوند.

فایل compose به‌طور پیش‌فرض هر شب یک نسخه پشتیبان در /data/backup ایجاد می‌کند و 7 نسخه آخر را نگه می‌دارد. پیش از ارتقا، یک نسخه را به‌صورت دستی تهیه کنید:

sudo docker compose run --rm navidrome backup create

عملیات بازیابی، پایگاه داده فعلی را پاک کرده و نسخه پشتیبان را جایگزین آن می‌کند؛ این کار باید زمانی انجام شود که Navidrome متوقف شده است. هیچ‌چیز در مورد بازیابی روی یک سرور فعال (live) ایمن نیست.

این فایل‌ها همچنان روی همان VPS قرار دارند، بنابراین در صورت از دست رفتن VPS، آن‌ها نیز از بین می‌روند. طبق یک زمان‌بندی مشخص، /srv/navidrome را به ماشین دیگری یا به فضای ذخیره‌سازی شیء (object storage) منتقل کنید؛ این همان کاری است که ابزارهایی مانند restic and BorgBackup برای آن ساخته شده‌اند. کل این دایرکتوری حجم کمی دارد و معمولاً بسیار کمتر از یک گیگابایت است؛ بنابراین تهیه یک نسخه رمزنگاری‌شده روزانه در خارج از سرور، هزینه ناچیزی دارد و تمام اطلاعاتی را که با اسکن مجدد قابل بازیابی نیستند، حفظ می‌کند.

FAQ

آیا نیاز دارم موسیقی را روی VPS تبدیل فرمت (Transcode) کنم؟

تقریباً هرگز. گوشی‌ها و مرورگرها فایل‌های MP3، AAC، Opus و FLAC را به‌صورت بومی رمزگشایی می‌کنند، بنابراین سرور فایل را همان‌طور که هست ارسال می‌کند و عملاً هیچ پردازشی (CPU) مصرف نمی‌شود. تنها یک مورد برای فعال‌سازی آن وجود دارد: استریم کردن کتابخانه FLAC از طریق اینترنت موبایل؛ جایی که تبدیل از حدود 900 کیلوبیت‌برثانیه به فرمت Opus با نرخ 128 کیلوبیت‌برثانیه، مصرف داده را تقریباً هفت برابر کاهش می‌دهد. Navidrome می‌تواند این کار را برای هر کاربر و هر پخش‌کننده به‌صورت جداگانه انجام دهد و تا زمانی که آن را فعال نکنید، غیرفعال باقی می‌ماند.

چرا اپلیکیشن گوشی من نمی‌تواند موسیقی را برای گوش دادن آفلاین دانلود کند؟

زیرا ذخیره‌سازی آفلاین یک قابلیت در سمت کلاینت (کاربر) است، نه در سمت سرور. API مربوط به Subsonic به هر کلاینتی اجازه می‌دهد کل یک فایل را دریافت کند، اما این اپلیکیشن است که تصمیم می‌گیرد نسخه‌ای از آن را روی گوشی نگه دارد یا خیر. لیست کلاینت‌ها را در navidrome.org/apps بررسی کنید و موردی را انتخاب کنید که در توضیحاتش به دانلود آفلاین یا کش کردن اشاره شده باشد. برخی کلاینت‌ها فقط آنچه را که قبلاً پخش کرده‌اید کش می‌کنند، که با همگام‌سازی یک آلبوم پیش از شروع سفر متفاوت است.

چرا یک آلبوم پس از اسکن به چندین آلبوم تقسیم شد؟

تگ "Album Artist" در فایل‌ها وجود ندارد یا در بین ترک‌ها ناهماهنگ است. Navidrome فایل‌ها را بر اساس تگ‌ها گروه‌بندی می‌کند، نه بر اساس پوشه‌ها. بنابراین دوازده ترک با دوازده مقدار متفاوت برای هنرمند و بدون مقدار مشترک برای "Album Artist"، به شکل دوازده آلبوم مجزا دیده می‌شوند. تگ "Album Artist" را برای تمام ترک‌های آلبوم تنظیم کنید (معمولاً برای مجموعه‌ها از عبارت Various Artists استفاده می‌شود) و سپس اجازه دهید دوباره اسکن کند. نرم‌افزارهای MusicBrainz Picard یا beets می‌توانند این کار را برای کل یک پوشه به‌صورت یکجا انجام دهند.

آیا استریم موسیقی شخصی (Self-hosted) جایگزین Spotify می‌شود؟

این کار جایگزین پخش‌کننده و کتابخانه موسیقی شما می‌شود، نه کاتالوگ جهانی. شما مجموعه شخصی خود را روی هر دستگاهی در اختیار دارید، همراه با پلی‌لیست‌ها و آمار پخش که هیچ تغییر در لایسنس‌ها نمی‌تواند آن‌ها را از شما بگیرد. شما به انتشارات جدید دسترسی ندارید و توصیه‌هایی که بر اساس سلیقه شنیداری دیگران ساخته شده باشد را دریافت نمی‌کنید. اکثر کسانی که این سرویس را راه‌اندازی می‌کنند، موسیقی خود را خریداری کرده و یک اکانت ارزان‌قیمت استریم برای کشف موسیقی‌های جدید نگه می‌دارند.

#navidrome#music#streaming#self-hosting#media-server