Kami membuat stasiun radio Internet sederhana, kompak dan murah

Linux akan menjadi platform perangkat lunak, untuk kesederhanaan lebih baik menggunakan sesuatu yang umum, dengan banyak informasi di Internet, jika terjadi kesalahan. Setrika untuk stasiun radio Internet bisa apa saja, server lengkap dengan proyek Anda, beberapa laptop lama, atau netbook, kami ingin murah, dan kami tidak memerlukan kinerja khusus dari besi.

Jika Anda tidak memiliki apa pun, atau kami membutuhkan server yang benar-benar hening, mengapa tidak mencoba menggunakan komputer mini?

Sesuatu seperti Raspberry Pi 3?

Tidak, kami ingin lebih murah, jadi kami membutuhkan sesuatu seperti Orange Pi. Saya menemukan model Orange Pi Pc Plus dengan 1GB DDR3 RAM dan 8GB EMMC Flash.



UPD: Kemarin, entah bagaimana semua orang menganggap artikel itu terlalu serius, tetapi sebenarnya percobaan itu dilakukan demi penggemar, untuk melihat apakah itu berhasil atau tidak. Tentu, tidak ada pembicaraan tentang penggunaan "industri", itu seperti mencoba menyuarakan stadion dengan pusat musik biasa.

Apa lagi yang bisa kita butuhkan?

Saya ingin mencoba mengonfigurasikan semuanya dengan cara yang sederhana, jadi saya masih perlu kabel twisted pair ke router dan kartu memori Micro SD, karena saya tidak dapat menginstal sistem operasi langsung di komputer mikro. Saya menemukan kartu memori untuk 8 gigabytes, jumlah ini cukup.

Jadi, pertama-tama, Anda perlu menulis gambar sistem operasi ke kartu memori.
Untuk server, saya lebih suka menggunakan Debian yang telah teruji waktu (ya, generasi muda kemungkinan besar lebih suka CentOS, tetapi berjanggut abu-abu akan setuju dengan saya bahwa Debian masih sangat bagus).

Secara umum, ada banyak gambar siap pakai untuk Orange Pi di www.orangepi.org/downloadresources , tetapi saya masih pergi ke www.armbian.com/download dan unduh file torrent dari armbian dari dl.armbian.com/orangepipcplus (di tambang kasus Debian_stretch_next.7z).

Saya memiliki Orange Pi Pc Plus, Anda dapat memiliki komputer mini lainnya, jadi carilah gambar yang sesuai.

Setelah mengunduh, bongkar arsip dan lihat gambar dalam format img. Siapa pun yang menginginkan apa yang mereka isi dengan gambar, saya pribadi lebih suka Etcher (https://etcher.io). Kami memasukkan kartu memori, memilihnya jika Anda memiliki beberapa media yang terhubung, klik tombol menjahit, masukkan kata sandi jika Anda juga memiliki Linux di desktop atau laptop Anda.



Kartu dengan gambar siap, Anda dapat mulai menghubungkan semuanya.
Apa yang kita butuhkan untuk memulai dan mulai mengatur server kita?
Komputer mini itu sendiri, Internet melalui kabel Ethernet dan catu daya.
Dan itu dia.

Tidak, tentu saja Anda bisa bingung, sambungkan monitor dan keyboard dan konfigurasikan semuanya secara langsung, tapi saya lebih suka keyboard laptop saya, jadi saya akan mengkonfigurasi komputer mini saya dari jarak jauh, melalui SSH.

Jadi, mari kita mulai, kita tetap menggunakan kabel Ethernet, kartu Micro SD dengan gambar Armbian.
Tetap hanya untuk memasok daya ke komputer mini.

Tetapi dengan kekuatan pada Orange Pi, semuanya sangat menyedihkan. Apa yang ada di komputer mini normal? Itu benar, Micro-USB, tetapi bagaimana saya bisa memberi daya pada Orange Pi? Hanya 5V melalui konektor pin, yang dibeli secara terpisah.

Adaptor daya dengan konektor yang sesuai harganya lebih dari sekadar kabel dengan USB standar pada akhirnya, sehingga Anda dapat mengambilnya.

Jika tidak ada catu daya gratis dengan USB (dan kami tidak perlu, tetapi untuk 2 ampere), maka kami mencari-cari di dalam kotak kami dengan kabel, adaptor dan papan untuk komputer (Anda memiliki kotak seperti itu, kan?) Dan temukan adaptor yang sesuai dari beberapa lama, lama rusak oleh tablet anak, menyolder kabel dan daya untuk server kami siap.

Ya, atau ambil saja pengisi daya dari pemutar mp3 disk lama iRiver (hanya 4,7 volt dan 1,2 ampere tetapi juga berfungsi).

Kami melayani makanan dan kami siap untuk pindah, pada kenyataannya, ke yang semuanya disusun, untuk penciptaan stasiun radio internet.

Jika Anda, seperti saya, berniat bertahan dengan minimum periferal, maka kami perlu mencari tahu alamat IP yang diterima komputer mini kami. Cara termudah untuk mengetahuinya adalah pergi ke router Anda dan melihat alamat IP yang diberikan router ke server kami (router Anda dapat melakukan DHCP, kan?).

Sekarang Anda dapat masuk melalui SSH ke server kami. Siapa pun yang menggunakan klien SSH adalah yang akan digunakan (Anda tidak pernah memiliki Windows, tapi saya tidak tahu apa yang klien SSH lakukan).
Dalam kasus saya, saya hanya memalu di konsol ssh root@192.168.0.88, saya setuju untuk menambahkan kunci ECDSA, kata sandi default untuk root diatur ke "1234", setelah masuk, kami menemukan diri kami di konsol komputer mikro, yang segera menyarankan untuk mengubah kata sandi root.



Setelah itu, diusulkan untuk membuat akun pengguna yang tidak memiliki hak pribadi, kami membuatnya.
Dibandingkan dengan versi OS sebelumnya, versi saat ini agak disederhanakan dalam hal pengaturan dan banyak hal sudah dikonfigurasi secara otomatis.

Armbian memiliki alat konfigurasi yang sangat nyaman: armbian-config perintah ke konsol dan lihat apa yang bisa berguna.



Kami belum memerlukan pengaturan sistem, tetapi mungkin diperlukan nanti, misalnya, untuk mentransfer sistem yang dikonfigurasikan dari Micro SD ke memori Flash EMMC 8GB bawaan komputer mini.

Bagian Jaringan akan berguna bagi kami, tetapi alangkah baiknya jika memiliki alamat IP statis untuk server. Stasiun radio Internet kami dapat terhubung ke jaringan bahkan melalui Wi-Fi. Semua orang menetapkan tingkat kesesatan untuk dirinya sendiri, tetapi jika Anda membangun radio Internet murni untuk diri sendiri dan tidak ada rencana untuk lebih dari 10 pendengar pada saat yang sama, maka mengapa tidak mendapatkan server kami di Wi-Fi? Dalam kasus ekstrem, Anda dapat mencolokkan kabel Ethernet kapan saja.

Jadi, kami memutuskan pada jenis koneksi, sekarang kita perlu mengkonfigurasi alamat IP statis, untuk ini kita pergi ke pengaturan IP dan memilih antarmuka jaringan yang diinginkan, setelah itu kita mengatakan bahwa kita ingin alamat statis, mulai dan simpan pengaturan. Tidak perlu mengubah mask dan gateway, karena mereka diterima dari router Anda melalui DHCP.



Setelah Anda memasukkan alamat IP baru dan menekan Enter, sesi SSH Anda akan segera membeku, karena perangkat akan segera memiliki alamat IP baru. Oleh karena itu, kami cukup menutup jendela dengan terminal dan pergi ke komputer mini kami melalui SSH menggunakan alamat IP baru.

Ngomong-ngomong, karena semua fungsi yang kita miliki akan bersifat administratif, agar tidak menulis secara konstan sebelum setiap perintah sudo, saya hanya login ke komputer mini sebagai root.

Dengan menjalankan armbian-config lagi, dapatkah kita melihat apa lagi yang bisa dikonfigurasi? Di bagian Pribadi, kita dapat mengonfigurasi zona waktu, lokal, dan nama host. Saya menambahkan lokal ru_RU.UTF-8 UTF-8, yang akan berguna.

Agar pengaturan dapat diterapkan, Anda harus keluar dari utilitas konfigurasi, keluar dan masuk lagi, atau reboot server dengan perintah reboot.

Saya menggunakan perintah reboot untuk memastikan bahwa pengaturan telah disimpan dan server mulai berhasil dengan mereka.

Konfigurasi server dasar telah dibuat dan mengapa tidak menginstal sistem operasi dengan MicroSD OS pada memori internal EMMC Flash? Tentu saja, jika komputer mini Anda memiliki memori ini.

Untuk melakukan ini, pergi ke armbian-config - System - Install, pilih drive yang tersedia, tekan Enter, dapatkan salam dari masa lalu, setuju dan pilih jenis sistem file ext4.



Sekarang kita bisa duduk dan menunggu sampai OS ditransfer ke penyimpanan internal komputer mini.



Setelah penyalinan selesai, pilih untuk mematikan daya. Kami menunggu beberapa detik hingga LED pada komputer mini mati, cabut daya, lepaskan kartu microSD, pasang kembali power dan nyalakan komputer.

Ya, jika Anda tidak memiliki memori internal dan Anda tidak mentransfer sistem operasinya, mengeluarkan MicroSD kemungkinan besar bukan ide yang baik.

Setelah masuk ke komputer mini kami melalui SSH dan memastikan semuanya bekerja, Anda dapat mulai menyetel stasiun radio itu sendiri.

Pertama-tama, kami memperbarui informasi paket dengan mengarahkan apt update ke konsol server.

Ya, saya suka kenyamanan, jadi saya menginstal mc dengan perintah apt install mc .
Saya suka melakukan semuanya dari bawah mc, dan jika saya perlu melihat konsol, saya cukup tekan ctrl + o.

Pertama, instal pemutar musik setan itu sendiri: apt install mpd .
Sekelompok dependensi akan diinstal dengannya.

Mari beralih ke pengaturan. File /etc/mpd.conf bertanggung jawab atas konfigurasi daemon, buka dengan perintah nano /etc/mpd.conf .

Nama pengguna saya tanpa hak hzs, dan file konfigurasi saya terlihat seperti ini:

 music_directory "/home/hzs/music" playlist_directory "/home/hzs/.mpd/playlists" db_file "/home/hzs/.mpd/tag_cache" log_file "/home/hzs/.mpd.log" pid_file "/home/hzs/.mpd/pid" state_file "/home/hzs/.mpd/state" sticker_file "/var/lib/mpd/sticker.sql" user "hzs" bind_to_address "localhost" restore_paused "yes" metadata_to_use "artist,title" auto_update "yes" audio_output { type "httpd" name "My New Internet Radio Station!!!" encoder "lame" # optional, vorbis or lame port "8000" bind_to_address "0.0.0.0" # optional, IPv4 or IPv6 bitrate "256" # do not define if quality is defined format "44100:16:2" } volume_normalization "yes" filesystem_charset "UTF-8" id3v1_encoding "UTF-8" 

Semuanya jelas di sini dan tanpa komentar khusus.

Agar berfungsi, Anda perlu membuat struktur direktori dari atas pengaturan. Harap perhatikan bahwa pemilik direktori ini haruslah pengguna yang tidak memiliki hak, dari siapa semuanya akan berfungsi, dalam kasus saya hzs.

Dari root, jalankan perintah berikut:

chown -cR hzs:hzs /home/hzs/music
chown -cR hzs:hzs /home/hzs/.mpd

Saatnya mengunggah musik, kami memiliki SSH di server, sehingga kami dapat menghubungkan klien FTP favorit kami ke server kami.

Kami tahu alamat IP, port 22, nama pengguna dan kata sandi adalah yang Anda tentukan saat membuat pengguna yang tidak berhak, jenis koneksi SSH. Tuangkan beberapa musik untuk pengujian ke dalam direktori untuk musik yang ditentukan dalam konfigurasi.



Sekarang pemain mulai dengan konfigurasi yang salah, jadi kami menghentikan daemon dan mulai lagi:

service mpd stop
service mpd start

Untuk kontrol daemon yang paling sederhana, kita akan apt install mpc utilitas konsol apt install mpc menggunakan perintah apt install mpc .

Setelah instalasi, kami akan sedikit mengonfigurasi pemain:

mpc random on
mpc repeat on

Sekarang Anda perlu menambahkan trek dan daftar putar, di konsol itu agak gimmorro, tetapi tidak ada yang bisa dilakukan.

Kami melihat file yang tersedia bagi kami, yang dapat kami tambahkan ke daftar putar:

mpc ls

Untuk menambahkan file ke daftar putar, dalam perintah mpc add kita harus menentukan nama lengkap file yang akan ditambahkan, pemilihan berdasarkan mask tidak berfungsi:

mpc add "01 Lost in Your Eyes.mp3"

Kami melihat daftar putar yang dihasilkan:

mpc playlist

Saatnya untuk meluncurkan stasiun radio kami:

mpc play



Mari kita coba dengarkan, untuk ini, di pemutar audio mana pun, buka aliran audio stasiun radio kami. Untuk melakukan ini, masukkan alamat stream http://ip:port , saya memilikinya http://192.168.0.90:8000 .

Audacious bermain sebentar-sebentar, ada masalah dengan caching, tetapi SMPlayer dan VLC tidak merasakan masalah.







Pada prinsipnya, pada tahap ini, stasiun radio Internet kami sudah berfungsi, Anda perlu menambahkan musik ke daftar putar dan meneruskan port pada router sehingga stasiun radio Internet kami menjadi stasiun radio Internet, dan bukan radio di jaringan lokal.

Saya memiliki beberapa domain, jadi hal pertama yang saya lakukan dalam pengaturan DNS adalah membuat catatan "A" dengan testradio dan alamat IP eksternal statis router saya di rumah. Anda tidak harus melakukan ini.

Selanjutnya, pada router saya, saya mengkonfigurasi penerusan port.

Karena saya sudah memiliki stasiun radio sendiri di server besar, saya tentukan port sumber eksternal 9000, dan port lokal 8000 internal, jadi dari luar radio akan disiarkan melalui http://_ip:9000 .



Itu dia, sekarang kita punya stasiun radio Internet "nyata".

Jika Anda tidak ingin berhenti di situ, lanjutkan.

Kami tidak menyiarkan suara DJ, tetapi jika perlu itu dapat diimplementasikan, tetapi yang benar-benar diperlukan adalah antarmuka manajemen daftar putar yang nyaman.

Ada banyak konsol manajemen, beberapa dapat dilihat di sini , tetapi saya akan menggunakan Pitchfork MPD Client .

Ini adalah moncong web yang lengkap, dan ya, kami akan menembakkan pistol ke burung pipit dan menaikkan server http lengkap di komputer mini dengan stasiun radio kami:

apt install apache2

Kami juga akan membutuhkan PHP:

apt-get install php

Masih butuh

apt install php7.0-xml

dan

apt install php-pear

Kami membuat direktori / home / hzs / wwwroot / pf di folder home dan membongkar ke dalamnya Pitchfork MPD Client yang sebelumnya dimuat melalui SSH.



Dalam file konfigurasi server web apache2 /etc/apache2/sites-available/000-default.conf
nano /etc/apache2/sites-available/000-default.conf
kami memotong semuanya dan menulis (jangan lupa untuk mengubah "hzs" menjadi nama pengguna Anda):

 <VirtualHost *:80> ServerName localhost ServerAdmin webmaster@localhost DocumentRoot /home/hzs/wwwroot <Directory /home/hzs/wwwroot/> Options All AllowOverride All DirectoryIndex index.php index.html index.htm Order Allow,Deny Allow from All Require all granted </Directory> </VirtualHost> 

Kemudian kita reboot server http

service apache2 restart

Dengan masuk ke alamat server IP / pf Anda (dalam kasus saya: http://192.168.0.90/pf )

Kami akan melihat panel kontrol:



Semuanya cukup sederhana dan intuitif.

Selanjutnya, klik pada ikon folder di sebelah kanan dan tab Filesystem.

Untuk memperbarui daftar file, klik tombol Perbarui DB, lalu pilih file yang tersisa yang masih belum ada dalam daftar putar dan klik tombol Tambah sedikit lebih rendah.

Kami menyegarkan halaman dan melihat bahwa semua file yang telah kami tambahkan ke daftar putar:



Jika Anda perlu menyembunyikan kontrol pemutar dengan kata sandi, Anda dapat mengedit file konfigurasi:

nano /home/hzs/wwwroot/pf/config/config.xml

Ada struktur pengaturan yang sepenuhnya dapat dimengerti.

Jadi, kami memiliki server server radio Internet lengkap berukuran 10 * 7 * 3 sentimeter. Tentu saja, server berdaya rendah yang digunakan tidak akan menarik ratusan pendengar, tetapi setidaknya tidak akan meninggalkan Anda tanpa musik favorit Anda di mana pun Anda berada, jika ada Internet di dekatnya.

Pada prinsipnya, Anda tidak dapat terus membaca, tetapi bagi mereka yang gigih, kami melanjutkan.
Kami memiliki server web lengkap, mengapa ...
Anda sudah mengerti.

Buat direktori testradio di root dari server web kami, buat file "index.php" di dalamnya:

 <!DOCTYPE html> <html xmlns="https://www.w3.org/1999/xhtml" xml:lang="ru-ru" lang="ru-ru" dir="ltr"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>My Test Radio</title> <script src="jquery-3.3.1.min.js"></script> </head> <body> <h1>My Test Radio</h1> <div id="song"> now playing:<br> <div id="title">now playing</div> <br> <div> <span id="play" type="button">Play</span> <span id="pause" type="button">Pause</span> </div> <br> <div> vol:<br> <input id="volume" type="range" min="0" max="10" value="5" /> </div> <span id="duration"></span> <br> <div>256 kbps</div> </div> <script language="JavaScript"> var audio = new Audio('http://testradio.nisel.ru:9000'); var play = document.getElementById('play'); play.addEventListener('click', function() { audio.play(); }, false); var pause = document.getElementById('pause'); pause.addEventListener('click', function() { audio.pause(); }, false); var volume = document.getElementById('volume'); volume.addEventListener('change', function(){ audio.volume = parseFloat(this.value / 10); }, false); audio.addEventListener("timeupdate", function() { var duration = document.getElementById('duration'); var s = parseInt(audio.currentTime % 60); var m = parseInt((audio.currentTime / 60) % 60); var h = parseInt((audio.currentTime / 3600) % 60); if (s < 10) s = '0' + s; if (m < 10) m = '0' + m; if (h < 10) h = '0' + h; duration.innerHTML = h + ':' + m + ':' + s; }, false); </script> <script language="JavaScript"> function show() { $.ajax({ url: "trackname.php", cache: false, success: function(html){ $("#title").html(html); } }); } $(document).ready(function(){ show(); setInterval('show()',5000); }); </script> </body> </html> 

Ini adalah contoh paling sederhana untuk membuat pemain untuk situs, juga dapat menampilkan nama komposisi saat ini, diperbarui dengan ajax setiap 5 detik.

Penampilan bisa selesai secukupnya menggunakan css.

Kode menunjukkan bahwa aliran audio sudah menuju ke alamat yang ditentukan dalam DNS domain saya.
Jangan lupa untuk menjatuhkan file jquery ke direktori (dalam kasus saya jquery-3.3.1.min.js). Secara umum, tentu saja, jquery terlalu banyak di sini dan orang bisa membuat permintaan ajax tanpa itu, tetapi ternyata terlalu malas untuk berpikir dan saya menggunakan sepotong kode yang sudah jadi.

Selanjutnya, buat file "trackname.php" :

 <?php echo file_get_contents('http://192.168.0.90/mpc');?> 

Juga di root server web kami membuat direktori "mpc" dan file "index.php" di dalamnya:

 <?php echo exec('mpc current');?> 

Mengapa beberapa orang bertanya kruk seperti itu, faktanya adalah di stasiun radio militer saya server pemain berada di server yang sama, dan permukaan web situs tersebut ada di server web yang secara fisik berbeda.



Karena Anda perlu menginterogasi trek yang diputar langsung di server dengan pemain, direktori server web mpc harus ada di sana, dan file "trackname.php" ada di server web situs itu sendiri dan mengunggah file dengan deskripsi trek dari server lain ke alamat IP-nya.

Pemain itu sendiri dan situs stasiun radio bisa sangat berjauhan dan berkomunikasi baik pada alamat IP eksternal dan pada alamat yang tersumbat dengan DNS. Agar semuanya berfungsi, Anda hanya perlu meneruskan porta dengan benar.

Anda dapat memodifikasi proyek sesuai keinginan Anda, well, saya memiliki Sabtu sore yang menyenangkan.
Semua percobaan yang berhasil!

UPD2: Percobaan selama seminggu sampai pada kesimpulan logisnya dan saya mematikan server mini saya dengan stasiun radio.

Source: https://habr.com/ru/post/id426349/


All Articles