مجله ایرانیکاسرورآموزش سرور، هاست، وردپرس و شبکه
سرور مجازی

ساخت رادیوی اینترنتی ۲۴ ساعته روی سرور مجازی

ساخت رادیوی اینترنتی ۲۴ ساعته با AzuraCast؛ AutoDJ، Icecast و پخش زنده روی VPS برای راه‌اندازی یک رادیوی اینترنتی لازم نیست کامپیوتر شخصی شما شبانه‌روز روشن باشد. می‌توانید فایل‌های صوتی، موزیک، جینگل و برنامه‌های…

ساخت رادیوی اینترنتی ۲۴ ساعته روی سرور مجازی
خلاصه سریع این آموزش

ساخت رادیوی اینترنتی ۲۴ ساعته با AzuraCast؛ AutoDJ، Icecast و پخش زنده روی VPS برای راه‌اندازی یک رادیوی اینترنتی لازم نیست کامپیوتر شخصی شما شبانه‌روز روشن باشد. می‌توانید فایل‌های صوتی،…

۱۰ دقیقه مطالعه ۰ دیدگاه ۱۰ مهر ۱۴۰۵ آخرین به‌روزرسانی

فهرست مطالب

ساخت رادیوی اینترنتی ۲۴ ساعته با AzuraCast؛ AutoDJ، Icecast و پخش زنده روی VPS

برای راه‌اندازی یک رادیوی اینترنتی لازم نیست کامپیوتر شخصی شما شبانه‌روز روشن باشد. می‌توانید فایل‌های صوتی، موزیک، جینگل و برنامه‌های ضبط‌شده را روی یک سرور مجازی قرار دهید و رادیوی اینترنتی ۲۴ ساعته بسازید که حتی وقتی هیچ DJ آنلاینی نیست، AutoDJ به‌صورت خودکار برنامه را پخش کند.

در این آموزش از AzuraCast استفاده می‌کنیم؛ یک پلتفرم متن‌باز و Self-hosted برای مدیریت رادیوی اینترنتی که Liquidsoap را برای AutoDJ و Icecast-KH را برای تحویل Stream به شنونده‌ها مدیریت می‌کند. علاوه بر پخش خودکار، امکان ساخت Playlist، زمان‌بندی برنامه‌ها، اتصال DJ زنده، Recording، Player عمومی، آمار شنوندگان و چند کیفیت Stream را هم خواهیم داشت.

📌 خروجی این آموزش:

🔹 رادیوی اینترنتی همیشه‌فعال روی VPS

🔹 AutoDJ برای پخش خودکار موزیک و برنامه

🔹 Playlistهای عادی، زمان‌بندی‌شده و جینگل

🔹 Stream با MP3 یا AAC

🔹 Player عمومی برای وب‌سایت

🔹 اتصال DJ زنده با Mixxx یا BUTT

🔹 برگشت خودکار از DJ زنده به AutoDJ

🔹 HTTPS و دامنه اختصاصی

🔹 ثبت آمار شنوندگان و تاریخچه پخش

🔹 امکان توسعه با Relay برای تعداد شنونده بیشتر

رادیوی اینترنتی ۲۴ ساعته چگونه کار می‌کند؟

معماری یک رادیوی اینترنتی با وب‌سایت معمولی فرق دارد. شما مجموعه‌ای از فایل‌های صوتی دارید که باید طبق Playlist و Schedule به یک Stream دائمی تبدیل شوند.

Music / Podcast / Jingles
          |
          v
      Liquidsoap
       AutoDJ
          |
          v
      Icecast-KH
          |
          +------> Listener 1
          +------> Listener 2
          +------> Website Player
          +------> Mobile App

Liquidsoap تصمیم می‌گیرد چه چیزی پخش شود. Icecast وظیفه دارد همان خروجی را به تعداد زیادی Listener تحویل دهد.

AzuraCast چیست؟

AzuraCast یک مجموعه مدیریتی کامل برای Web Radio است. به‌جای اینکه Icecast، Liquidsoap، Nginx، Database و پنل مدیریت را جداگانه نصب و به هم متصل کنیم، AzuraCast این اجزا را در یک محیط واحد مدیریت می‌کند.

در زمان نگارش این مقاله، آخرین نسخه شماره‌دار ثبت‌شده در Changelog رسمی AzuraCast 0.23.8 است که در اوت ۲۰۲۶ منتشر شده است.

جزء وظیفه
AzuraCast پنل مدیریت، کاربران، Playlist، Media و Analytics
Liquidsoap AutoDJ، ترکیب Playlistها و Transcoding صوت
Icecast-KH ارسال Stream به Listenerها
Nginx Proxy وب، HTTPS و دسترسی استاندارد از پورت‌های 80/443

چرا رادیو را از صفر با Python نمی‌سازیم؟

ساخت API مدیریت Playlist با Python ساده است، اما مسئله اصلی رادیو API نیست. Audio Mixing، Crossfade، Metadata، Encoder، ارتباط DJ زنده، Mount Point، Listener Management و Recovery دائمی Stream نیازمند اجزای تخصصی هستند.

برای همین استفاده از Liquidsoap و Icecast بسیار منطقی‌تر از نوشتن دوباره این امکانات است. اگر بعداً Application اختصاصی داشته باشید، می‌توانید از APIهای AzuraCast برای Automation استفاده کنید.

حداقل منابع سرور برای AzuraCast

مستندات رسمی حداقل ۲GB RAM و ۲۰GB Disk را برای نصب اعلام می‌کنند. برای استفاده راحت‌تر چند Station، پیشنهاد رسمی ۴ Core، چهار گیگابایت RAM و حداقل ۴۰GB فضای Disk است.

سناریو پیشنهاد شروع
یک رادیوی سبک ۲ vCPU، ۲ تا ۴GB RAM
چند Station یا چند Encoder ۴ vCPU، ۴GB RAM یا بیشتر
کتابخانه صوتی بزرگ Storage متناسب با Media Library

راه‌اندازی رادیوی اینترنتی روی سرور مجازی ایران

اگر بخش عمده شنوندگان شما داخل ایران هستند، می‌توانید AzuraCast را روی سرور مجازی ایران اجرا کنید. برای رادیو فقط RAM مهم نیست؛ حجم ترافیک ماهانه و ظرفیت پورت شبکه نیز باید براساس تعداد Listenerها بررسی شود.

📌 تماس با پشتیبانی:
021-91302460
| ایرانیکاسرور

رادیوی اینترنتی چقدر پهنای باند مصرف می‌کند؟

تقریب ساده مصرف لحظه‌ای خروجی:

Outbound Bandwidth
=
Audio Bitrate × Concurrent Listeners

اگر Stream روی ۱۲۸kbps باشد و ۱۰۰ شنونده هم‌زمان داشته باشید:

128 kbps × 100
=
12.8 Mbps

برای هزار شنونده همین Stream به حدود ۱۲۸Mbps خروجی نیاز دارد؛ بدون محاسبه سربار شبکه.

مرحله اول: نصب AzuraCast روی VPS

بهترین حالت یک Linux Server تمیز است. خود مستندات AzuraCast توصیه می‌کنند Docker Installation را روی سیستم تازه نصب‌شده اجرا کنید.

ابتدا ابزارهای اولیه:

sudo apt update
sudo apt install sudo curl git -y

مسیر پیشنهادی رسمی را بسازید:

sudo mkdir -p /var/azuracast
cd /var/azuracast

Utility Script رسمی را دریافت کنید:

sudo curl -fsSL \
https://raw.githubusercontent.com/AzuraCast/AzuraCast/main/docker.sh \
-o docker.sh

sudo chmod a+x docker.sh

sudo ./docker.sh install

Installer در صورت نیاز Docker و Docker Compose را نصب می‌کند و بقیه Stack را آماده می‌کند.

مرحله دوم: ساخت حساب مدیر

بعد از پایان نصب، IP یا Domain سرور را در Browser باز کنید.

صفحه اولیه از شما می‌خواهد Super Administrator را بسازید. برای این حساب از Password طولانی و منحصربه‌فرد استفاده کنید؛ چون این User کنترل تمام Stationها را دارد.

مرحله سوم: اتصال دامنه

مثلاً:

radio.example.com

یک رکورد A بسازید که به IP VPS اشاره کند.

بعد از انتشار DNS می‌توانید HTTPS را از بخش تنظیمات AzuraCast/Let’s Encrypt فعال کنید.

⚠️ اگر Cloudflare استفاده می‌کنید: اتصال Listener از Proxy داخلی روی 80/443 قابل مدیریت است، اما اتصال مستقیم DJ/Broadcaster به Portهای خاص ممکن است نیازمند DNS-only یا اتصال مستقیم به IP سرور باشد.

مرحله چهارم: ساخت اولین Station

از Dashboard گزینه ساخت Station جدید را انتخاب کنید.

موارد اصلی شامل نام رادیو، Shortcode، Timezone، Storage و تنظیمات AutoDJ هستند.

برای یک رادیوی ۲۴ ساعته حتماً AutoDJ را فعال نگه دارید. در AzuraCast، Liquidsoap این نقش را بر عهده دارد.

مرحله پنجم: ساخت Mount Point

Mount Point در عمل خروجی صوتی رادیوی شما است.

می‌توانید یک خروجی MP3 با 128kbps داشته باشید:

/radio.mp3
MP3
128 kbps

یا کیفیت سبک‌تر برای موبایل:

/mobile.aac
AAC
64 kbps

AzuraCast می‌تواند از یک AutoDJ چند خروجی با Bitrate و Format متفاوت تولید کند.

مرحله ششم: آپلود موزیک و فایل صوتی

از Media Manager فایل‌های صوتی را Upload کنید.

Metadata فایل‌ها اهمیت زیادی دارد؛ Artist و Title صحیح باعث می‌شوند نام آهنگ فعلی در Player و History درست نمایش داده شود.

برای آرشیو بزرگ می‌توانید از SFTP داخلی AzuraCast نیز استفاده کنید.

مرحله هفتم: ساخت Playlist رادیوی ۲۴ ساعته

برای اینکه رادیو هیچ‌وقت خالی نماند، حداقل یک General Rotation Playlist داشته باشید.

مثلاً Playlist اصلی:

General Music
Always Active
Shuffle
General Rotation

Liquidsoap زمانی که Playlist زمان‌بندی‌شده دیگری فعال نباشد از این مجموعه موسیقی انتخاب می‌کند.

پخش خودکار جینگل بین آهنگ‌ها

می‌توانید Playlist جدا برای Station ID یا جینگل بسازید و آن را طوری تنظیم کنید که مثلاً هر چند آهنگ یک بار پخش شود.

این روش برای موارد زیر مناسب است:

🔹 نام رادیو

🔹 معرفی سایت

🔹 پیام تبلیغاتی

🔹 اعلام برنامه‌های بعدی

زمان‌بندی برنامه‌های رادیویی

فرض کنید می‌خواهید هر شب ساعت ۲۰ یک برنامه ضبط‌شده پخش شود.

فایل‌های آن برنامه را در Playlist جدا قرار دهید و Schedule را برای ساعت و روزهای مورد نظر تنظیم کنید.

به این ترتیب AutoDJ در زمان مشخص از General Rotation خارج می‌شود، برنامه زمان‌بندی‌شده را پخش می‌کند و بعد دوباره به Playlist اصلی برمی‌گردد.

چطور DJ زنده به رادیو وصل شود؟

یکی از امکانات کاربردی AzuraCast این است که AutoDJ و Live DJ را ترکیب می‌کند.

در Station گزینه Streamers/DJs را فعال و برای DJ یک Account بسازید.

DJ می‌تواند با نرم‌افزارهایی مانند Mixxx یا BUTT به Station وصل شود.

در BUTT معمولاً Connection Info موجود در صفحه Streamers/DJs را وارد می‌کنید:

🔹 Server

🔹 Port

🔹 Username

🔹 Password

🔹 Mount Point

بعد از اتصال DJ، Liquidsoap Live Input را وارد خروجی رادیو می‌کند. با قطع ارتباط DJ، AutoDJ دوباره پخش را ادامه می‌دهد.

ضبط خودکار برنامه زنده

AzuraCast می‌تواند Broadcastهای DJ را Record کند. این قابلیت برای تبدیل برنامه زنده به آرشیو یا انتشار دوباره آن به‌عنوان Podcast کاربردی است.

می‌توانید Format و Bitrate Recording را در تنظیمات Station تعیین کنید.

قرار دادن Player رادیو در سایت

AzuraCast برای Stationهای Public صفحه عمومی و Player دارد.

همچنین می‌توانید URL Stream را داخل HTML5 Audio Player قرار دهید:

<audio controls preload="none">
  <source
    src="https://radio.example.com/listen/myradio/radio.mp3"
    type="audio/mpeg"
  >
</audio>

نمایش نام آهنگ فعلی روی سایت

AzuraCast API برای Now Playing دارد. بنابراین سایت یا اپ موبایل شما می‌تواند اطلاعاتی مانند عنوان آهنگ، Artist، Artwork، Listener Count و History را دریافت کند.

این قابلیت برای ساخت Player اختصاصی بدون Scrape کردن Icecast بسیار مناسب است.

MP3 یا AAC برای رادیوی اینترنتی؟

Format مزیت
MP3 128kbps سازگاری بسیار گسترده
AAC 64/96kbps کیفیت مناسب با Bitrate پایین‌تر در بسیاری از محتواها

اگر پهنای باند محدود است می‌توانید دو Mount بسازید: یکی کیفیت اصلی و دیگری نسخه کم‌مصرف موبایل.

یکسان کردن بلندی صدای آهنگ‌ها

وقتی فایل‌ها از منابع مختلف باشند، Volume آن‌ها یکسان نیست. AzuraCast می‌تواند از ReplayGain استفاده کند.

محاسبه ReplayGain هنگام پخش می‌تواند CPU مصرف کند. برای آرشیو بزرگ بهتر است فایل‌ها از قبل Tag شده باشند یا این قابلیت متناسب با منابع سرور تنظیم شود.

اگر تعداد شنونده خیلی زیاد شود چه کنیم؟

در این شرایط لازم نیست AutoDJ را روی چند سرور تکرار کنید.

می‌توانید از AzuraRelay یا Icecast Relay Server استفاده کنید:

AzuraCast Main
     |
     +----> Relay Iran
     |
     +----> Relay Europe
     |
     +----> Relay 3

هر Relay یک بار Stream را از Parent دریافت می‌کند و خودش آن را بین Listenerهای منطقه توزیع می‌کند.

از رادیوی اینترنتی Backup بگیرید

Media Library ممکن است چند صد گیگابایت باشد و دوباره ساختن Playlistها و تنظیمات Station زمان‌بر است.

حداقل از این موارد نسخه دوم داشته باشید:

🔹 فایل‌های Media

🔹 تنظیمات AzuraCast

🔹 Database

🔹 Recordingهای مهم

AzuraCast ابزار Backup و Restore داخلی نیز دارد.

امنیت رادیوی اینترنتی

✅ Password مدیر و DJها را طولانی انتخاب کنید.

✅ HTTPS را فعال کنید.

✅ AzuraCast را مرتب Update کنید.

✅ دسترسی SSH را محدود کنید.

✅ فایل‌های Media مهم را روی Storage دیگری Backup کنید.

✅ فقط Portهای مورد نیاز را در Firewall باز کنید.

✅ DJ غیرفعال را حذف یا Disable کنید.

✅ Webhook و URLهای خارجی را فقط در صورت نیاز فعال کنید.

مشکلات رایج AzuraCast

رادیو قطع است ولی پنل باز می‌شود

وضعیت Station، Liquidsoap و Broadcasting Service را از Log Viewer بررسی کنید. خالی بودن Playlist نیز می‌تواند باعث نبود محتوای قابل پخش شود.

DJ نمی‌تواند وصل شود

Streamer Account، Password، Port، Mount و Firewall را بررسی کنید. اگر Cloudflare جلوی Domain است، اتصال Broadcaster را با IP مستقیم سرور امتحان کنید.

CPU دائماً بالا است

تعداد Encoderها، ReplayGain، تعداد Stationها و Remote Relayهایی که نیاز به Transcoding دارند را بررسی کنید.

Disk سریع پر می‌شود

Media، Recordingها، Backupها و Logها را بررسی کنید. Recording دائمی Live می‌تواند فضای زیادی مصرف کند.

برای نصب AzuraCast یا انتخاب VPS نیاز به کمک دارید؟

اگر در نصب Docker، AzuraCast، تنظیم دامنه، SSL، AutoDJ، Icecast یا انتخاب منابع مناسب برای تعداد شنوندگان مشکل دارید، می‌توانید درخواست کانفیگ سرور ثبت کنید.

📌 تماس با پشتیبانی:
021-91302460
| ایرانیکاسرور

سؤالات متداول

آیا می‌توان رادیوی اینترنتی ۲۴ ساعته روی VPS ساخت؟

بله. AutoDJ روی VPS فایل‌های صوتی را شبانه‌روز پخش می‌کند و نیازی نیست کامپیوتر شخصی شما روشن باشد.

AzuraCast چیست؟

یک پلتفرم Self-hosted مدیریت Web Radio است که ابزارهایی مثل Liquidsoap و Icecast را همراه با پنل مدیریتی، Playlist، Analytics و Player در اختیار شما قرار می‌دهد.

AutoDJ چیست؟

AutoDJ نرم‌افزاری است که Playlistها، جینگل‌ها و برنامه‌های زمان‌بندی‌شده را ترکیب می‌کند و یک Stream دائمی برای Broadcast Server می‌سازد.

آیا DJ زنده می‌تواند وارد رادیو شود؟

بله. می‌توان برای DJ حساب جدا ساخت و از نرم‌افزارهایی مانند Mixxx یا BUTT برای Live Broadcast استفاده کرد.

بعد از قطع DJ چه می‌شود؟

در معماری AzuraCast، AutoDJ می‌تواند دوباره پخش را ادامه دهد تا Stream خاموش نماند.

MP3 بهتر است یا AAC؟

MP3 سازگاری بسیار گسترده دارد. AAC در Bitrate پایین‌تر می‌تواند کیفیت مناسبی ارائه کند و برای Stream موبایل گزینه خوبی است.

جمع‌بندی

برای ساخت رادیوی اینترنتی ۲۴ ساعته لازم نیست Stack صوتی را از صفر برنامه‌نویسی کنید. AzuraCast بخش‌های پیچیده‌ای مثل AutoDJ، Icecast، Playlist، DJ Live، Analytics و Player را یکجا مدیریت می‌کند.

برای رادیوی کوچک یک VPS معمولی کافی است، اما با افزایش Listenerها پهنای باند خروجی مهم‌تر از CPU می‌شود. در مقیاس بزرگ‌تر می‌توان Relay Server اضافه کرد و Listenerها را میان چند نقطه توزیع کرد.

اشتراک‌گذاری مقاله
گفت‌وگو درباره آموزش

دیدگاه‌ها (۰)

هنوز دیدگاهی ثبت نشده است.

دیدگاه یا سؤال خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *