Light Bullet: Статьи
Архив статей

Здесь представлены статьи, опубликованные за все время существования сайта. Для ознакомления со статьей, кликните по ее названию.

23.07.2025: Сервер интернет-радио (icecast2 + ezstream)

Начало

Установим необходимые компоненты

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

Приводим файл настройки 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

Создание директории конфигурации и логов для 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, плейлисты и точки запуска сервиса под каждый источник вещания отдельно.

11.07.2025: Создание и настройка сетевых папок linux

Для настройки сетевых папок с общим доступом необходимо сначала установить 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, значит все сделано правильно.

На этом, собственно, все.

11.07.2025: Установка и настройка nginx с поддержкой php

Для установки nginx с поддержкой php, необходимо для начала их установить:

user@COMPXX:~$ sudo apt-get install nginx php php-fpm

Далее необходимо отключить nginx:

user@COMPXX:~$ sudo systemctl stop nginx

Теперь мы отключим стандартные конфигурации:

user@COMPXX:~$ sudo rm -rf /etc/nginx/sites-enabled/*

Следующее, что мы сделаем - создадим папку, где будут храниться страницы (для примера создадим папку /SITE в корне системы):

user@COMPXX:~$ sudo mkdir -p /SITE

user@COMPXX:~$ sudo chown -R www-data:www-data /SITE

user@COMPXX:~$ sudo chown -R 0775 /SITE

Теперь создадим тестовую страницу:

user@COMPXX:~$ nano /SITE/index.php

<?php

 phpinfo();

?>

Перед запуском nginx необходимо создать файл настройки:

user@COMPXX:~$ sudo nano /etc/nginx/sites-enabled/site.ru.conf

server {

 listen 80;

 server_name site.ru;

 root /SITE;

 index index.php;

 location /full {

  set $mobile_request 0;

  rewrite ^/full(.*)$ $1 break;

 }

 location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {

  access_log off;

  expires max;

  log_not_found off;

 }

 location /testing {

  fastcgi_pass unix:/does/not/exist;

 }

 location / {

  try_files $uri $uri/ /index.php?$query_string;

 }

 location ~* \.php$ {

  try_files $uri = 404;

  fastcgi_split_path_info ^(.+\.php)(/.+)$;

  fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;

  fastcgi_index index.php;

  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

  include fastcgi_params;

 }

 location ~ /\.ht {

  deny all;

 }

}

Обратите внимание на следующие строчки:

 location ~* \.php$ {

  try_files $uri = 404;

  fastcgi_split_path_info ^(.+\.php)(/.+)$;

  fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;

  fastcgi_index index.php;

  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

  include fastcgi_params;

 }

Версия php у каждого может отличаться, поэтому, для того, чтобы проверить версию php, необходимо выполнить следующую команду:

user@COMPXX:~$ php -v

На экране будет указана версия php (в моем случае - 8.2), собственно ее и указываем в файле конфигурации.

После всех проделанных действий необходимо запустить nginx:

user@COMPXX:~$ sudo systemctl start nginx

Если все сделано правильно, то введя в браузере IP компьютера, на котором запущен nginx, вы увидите страницу конфигурации php.

Теперь вы можете создавать свой сайт внутри папки /SITE.

На этом, собственно, все.

01.06.2025: FTP сервер c нуля

Для правильного поднятия FTP сервера необходимо при установке дистрибутива разметить диски так, чтобы у диска, в котором будут храниться файлы, была отдельная точка монтирования, например /ftpsd

Основная папка FTP хранилища: /ftpsd/FTP

Установка необходимых компонентов

Входим в режим суперпользователя

user@COMPXX:~$ su -

#Ввод пароля

Устанавливаем программы для реализации виртуальных пользователей

root@COMPXX:~# apt-get -y install vsftpd libpam-pwdfile apache2-utils

Останавливаем vsftpd

root@COMPXX:~# systemctl stop vsftpd

Управление пользователями

Настраиваем правила аутентификации

root@COMPXX:~# nano /etc/pam.d/vsftpd

auth required pam_pwdfile.so pwdfile /etc/vsftpwd

account required pam_permit.so

Создание пользователей

Для создания первого виртуального пользователя вводим команду

root@COMPXX:~# htpasswd -c -d /etc/vsftpwd *имя пользователя*

#Ввод пароля

Для создания последующих виртуальных пользователей вводим команды

root@COMPXX:~# htpasswd -d /etc/vsftpwd *имя пользователя*

#Ввод пароля

Создаем файл /etc/vsftpd.userlist и пишем в нем логины, для которых разрешен вход

root@COMPXX:~# nano /etc/vsftpd.userlist

*имена пользователей*

Настройка доступов к директориям

Запрещаем изменение папки /ftpsd/FTP

root@COMPXX:~# mkdir -p /ftpsd/FTP

root@COMPXX:~# chmod a-w /ftpsd/FTP

root@COMPXX:~# chown nobody:nogroup /ftpsd/FTP

Создаем папки для каждого из пользователей

root@COMPXX:~# mkdir -p /ftpsd/FTP/*имя пользователя*

root@COMPXX:~# chown -R www-data:www-data /ftpsd/FTP/*

root@COMPXX:~# chmod 755 /ftpsd/FTP/*

Удаление пользователей

Для удаления виртуального пользователя (если есть необходимость в этом) вводим команду

root@COMPXX:~# htpasswd -D /etc/vsftpwd *имя пользователя*

Удаление папки пользователя

root@COMPXX:~# rm -rf /ftpsd/FTP/*имя пользователя*

root@COMPXX:~# htpasswd -D /etc/vsftpwd *имя пользователя*

Конфигурация сервиса

Редактируем файл /etc/vsftpd.conf

root@COMPXX:~# nano /etc/vsftpd.conf

#Включаем поддержку ipv4 и отключаем поддержку ipv6

listen=YES

listen_ipv6=NO

#Скрываем ID пользователя, который зашел

hide_ids=YES

seccomp_sandbox=NO

pam_service_name=vsftpd

#Настраиваем так, чтобы пользователь входил в свою директорию

user_sub_token=$USER

local_root=/ftpsd/FTP/$USER

secure_chroot_dir=/var/run/vsftpd/empty

#Настраиваем таймауты

idle_session_timeout=600

data_connection_timeout=120

#Активируем пассивный режим и назначаем порты

pasv_enable=YES

pasv_min_port=62000

pasv_max_port=62999

#Открываем 20 порт

use_localtime=YES

connect_from_port_20=YES

local_umask=022

#Делаем так, чтобы читались русские символы

utf8_filesystem=YES

ascii_upload_enable=YES

ascii_download_enable=YES

#Настраиваем режимы входа

anonymous_enable=NO

chroot_local_user=YES

allow_writeable_chroot=YES

virtual_use_local_privs=YES

local_enable=YES

write_enable=YES

#Разрешаем заходить на FTP сервер виртуальным пользователям

guest_enable=YES

guest_username=www-data

#Настраиваем списки пользователей, для которых вход разрешен

userlist_enable=YES

userlist_file=/etc/vsftpd.userlist

userlist_deny=NO

dirmessage_enable=YES

#Логирование действий

xferlog_enable=YES

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

#Сертификаты

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

ssl_enable=NO

(Опционально) Установка и настройка фаервола

Установим фаервол, если он не установлен

root@COMPXX:~# apt-get install ufw

Выключаем фаервол, если он включен (sudo ufw status)

root@COMPXX:~# systemctl stop ufw

Теперь настроим порты для фаервола

root@COMPXX:~# ufw allow OpenSSH

root@COMPXX:~# ufw allow 20/tcp

root@COMPXX:~# ufw allow 21/tcp

root@COMPXX:~# ufw allow 22/tcp

root@COMPXX:~# ufw allow 62000:62999/tcp

Включаем фаервол

root@COMPXX:~# systemctl start ufw

Проверяем состояние фаервола

root@COMPXX:~# ufw status

Конец настройки и запуск сервиса

Запускаем vsftpd

root@COMPXX:~# systemctl start vsftpd

Все, можно пользоваться.

Дополнительно

Для профилактики можно еще подчистить следы установки, обновить версии приложений и т.д.

root@COMPXX:~# apt-get update

root@COMPXX:~# apt-get upgrade

root@COMPXX:~# apt-get clean

root@COMPXX:~# apt-get autoremove

Связаться с нами
mail telegram vk youtube twitch