Light Bullet - информационно - новостной сайт, в котором собрана информация сообщества по различным тематикам. Для ознакомления вы можете перейти в соответствующий раздел сайта.
В экспериментальном порядке сайт "обзавелся" своим простеньким чатом (флудильня), которая планируется к дальнейшей модернизации и улучшении. Чат доступен по ссылке https://lightbullet.ru/chat.php.
Сервер возобновил свою работу на благо человечества.
В связи с этим скоро на канале youtube и в тематической группе telegram по minecraft будет выложен видеообзор серверного шкафа, используемого мной.
Я понимаю, что некоторым постояльцам неприятен тот факт, что сервер отключен, но не беспокойтесь: как только у меня сделают проводку, сервер снова начнет свою работу на благо человечества.
В связи с этим скоро на канале youtube и в тематической группе telegram по minecraft будет выложен видеообзор серверного шкафа, используемого мной.
Иногда возникает потребность трансляции обычной веб-камеры, например, для того, чтобы удаленно показывать, что происходит в соседней комнате (Вставка изображения в OBS во время трансляции). Для реализации трансляции веб-камеры мы воспользуемся популярным инструментом mjpg-streamer.
Входим в режим суперпользователя
user@COMPXX:~$ su -
#Ввод пароля
Устанавливаем необходимые зависимости
root@COMPXX:~# apt-get -y install libjpeg-dev libv4l-dev cmake subversion
Далее создаем папку, где будет лежать программа (В моем случае это /ftpsd/REMOTEWEBCAM/)
root@COMPXX:~# mkdir -p /ftpsd/REMOTEWEBCAM/
Для дальнейшего использования, необходимо создать пользователя с правами root
root@COMPXX:~# adduser rwc
#Ввод данных по подсказкам
root@COMPXX:~# usermod -aG sudo rwc
Также нужно добавить пользователя в группу video, чтобы можно было запустить mjpg-streamer от имени данного пользователя
root@COMPXX:~# usermod -aG video rwc
Далее переходим в созданную папку, скачиваем mjpg-streamer, распаковываем архив
root@COMPXX:~# cd /ftpsd/REMOTEWEBCAM/
root@COMPXX:~# wget https://github.com/jacksonliam/mjpg-streamer/archive/master.zip
root@COMPXX:~# unzip master.zip
Переходим в папку mjpg-streamer-master/mjpg-streamer-experimental/
root@COMPXX:~# cd mjpg-streamer-master/mjpg-streamer-experimental/
В данной директории выполните следующую команду
root@COMPXX:~# make USE_LIBV4L2=true clean all
Скопируйте все файлы с расширением .so в папку /usr/lib/
root@COMPXX:~# cp -r *.so /usr/lib/
Также нужно установить владельца созданной ранее директории
root@COMPXX:~# chown -R rwc: /ftpsd/REMOTEWEBCAM
В этой же директории введите следующую команду
root@COMPXX:~# ./mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 640x480 -f 30" -o "output_http.so -p 8080"
Если все сделано верно, то после выполнения данной команды изображение с веб камеры доступно по следующему адресу: http://*IP_адрес*:8080/?action=stream (Вместо *IP_адрес* вводите IP адрес системы, где запущен mjpg-streamer).
Прервать выполнение команды можно с помощью комбинации клавиш Ctrl + C
Для того, чтобы не запускать программу длинной командой, нам нужно создать службу, которая будет ее запускать.
Для этого нам нужно создать файл службы
root@COMPXX:~# nano /etc/systemd/system/mjpg-streamer.service
[Unit]
Description=MJPG Streamer
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=rwc
WorkingDirectory=/ftpsd/REMOTEWEBCAM/mjpg-streamer-master/mjpg-streamer-experimental
Environment=LD_LIBRARY_PATH=/ftpsd/REMOTEWEBCAM/mjpg-streamer-master/mjpg-streamer-experimental
ExecStart=/ftpsd/REMOTEWEBCAM/mjpg-streamer-master/mjpg-streamer-experimental/mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 640x480 -f 30" -o "output_http.so -p 8080"
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Примечание: Параметры разрешения (параметр -r), частоты кадра (параметр -f) и порт для веб доступа к камере (параметр -p) можно менять по потребности и техническим характеристикам веб-камеры.
Для того, чтобы служба смогла запуститься, необходимо обновить список служб
root@COMPXX:~# systemctl daemon-reload
Теперь мы сможем проверить работу mjpg-streamer, запустив службу
root@COMPXX:~# systemctl start mjpg-streamer
Можно еще проверить, запущена ли служба корректно
root@COMPXX:~# systemctl status mjpg-streamer
Для того, чтобы добавить службу в автозагрузку, необходимо ввести следующую команду
root@COMPXX:~# systemctl enable mjpg-streamer
Остановка службы производится следующей командой
root@COMPXX:~# systemctl stop mjpg-streamer
Если все сделано верно, то после выполнения данной команды изображение с веб камеры доступно по следующему адресу: http://*IP_адрес*:8080/?action=stream (Вместо *IP_адрес* вводите IP адрес системы, где запущен mjpg-streamer).
Примечание: Перед запуском нужно предварительно подключить веб-камеру к серверу, где установлен mjpg-streamer. В системе веб-камера в большинстве случаев определяется, как /dev/video0. Если на сервере установлено несколько веб-камер, то нужно искать ее индекс отдельно. Если веб-камера не определилась или определилась некорректно, нужно установить на сервер драйвера от этой веб-камеры.
Установим необходимые компоненты
user@COMPXX:~$ sudo apt-get install icecast2 ezstream
После установки сервисов необходимо их остановить, если они запущены
user@COMPXX:~$ sudo systemctl stop icecast2.service
Создаем папку для плейлистов
user@COMPXX:~$ sudo mkdir -p /etc/icecast2/playlists
Создаем сам плейлист
user@COMPXX:~$ sudo nano /etc/icecast2/playlists/public.m3u
Пути к звуковым файлам.
Приводим файл настройки icecast2 к следующему виду:
user@COMPXX:~$ sudo nano /etc/icecast2/icecast.xml
<icecast>
<location>Russia</location>
<admin>admin@localhost</admin>
<limits>
<clients>250</clients>
<sources>20</sources>
<queue-size>524288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<burst-on-connect>1</burst-on-connect>
<burst-size>65535</burst-size>
</limits>
<authentication>
<source-password>changeme</source-password>
<relay-password>changeme</relay-password>
<admin-user>admin</admin-user>
<admin-password>changeme</admin-password>
</authentication>
<hostname>radio.site.ru</hostname>
<listen-socket>
<port>8080</port>
</listen-socket>
<http-headers>
<header name="Access-Control-Allow-Origin" value="*" />
</http-headers>
<fileserve>1</fileserve>
<paths>
<basedir>/usr/share/icecast2</basedir>
<logdir>/var/log/icecast2</logdir>
<webroot>/usr/share/icecast2/web</webroot>
<adminroot>/usr/share/icecast2/admin</adminroot>
<alias source="/" destination="/status.xsl"/>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
<logsize>10000</logsize> <!-- Max size of a logfile -->
</logging>
<security>
<chroot>1</chroot>
<changeowner>
<user>icecast2</user>
<group>icecast</group>
</changeowner>
</security>
</icecast>
Запускаем сервис
user@COMPXX:~$ sudo systemctl start icecast2.service
Теперь можно проверить работоспособность сервера, перейдя по ссылке http://radio.site.ru:8080.
Если все настроено верно, то вы увидите страницу icecast2. На данный момент на сервере нет источников вещания: не пугайтесь, так и должно быть.
Создание директории конфигурации и логов для ezstream
user@COMPXX:~$ sudo mkdir -p /etc/ezstream
Создаем конфигурацию для ezstream:
user@COMPXX:~$ sudo nano /etc/ezstream/public.xml
<?xml version="1.0" encoding="UTF-8"?>
<ezstream>
<servers>
<server>
<name>Site Radio</name>
<hostname>localhost</hostname>
<port>8080</port>
<password>changeme</password>
</server>
</servers>
<streams>
<stream>
<server>Site Radio</server>
<mountpoint>/public</mountpoint>
<format>MP3</format>
<shuffle>0</shuffle>
<playlist_program>0</playlist_program>
<intake>Site Public</intake>
<svrinfoname>Site Public</svrinfoname>
<svrinfogenre>Public Music</svrinfogenre>
<svrinfodescription>Public Music</svrinfodescription>
<svrinfobitrate>256</svrinfobitrate>
<svrinfochannels>2</svrinfochannels>
<svrinfosamplerate>44100</svrinfosamplerate>
<svrinfopublic>1</svrinfopublic>
</stream>
</streams>
<intakes>
<intake>
<name>Site Public</name>
<type>playlist</type>
<filename>/etc/icecast2/playlists/public.m3u</filename>
</intake>
</intakes>
</ezstream>
Сменим владельца файла настройки
user@COMPXX:~$ sudo chown -R icecast2:icecast /etc/ezstream/public.xml
Создадим точку запуска сервиса ezstream
user@COMPXX:~$ sudo nano /etc/systemd/system/ezstream_public.service
[Unit]
Description=ezstream_public
After=network.target
Requires=ezstream_public.service
[Service]
User=icecast2
Group=icecast
Type=simple
PIDFile=/etc/ezstream/ezstream.pid
ExecStart=/usr/bin/ezstream -c /etc/ezstream/public.xml
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
[Install]
WantedBy=multi-user.target
Обновляем информацио о точках запуска сервисов
user@COMPXX:~$ sudo systemctl daemon-reload
Запускаем созданный сервис
user@COMPXX:~$ sudo systemctl start ezstream_public.service
Если все настроено верно, то перейдя по ссылке http://radio.site.ru:8080/public вы сможете прослушать музыку, которая указана в плейлисте.
Для дополнительных источников вещания необходимо создать файлы настроек ezstream, плейлисты и точки запуска сервиса под каждый источник вещания отдельно.
Для настройки сетевых папок с общим доступом необходимо сначала установить samba:
user@COMPXX:~$ sudo apt-get install samba
Следующее, что необходимо сделать - создать папку для общего доступа (для примера создадим папку /SHARE в корне системы):
user@COMPXX:~$ sudo mkdir -p /SHARE
user@COMPXX:~$ sudo chown -R www-data:www-data /SHARE
user@COMPXX:~$ sudo chmod -R 0775 /SHARE
После этого необходимо изменить настройки в /etc/samba/smb.conf следующим образом:
user@COMPXX:~$ sudo nano /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
dns proxy = no
[SHARE]
path = /SHARE
guest ok = yes
force user = www-data
browsable = yes
writable = yes
Для применения настроек на лету необходимо перезапустить службы smbd и nmbd:
user@COMPXX:~$ sudo systemctl restart smbd nmbd
После проделанных действий вы можете проверить доступность папки с другого ПК:
Если, перейдя по IP компьютера, вы увидите сетевой ресурс SHARE, значит все сделано правильно.
На этом, собственно, все.