<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux on DevOps-инженер &amp; CloudAdmin</title><link>https://ruadmin.root.sx/ru/tags/linux/</link><description>Recent content in Linux on DevOps-инженер &amp; CloudAdmin</description><generator>Hugo -- gohugo.io</generator><language>ru-RU</language><atom:link href="https://ruadmin.root.sx/ru/tags/linux/index.xml" rel="self" type="application/rss+xml"/><item><title>Self-Hosted удалённый доступ с RustDesk</title><link>https://ruadmin.root.sx/ru/posts/self-hosted/rustdesk-remote-desktop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ruadmin.root.sx/ru/posts/self-hosted/rustdesk-remote-desktop/</guid><description>&lt;h2 id="self-hosted-удалённый-доступ-с-rustdesk"&gt;Self-Hosted удалённый доступ с RustDesk&lt;/h2&gt;
&lt;hr&gt;
&lt;h4 id="клиент"&gt;Клиент&lt;/h4&gt;
&lt;p&gt;Компания, оказывающая поддержку и сопровождение платформы 1С&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="задача"&gt;Задача&lt;/h4&gt;
&lt;p&gt;Клиенту требовалось безопасное self-hosted решение для удалённого доступа, чтобы инженеры поддержки могли подключаться к рабочим станциям и серверам клиентов. Необходимы были: полный контроль над данными, отсутствие зависимости от сторонних облачных сервисов, надёжная работа в корпоративных сетях.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="решение"&gt;Решение&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Развёрнут &lt;strong&gt;RustDesk OSS&lt;/strong&gt; (open-source) сервер через Docker Compose&lt;/li&gt;
&lt;li&gt;Настроены компоненты &lt;strong&gt;hbbs&lt;/strong&gt; (ID/relay-сервер) и &lt;strong&gt;hbbr&lt;/strong&gt; (relay-сервер)&lt;/li&gt;
&lt;li&gt;Настроены правила файрвола и сетевой доступ для безопасных подключений&lt;/li&gt;
&lt;li&gt;Подготовлены конфигурационные файлы клиента для быстрого развёртывания у команды поддержки&lt;/li&gt;
&lt;li&gt;Описана процедура обслуживания и стратегия бэкапов&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="технологии"&gt;Технологии&lt;/h4&gt;
&lt;div class="row"&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/rustdesk.svg" alt="RustDesk"&gt;&lt;div&gt;RustDesk&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/docker-original.svg" alt="Docker"&gt;&lt;div&gt;Docker&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/linux-original.svg" alt="Linux"&gt;&lt;div&gt;Linux&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/bash.svg" alt="Bash"&gt;&lt;div&gt;Bash&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h4 id="результаты"&gt;Результаты&lt;/h4&gt;
&lt;p&gt;✅ &lt;strong&gt;Полный суверенитет данных&lt;/strong&gt; — все метаданные соединений и релейный трафик остаются на инфраструктуре клиента&lt;br&gt;
✅ &lt;strong&gt;Нет лицензионных затрат&lt;/strong&gt; — open-source RustDesk исключает плату за рабочие места&lt;br&gt;
✅ &lt;strong&gt;Надёжное подключение&lt;/strong&gt; — инженеры получают доступ к машинам клиентов из любой точки&lt;br&gt;
✅ &lt;strong&gt;Простой roll-out клиента&lt;/strong&gt; — готовые конфиги для быстрого онбординга команды&lt;br&gt;
✅ &lt;strong&gt;Дружелюбно к корпоративным сетям&lt;/strong&gt; — работает через NAT/файрволы благодаря relay-серверам&lt;/p&gt;</description></item><item><title>Интернет-радио на AzuraCast</title><link>https://ruadmin.root.sx/ru/posts/self-hosted/azuracast/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ruadmin.root.sx/ru/posts/self-hosted/azuracast/</guid><description>&lt;h2 id="восстановление-и-развёртывание-интернет-радио-с-нуля"&gt;Восстановление и развёртывание интернет-радио с нуля&lt;/h2&gt;
&lt;hr&gt;
&lt;h4 id="клиент"&gt;Клиент&lt;/h4&gt;
&lt;p&gt;Сообщество авторских исполнителей с мобильным приложением и аудиторией в несколько десятков ежедневных слушателей&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="задача"&gt;Задача&lt;/h4&gt;
&lt;p&gt;После потери арендованного VPS (вместе с действующей конфигурацией, сайтом и историей вещания) потребовалось полностью восстановить вещание двух интернет-радиостанций. На входе — только набор mp3-файлов. Требовалось развернуть новый сервер, настроить платформу автоматизированного вещания, воссоздать сайт-визитку с встроенным плеером и обеспечить стабильную работу 24/7.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="решение"&gt;Решение&lt;/h4&gt;
&lt;h6 id="1-инфраструктура-и-контрольная-панель"&gt;1. Инфраструктура и контрольная панель&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Аренда нового VPS и установка &lt;strong&gt;Hestia Control Panel&lt;/strong&gt; как базового слоя управления сервером&lt;/li&gt;
&lt;li&gt;Hestia обеспечивала: базовую защиту (fail2ban, firewall), автоматическое получение и обновление &lt;strong&gt;Let&amp;rsquo;s Encrypt&lt;/strong&gt; сертификатов, управление доменами и резервное копирование веб-сайта&lt;/li&gt;
&lt;li&gt;Создан отдельный домен в Hestia для AzuraCast — для получения SSL-сертификата; домен настроен как &lt;strong&gt;reverse proxy&lt;/strong&gt; на порт AzuraCast&lt;/li&gt;
&lt;li&gt;Nginx в составе Hestia выступал фронтенд-прокси: терминировал TLS и передавал трафик во внутренний сервис&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="2-azuracast--платформа-вещания"&gt;2. AzuraCast — платформа вещания&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Установка &lt;strong&gt;AzuraCast&lt;/strong&gt; (self-hosted, Docker-вариант) с нуля на подготовленный сервер&lt;/li&gt;
&lt;li&gt;Развёрнуты две независимые радиостанции в рамках одной инсталляции:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Станция 1&lt;/strong&gt; — медитативная и этническая музыка, длинные композиции (в том числе треки продолжительностью до 30 минут)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Станция 2&lt;/strong&gt; — авторская музыка частных исполнителей сообщества&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Настроен стек вещания: &lt;strong&gt;Liquidsoap&lt;/strong&gt; (автоматизация и ротация) + &lt;strong&gt;Icecast&lt;/strong&gt; (стриминг-сервер для слушателей)&lt;/li&gt;
&lt;li&gt;Загружена и каталогизирована вся медиатека из предоставленных mp3-файлов&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="3-ротация-и-расписание-вещания"&gt;3. Ротация и расписание вещания&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Настроена &lt;strong&gt;умная ротация&lt;/strong&gt; с учётом хронометража треков: длинные композиции (20–30 минут) вынесены в ночное расписание, чтобы не нарушать дневной listening experience&lt;/li&gt;
&lt;li&gt;Дневной эфир составлен из коротких и средних треков с комфортным ритмом&lt;/li&gt;
&lt;li&gt;Добавлены &lt;strong&gt;джинглы (отбивки)&lt;/strong&gt; с интервалом каждые 30 минут — для создания радийного ощущения и брендинга станций&lt;/li&gt;
&lt;li&gt;Настроены плейлисты с разными режимами ротации (sequential, shuffled, scheduled)&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="4-статистика-и-мониторинг"&gt;4. Статистика и мониторинг&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Активирован встроенный модуль статистики AzuraCast (&lt;strong&gt;AzuraCast Analytics&lt;/strong&gt;) на базе &lt;strong&gt;InfluxDB&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Сбор данных: количество слушателей в реальном времени, история подключений, geography listeners, популярные треки, пиковые нагрузки&lt;/li&gt;
&lt;li&gt;Данные позволили подтвердить аудиторию: 20–30 уникальных слушателей ежедневно, сессии по несколько часов, пик до 50 одновременных подключений&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="5-форматы-и-потоки-вещания"&gt;5. Форматы и потоки вещания&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Настроено несколько &lt;strong&gt;Mount Points&lt;/strong&gt; для каждой станции с разными битрейтами:
&lt;ul&gt;
&lt;li&gt;Высокое качество: &lt;strong&gt;MP3 320 kbps&lt;/strong&gt; для десктопных клиентов&lt;/li&gt;
&lt;li&gt;Среднее качество: &lt;strong&gt;MP3 128 kbps&lt;/strong&gt; для мобильных устройств и встроенного плеера в приложении&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AAC / OGG&lt;/strong&gt; как альтернативные форматы&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Настроены метаданные потока: название станции, текущий трек, обложка — всё транслируется в ICY metadata&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="6-сайт-визитка-на-joomla"&gt;6. Сайт-визитка на Joomla&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;На том же сервере (отдельный домен через Hestia) развёрнута &lt;strong&gt;Joomla CMS&lt;/strong&gt; с двуязычной конфигурацией (ru / en)&lt;/li&gt;
&lt;li&gt;В качестве фреймворка использован &lt;strong&gt;Helix3 Ultimate Framework&lt;/strong&gt; + конструктор страниц &lt;strong&gt;SP Page Builder&lt;/strong&gt; — позволили собрать лендинг без написания вёрстки вручную&lt;/li&gt;
&lt;li&gt;Структура сайта: главная с описанием сообщества и радиостанций, встроенный &lt;strong&gt;HTML5-плеер от AzuraCast&lt;/strong&gt; (iframe embed) для обеих станций, контактная информация&lt;/li&gt;
&lt;li&gt;Сайт доступен по прямым ссылкам и служит точкой входа для слушателей вне мобильного приложения&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="7-резервное-копирование"&gt;7. Резервное копирование&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Резервное копирование AzuraCast&lt;/strong&gt; настроено по расписанию средствами встроенного скрипта: полный бэкап (конфигурация, база данных, медиатека) сохраняется локально&lt;/li&gt;
&lt;li&gt;Настроена &lt;strong&gt;репликация бэкапов по SSH&lt;/strong&gt; на удалённый сервер — для защиты от потери данных при отказе основного хоста (именно такой сценарий уже случался ранее)&lt;/li&gt;
&lt;li&gt;Резервное копирование веб-сайта (Joomla) — через встроенный механизм &lt;strong&gt;Hestia&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="технологии"&gt;Технологии&lt;/h4&gt;
&lt;div class="row"&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/linux-original.svg" alt="Linux"&gt;&lt;div&gt;Linux&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/nginx.svg" alt="Nginx"&gt;&lt;div&gt;Nginx&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/docker-original.svg" alt="Docker"&gt;&lt;div&gt;Docker&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/bash.svg" alt="Bash"&gt;&lt;div&gt;Bash&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/joomla.svg" alt="Joomla"&gt;&lt;div&gt;Joomla&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/lets-encrypt.svg" alt="Let's Encrypt"&gt;&lt;div&gt;Let's Encrypt&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h4 id="результаты"&gt;Результаты&lt;/h4&gt;
&lt;p&gt;✅ &lt;strong&gt;Восстановление:&lt;/strong&gt; вещание возобновлено с нуля по единственным исходным данным — набору mp3-файлов&lt;br&gt;
✅ &lt;strong&gt;Две станции:&lt;/strong&gt; независимые эфиры с разными форматами и расписаниями ротации&lt;br&gt;
✅ &lt;strong&gt;Аудитория:&lt;/strong&gt; 20–30 ежедневных слушателей, сессии по несколько часов, пики до 50 одновременных подключений&lt;br&gt;
✅ &lt;strong&gt;Надёжность:&lt;/strong&gt; работа 24/7, многоуровневое резервное копирование (локально + remote SSH)&lt;br&gt;
✅ &lt;strong&gt;Безопасность:&lt;/strong&gt; SSL/TLS для всех точек входа, fail2ban, изолированные домены&lt;br&gt;
✅ &lt;strong&gt;Сопровождение:&lt;/strong&gt; техническая поддержка в течение ~2 лет — обновления, добавление треков, правки сайта&lt;/p&gt;</description></item><item><title>Прокси с низкой латентностью для торговли на Binance</title><link>https://ruadmin.root.sx/ru/posts/self-hosted/binance-trading-proxy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ruadmin.root.sx/ru/posts/self-hosted/binance-trading-proxy/</guid><description>&lt;h2 id="прокси-с-низкой-латентностью-для-торговли-на-binance"&gt;Прокси с низкой латентностью для торговли на Binance&lt;/h2&gt;
&lt;hr&gt;
&lt;h4 id="клиент"&gt;Клиент&lt;/h4&gt;
&lt;p&gt;Профессиональный трейдер Binance из Беларуси, столкнувшийся с высокой латентностью в торговом терминале&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="задача"&gt;Задача&lt;/h4&gt;
&lt;p&gt;Во время активной торговли пинг и латентность в терминале достигали 150–250 мс, что делало торговлю невозможной. Терминал принимает только HTTP/HTTPS прокси (SOCKS не поддерживает). Прямой трафик с Дальнего Востока РФ до серверов Binance часто идёт через Москву/Европу («крюк» с пингом 150–250 мс). Оптимальный маршрут — Хабаровск → Токио по тихоокеанским магистралям (~25–35 мс) → серверы Binance (AWS ap-northeast-1, ~1–3 мс) — не использовался. Российские ТСПУ блокируют нестандартный трафик.&lt;/p&gt;</description></item></channel></rss>