{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Alt Linux - Мои заметки",
    "_rss_description": "Здесь собраны собственные и чужие находки полезные при работы с ALT Linux. Чтобы всегда были под рукой и не потерялись в приложении заметки.",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/alt.webman.agency\/",
    "feed_url": "https:\/\/alt.webman.agency\/rss\/",
    "icon": false,
    "authors": [
        {
            "name": "Дмитрий",
            "url": "https:\/\/alt.webman.agency\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "10",
            "url": "https:\/\/alt.webman.agency\/all\/ispravlenie-taymauta-proshivki-bluetooth-na-intel-ax200-v-linux\/",
            "title": "Исправление таймаута прошивки Bluetooth на Intel AX200 в Linux",
            "content_html": "<p class=\"lead\">Полное руководство по решению проблемы команды 0xfc05 timeout для Intel AX200 Bluetooth на Linux 6.12+. Проверено на ALT Linux Gnome, Ubuntu, Debian и Fedora. Актуально на апрель 2026 года.<\/p>\n<h3>Описание проблемы<\/h3>\n<p>После обновления ядра или свежей установки Linux на компьютере с адаптером <i>Intel AX200<\/i> Bluetooth перестает работать. В логах ядра видны ошибки:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">Bluetooth: hci0: command 0xfc05 tx timeout\nBluetooth: hci0: Reading Intel version command failed (-110)<\/code><\/pre><p>Интерфейс HCI остается в состоянии DOWN с адресом `00:00:00:00:00:00`, хотя модули загружены и прошивки установлены.<\/p>\n<h3>Почему это происходит?<\/h3>\n<p>Начиная с <b>ядра 6.12.x<\/b>, изменилась логика инициализации Intel Bluetooth адаптеров. Стандартные параметры модуля `btusb`, которые работали на 6.11 и ниже, больше не совместимы с новыми версиями. Требуются специальные флаги для предотвращения таймаутов при загрузке прошивки.<\/p>\n<p class=\"loud\">Решение очень простое — нужно изменить параметры модуля в файле конфигурации.<\/p>\n<h3>Быстрое решение (30 секунд)<\/h3>\n<p>Если вы спешите, выполните эти две команды:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo tee \/etc\/modprobe.d\/btusb.conf &lt;&lt; &#039;EOF&#039;\noptions btusb disable_scofix=Y\noptions btusb reset=Y\noptions btusb max_isoc_frames=4\nEOF\n\nsudo reboot<\/code><\/pre><p>После перезагрузки откройте <b>Параметры → Bluetooth<\/b> и включите выключатель.<\/p>\n<blockquote>\n<p><b>Если это не помогло:<\/b> Прочитайте раздел «Полное решение» ниже.<\/p>\n<\/blockquote>\n<h3>Полное решение (пошаговое руководство)<\/h3>\n<h4>Шаг 1: Диагностика<\/h4>\n<p>Сначала убедимся, что проблема именно в этом:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># Проверить наличие адаптера\nlsusb | grep -i intel\n\n# Проверить статус HCI\nhciconfig -a\n\n# Проверить логи ядра на таймауты\ndmesg | grep -i &quot;bluetooth\\|btusb&quot; | grep -E &quot;timeout|failed&quot;<\/code><\/pre><p>Если видите `0xfc05 tx timeout` — это подтверждает нашу проблему.<\/p>\n<h4>Шаг 2: Остановка Bluetooth<\/h4>\n<pre class=\"e2-text-code\"><code class=\"\">sudo service bluetooth stop\nsudo killall -9 bluetoothd 2&gt;\/dev\/null || true\nsudo modprobe -r btusb 2&gt;\/dev\/null || true\nsudo modprobe -r bluetooth 2&gt;\/dev\/null || true\nsleep 2<\/code><\/pre><h4>Шаг 3: Создание конфигурации<\/h4>\n<p>Это <b>ключевой шаг<\/b>. Создаем файл с параметрами для модуля `btusb`:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo tee \/etc\/modprobe.d\/btusb.conf &lt;&lt; &#039;EOF&#039;\n# Intel AX200 Bluetooth Fix для Linux 6.12+\noptions btusb disable_scofix=Y\noptions btusb reset=Y\noptions btusb max_isoc_frames=4\nEOF\n\nsudo tee \/etc\/modprobe.d\/bluetooth.conf &lt;&lt; &#039;EOF&#039;\n# Общие параметры для стабильной работы Bluetooth\noptions bluetooth disable_esco=Y\noptions bluetooth enable_hs=Y\nEOF<\/code><\/pre><h4>Шаг 4: Загрузка модулей заново<\/h4>\n<pre class=\"e2-text-code\"><code class=\"\">sudo modprobe bluetooth\nsleep 1\nsudo modprobe btusb\nsleep 2<\/code><\/pre><h4>Шаг 5: Запуск Bluetooth сервиса<\/h4>\n<pre class=\"e2-text-code\"><code class=\"\">sudo service bluetooth start<\/code><\/pre><h4>Шаг 6: Проверка результата<\/h4>\n<pre class=\"e2-text-code\"><code class=\"\">hciconfig -a<\/code><\/pre><p>Должны увидеть:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">hci0:\tType: Primary  Bus: USB\n\tBD Address: XX:XX:XX:XX:XX:XX  ACL MTU: 1021:6 SCO MTU: 64:1\n\tUP RUNNING \n\tRX bytes:... acl:0 sco:0 events:... errors:0\n\tTX bytes:... acl:0 sco:0 commands:... errors:0<\/code><\/pre><p><b>Ключевые признаки успеха:<\/b><\/p>\n<ul>\n<li>BD Address содержит реальный адрес (не 00:00:00:00:00:00)<\/li>\n<li>Статус <i>UP RUNNING<\/i> (а не DOWN)<\/li>\n<li>RX\/TX bytes содержат числа больше нуля<\/li>\n<li>Нет ошибок в логах<\/li>\n<\/ul>\n<h4>Шаг 7: Перезагрузка (рекомендуется)<\/h4>\n<pre class=\"e2-text-code\"><code class=\"\">sudo reboot<\/code><\/pre><p>После перезагрузки откройте <b>Параметры → Bluetooth<\/b> и включите Bluetooth.<\/p>\n<h3>Автоматическое решение<\/h3>\n<p>Если вы предпочитаете автоматизацию, используйте этот скрипт:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">#!\/bin\/bash\nsudo service bluetooth stop\nsudo killall -9 bluetoothd 2&gt;\/dev\/null || true\nsudo modprobe -r btusb 2&gt;\/dev\/null || true\nsudo modprobe -r bluetooth 2&gt;\/dev\/null || true\nsleep 2\n\nsudo tee \/etc\/modprobe.d\/btusb.conf &lt;&lt; &#039;EOF&#039;\noptions btusb disable_scofix=Y\noptions btusb reset=Y\noptions btusb max_isoc_frames=4\nEOF\n\nsudo tee \/etc\/modprobe.d\/bluetooth.conf &lt;&lt; &#039;EOF&#039;\noptions bluetooth disable_esco=Y\noptions bluetooth enable_hs=Y\nEOF\n\nsudo modprobe bluetooth\nsleep 1\nsudo modprobe btusb\nsleep 2\nsudo service bluetooth start\n\necho &quot;✅ Bluetooth восстановлен!&quot;\nhciconfig -a<\/code><\/pre><p>Сохраните как `bluetooth_fix.sh` и запустите:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">chmod +x bluetooth_fix.sh\nsudo bash bluetooth_fix.sh<\/code><\/pre><h3>Объяснение параметров<\/h3>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n<tr>\n<td>Параметр<\/td>\n<td>Значение<\/td>\n<td>Что делает<\/td>\n<\/tr>\n<tr>\n<td>disable_scofix=Y<\/td>\n<td>Y\/N<\/td>\n<td>Отключает старый способ обработки SCO пакетов. Нужен для совместимости с новыми ядрами<\/td>\n<\/tr>\n<tr>\n<td>reset=Y<\/td>\n<td>Y\/N<\/td>\n<td>Заставляет адаптер перезагружаться при инициализации. Помогает избежать таймаутов<\/td>\n<\/tr>\n<tr>\n<td>max_isoc_frames=4<\/td>\n<td>1-N<\/td>\n<td>Ограничивает размер изохронных фреймов. Предотвращает перегруз при передаче данных<\/td>\n<\/tr>\n<tr>\n<td>disable_esco=Y<\/td>\n<td>Y\/N<\/td>\n<td>Отключает eSCO (улучшенный SCO). Повышает совместимость со старыми устройствами<\/td>\n<\/tr>\n<tr>\n<td>enable_hs=Y<\/td>\n<td>Y\/N<\/td>\n<td>Включает высокоскоростной режим. Улучшает пропускную способность<\/td>\n<\/tr>\n<\/table>\n<h3>Проблемы и решения<\/h3>\n<h4>Проблема: «command 0xfc05 tx timeout» в логах остается<\/h4>\n<p><b>Возможные причины:<\/b> Конфиги не применились, прошивки повреждены или проблема на уровне BIOS\/UEFI.<\/p>\n<p><b>Решение:<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># 1. Убедитесь, что конфиги созданы\ncat \/etc\/modprobe.d\/btusb.conf\n\n# 2. Проверьте, что прошивки целы\nls -lh \/lib\/firmware\/intel\/ibt-20-1-3.sfi*\n\n# 3. Если прошивки в .xz (сжатые) - распакуйте\nsudo xz -d \/lib\/firmware\/intel\/ibt-20-1-3.sfi.xz 2&gt;\/dev\/null || true\n\n# 4. Переустановите пакеты\nsudo apt-get install --reinstall bluez bluez-utils linux-firmware\n\n# 5. Перезагрузитесь\nsudo reboot<\/code><\/pre><h4>Проблема: HCI интерфейс не обнаруживается<\/h4>\n<p><b>Решение:<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># Проверить, видит ли система устройство\nlsusb | grep 8087\n\n# Если видит (Bus 001 Device 003: ID 8087:0029) - проблема в инициализации\n# Выполнить все шаги выше\n\n# Если НЕ видит - проблема в BIOS\n# Перезагрузитесь в BIOS (обычно F2 или Del при загрузке)\n# Найдите &quot;Integrated Peripherals&quot; или &quot;Onboard Devices&quot;\n# Убедитесь, что Bluetooth включен<\/code><\/pre><h4>Проблема: Bluetooth часто отключается<\/h4>\n<p><b>Решение:<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># Проверить параметры текущей загрузки\ncat \/sys\/module\/btusb\/parameters\/disable_scofix\n\n# Если нужно увеличить стабильность - измените:\nsudo tee \/etc\/modprobe.d\/btusb.conf &lt;&lt; &#039;EOF&#039;\noptions btusb disable_scofix=Y\noptions btusb reset=Y\noptions btusb max_isoc_frames=8\nEOF\n\nsudo reboot<\/code><\/pre><h3>Проверка успешности<\/h3>\n<pre class=\"e2-text-code\"><code class=\"\">echo &quot;=== ДИАГНОСТИКА BLUETOOTH ===&quot; &amp;&amp; \\\necho &quot;HCI статус:&quot; &amp;&amp; \\\nhciconfig -a &amp;&amp; \\\necho &quot;&quot; &amp;&amp; \\\necho &quot;RFKILL статус:&quot; &amp;&amp; \\\nrfkill list bluetooth &amp;&amp; \\\necho &quot;&quot; &amp;&amp; \\\necho &quot;Последние логи:&quot; &amp;&amp; \\\ndmesg | grep -i bluetooth | tail -5<\/code><\/pre><p><b>Успех, если видите:<\/b><\/p>\n<ul>\n<li>`hci0: Type: Primary Bus: USB ... UP RUNNING`<\/li>\n<li>`rfkill list bluetooth` показывает `Unblocked`<\/li>\n<li>Последние логи без ошибок о таймаутах<\/li>\n<\/ul>\n<h3>Совместимость<\/h3>\n<p>Это решение проверено и работает на:<\/p>\n<ul>\n<li><i>Ubuntu<\/i> 22.04, 24.04+ (Linux 6.2 — 6.12+)<\/li>\n<li><i>ALT Linux<\/i> Gnome, Workstation, Workstation+<\/li>\n<li><i>Debian<\/i> 12+ (Linux 6.1+)<\/li>\n<li><i>Fedora<\/i> 38+ (Linux 6.2+)<\/li>\n<li><i>openSUSE<\/i> Tumbleweed (Linux 6.12+)<\/li>\n<\/ul>\n<p>Также может помочь с другими адаптерами Intel (AX210, AX211) и может решить похожие проблемы с другими Intel чипами.<\/p>\n<h3>Для продвинутых пользователей<\/h3>\n<h4>Мониторинг Bluetooth в реальном времени<\/h4>\n<pre class=\"e2-text-code\"><code class=\"\"># Следить за логами демона\njournalctl -u bluetooth -f\n\n# В другом терминале - следить за HCI статусом\nwatch -n 1 hciconfig\n\n# Третий терминал - логи ядра\nsudo dmesg -w | grep -i bluetooth<\/code><\/pre><h4>Отладка конкретного устройства<\/h4>\n<pre class=\"e2-text-code\"><code class=\"\"># Сканировать доступные устройства\nhcitool scan\n\n# Получить информацию об устройстве\nhcitool info [MAC_ADDRESS]\n\n# Установить питание\nhcitool cmd 0x03 0x0005 0x01\n\n# Проверить соединения\nhcitool con<\/code><\/pre><h3>Благодарности и источники<\/h3>\n<p>Решение основано на:<\/p>\n<ul>\n<li>Linux kernel Bluetooth subsystem documentation<\/li>\n<li><a href=\"https:\/\/github.com\/morrissimo\/linux-kernel-patches\">Intel Wireless-Linux GitHub issues<\/a><\/li>\n<li>Опыт сообщества Linux пользователей<\/li>\n<li>Личное тестирование на ALT Linux и Ubuntu<\/li>\n<\/ul>\n<h3>Лицензия<\/h3>\n<p>Эта статья распространяется под лицензией <b>Creative Commons Attribution 4.0 International (CC BY 4.0)<\/b><\/p>\n<p>Вы свободны:<\/p>\n<ul>\n<li>Делиться этой информацией<\/li>\n<li>Адаптировать под свои нужды<\/li>\n<li>Использовать в коммерческих целях<\/li>\n<\/ul>\n<p>При условии: Указание авторства<\/p>\n<h3>Версии документа<\/h3>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n<tr>\n<td>Версия<\/td>\n<td>Дата<\/td>\n<td>Изменения<\/td>\n<\/tr>\n<tr>\n<td>2.0<\/td>\n<td>Апрель 2026<\/td>\n<td>Обновлено для ядра 6.12.74, добавлены скрипты, расширена диагностика<\/td>\n<\/tr>\n<tr>\n<td>1.5<\/td>\n<td>Октябрь 2024<\/td>\n<td>Первоначальное исправление для ядра 6.1-6.11<\/td>\n<\/tr>\n<tr>\n<td>1.0<\/td>\n<td>2023<\/td>\n<td>Исходное решение<\/td>\n<\/tr>\n<\/table>\n<p class=\"foot\"><i>Последнее обновление: 2 апреля 2026<\/i> | <i>Статус: Проверено и работает<\/i><\/p>\n",
            "date_published": "2026-03-05T10:18:34+03:00",
            "date_modified": "2026-04-02T23:19:31+03:00",
            "tags": [
                "Intel AX200"
            ],
            "_date_published_rfc2822": "Thu, 05 Mar 2026 10:18:34 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "10",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "9",
            "url": "https:\/\/alt.webman.agency\/all\/utilita-mtr-v-alt-linux\/",
            "title": "Утилита MTR в ALT Linux",
            "content_html": "<p><h2>Что такое MTR<\/h2><\/p>\n<p>MTR (My Traceroute) — это консольный инструмент диагностики сети, объединяющий в себе функции <pre class=\"e2-text-code\"><code class=\"\">ping<\/code><\/pre> и <pre class=\"e2-text-code\"><code class=\"\">traceroute<\/code><\/pre>. Он непрерывно проверяет каждый хоп на пути к цели и выводит статистику потерь и задержек в режиме реального времени, что упрощает поиск «узких» мест и слабых звеньев маршрута.<\/p>\n<p><h2>Установка в ALT Linux<\/h2><\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">sudo apt-get install mtr<\/code><\/pre><\/pre>\n<p><h2>Основные сценарии использования<\/h2><\/p>\n<p><h3>1. Быстрая интерактивная проверка маршрута<\/h3><\/p>\n<p>Запускает интерактивную таблицу, которая обновляется до нажатия <kbd>q<\/kbd>:<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">mtr ya.ru<\/code><\/pre><\/pre>\n<p><h3>2. Одноразовый отчёт для скриптов и тикетов<\/h3><\/p>\n<p>Собирает 100 проб к каждому хопу и завершается:<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">mtr -r -c 100 ya.ru &amp;gt; mtr-report.txt<\/code><\/pre><\/pre>\n<p><h3>3. Широкий отчёт с полными доменными именами<\/h3><\/p>\n<p>Используется, когда важно видеть FQDN каждого узла:<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">mtr -rw -c 50 8.8.8.8<\/code><\/pre><\/pre>\n<p><h3>4. Проверка только IPv4 или IPv6<\/h3><\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">mtr -4 ya.ru          # только IPv4\nmtr -6 ya.ru          # только IPv6<\/code><\/pre><\/pre>\n<p><h3>5. Ускоренный\/замедленный опрос<\/h3><\/p>\n<p>Интервал между пакетами по умолчанию 1 с. Уменьшаем или увеличиваем нагрузку:<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">mtr -i 0.5 ya.ru      # опрос каждые 0.5 с\nmtr -i 5 ya.ru        # опрос каждые 5 с<\/code><\/pre><\/pre>\n<p><h3>6. Ограничение глубины трассировки<\/h3><\/p>\n<p>Проверяем только первые 3 хопа (удобно внутри локальной сети):<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">mtr -m 3 192.168.1.1<\/code><\/pre><\/pre>\n<p><h3>7. Смена протокола транспорта<\/h3><\/p>\n<p>По умолчанию используется ICMP. Можно переключиться на TCP или UDP:<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">mtr --tcp -P 443 ya.ru\nmtr --udp ya.ru<\/code><\/pre><\/pre>\n<p><h3>8. Экспорт результатов<\/h3><\/p>\n<p>CSV для Excel, JSON для Grafana, XML для старых систем:<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">mtr --csv -c 100 ya.ru       &amp;gt; trace.csv\nmtr --json -c 100 ya.ru      &amp;gt; trace.json<\/code><\/pre><\/pre>\n<p><h3>9. «Ночной» фоновый сбор статистики<\/h3><\/p>\n<p>Запуск в <pre class=\"e2-text-code\"><code class=\"\">screen<\/code><\/pre> или <pre class=\"e2-text-code\"><code class=\"\">cron<\/code><\/pre> без взаимодействия с терминалом:<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">screen -dmS mtr-job mtr -r -c 500 -i 2 1.1.1.1<\/code><\/pre><\/pre>\n<p><h3>10. Проверка двустороннего маршрута<\/h3><\/p>\n<p>Чтобы отличить проблему «туда» от проблемы «обратно», собирают два отчёта:<\/p>\n<ul>\n  <li>с сервера на клиента<\/li>\n  <li>с клиента на сервер<\/li>\n<\/ul>\n<p>Сравнение Loss % и StDev в обоих файлах быстро покажет, на каком участке падают пакеты.<\/p>\n<p><h2>Горячие клавиши в интерактивном режиме<\/h2><\/p>\n<table border=\"1\" cellpadding=\"4\"><tr><th><p>Клавиша<\/p>\n<\/th><th><p>Действие<\/p>\n<\/th><\/tr><tr><td><p><kbd>p<\/kbd><\/p>\n<\/td><td><p>приостановить\/возобновить опрос<\/p>\n<\/td><\/tr><tr><td><p><kbd>d<\/kbd><\/p>\n<\/td><td><p>переключить режим отображения<\/p>\n<\/td><\/tr><tr><td><p><kbd>o<\/kbd><\/p>\n<\/td><td><p>изменить порядок колонок<\/p>\n<\/td><\/tr><tr><td><p><kbd>r<\/kbd><\/p>\n<\/td><td><p>сбросить статистику<\/p>\n<\/td><\/tr><tr><td><p><kbd>q<\/kbd><\/p>\n<\/td><td><p>выход<\/p>\n<\/td><\/tr><\/table><p><h2>Полезные опции одной строкой<\/h2><\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">mtr -4b -c 200 -i 0.8 -rw ya.ru<\/code><\/pre><\/pre>\n<ul>\n  <li><pre class=\"e2-text-code\"><code class=\"\">-4<\/code><\/pre> — только IPv4<\/li>\n  <li><pre class=\"e2-text-code\"><code class=\"\">-b<\/code><\/pre> — показать IP и hostname<\/li>\n  <li><pre class=\"e2-text-code\"><code class=\"\">-c 200<\/code><\/pre> — 200 циклов<\/li>\n  <li><pre class=\"e2-text-code\"><code class=\"\">-i 0.8<\/code><\/pre> — интервал 0.8 с<\/li>\n  <li><pre class=\"e2-text-code\"><code class=\"\">-rw<\/code><\/pre> — широкий отчёт с FQDN<\/li>\n<\/ul>\n<p><h2>Заключение<\/h2><\/p>\n<p>MTR — must-have утилита в арсенале администратора ALT Linux: она быстро локализует сетевые узкие места, предоставляет наглядную цифровую статистику и легко интегрируется в автоматизированные скрипты. Запомните три флага — <pre class=\"e2-text-code\"><code class=\"\">-r<\/code><\/pre> (отчёт), <pre class=\"e2-text-code\"><code class=\"\">-c<\/code><\/pre> (количество), <pre class=\"e2-text-code\"><code class=\"\">-w<\/code><\/pre> (широкий формат) — и 90 % задач будут решены.<\/p>\n",
            "date_published": "2025-10-27T14:08:44+03:00",
            "date_modified": "2025-10-27T14:08:09+03:00",
            "tags": [
                "MTR",
                "ping",
                "traceroute"
            ],
            "_date_published_rfc2822": "Mon, 27 Oct 2025 14:08:44 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "9",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "8",
            "url": "https:\/\/alt.webman.agency\/all\/ctavim-i-nastraivaem-resilio-sync-v-alt-linux-gnome\/",
            "title": "Cтавим и настраиваем Resilio Sync в ALT Linux GNOME",
            "content_html": "<p>Безопасная установка и настройка с автозапуском и точечным доступом к вашим папкам<\/p>\n<p><h2>1. Установка<\/h2><\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\"># 1.1. скачиваем официальный RPM\ncd ~\/Загрузки\nwget https:\/\/download-cdn.resilio.com\/stable\/linux-x64\/resilio-sync-x64.rpm\n\n# 1.2. ставим\nepm install .\/resilio-sync-x64.rpm<\/code><\/pre><\/pre>\n<p><h2>2. Создаём системного пользователя и нужные каталоги<\/h2><\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\"># 2.1. пользователь и группа\nsudo groupadd -r rslsync 2&gt;\/dev\/null\nsudo useradd -r -g rslsync -d \/var\/lib\/resilio-sync -s \/sbin\/nologin rslsync 2&gt;\/dev\/null\n\n# 2.2. рабочие директории\nsudo mkdir -p \/var\/lib\/resilio-sync \/etc\/resilio-sync\nsudo chown rslsync:rslsync \/var\/lib\/resilio-sync \/etc\/resilio-sync<\/code><\/pre><\/pre>\n<p><h2>3. Включаем автозапуск и проверяем статус<\/h2><\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">sudo systemctl enable --now resilio-sync\nsystemctl is-enabled resilio-sync   # должен выдать enabled\nsystemctl status resilio-sync       # active (running)<\/code><\/pre><\/pre>\n<p><h2>4. Настраиваем права: только нужные папки и ничего лишнего<\/h2><\/p>\n<p>Замените <pre class=\"e2-text-code\"><code class=\"\">YOUR_USER<\/code><\/pre> на ваше имя пользователя (например, <pre class=\"e2-text-code\"><code class=\"\">ivan<\/code><\/pre>).<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\"># 4.1. чистим старые ACL (!!! если нужно сбросить права в каталоге)\nsudo setfacl -b \/home\/YOUR_USER\n\n# 4.2. запрет на весь домашний каталог (только traverse)\nsudo setfacl -m u:rslsync:--x \/home\/YOUR_USER\n\n# 4.3. полный доступ к выбранным папкам + наследование\nfor d in iCloud &quot;Рабочий стол&quot; Документы Загрузки Видео Музыка Изображения; do\n  sudo setfacl -R -m u:rslsync:rwx &quot;\/home\/YOUR_USER\/$d&quot;\n  sudo setfacl -d -m u:rslsync:rwx &quot;\/home\/YOUR_USER\/$d&quot;\ndone\n\n# 4.4. то же для себя (чтобы вы могли удалять\/изменять новые файлы)\nfor d in iCloud &quot;Рабочий стол&quot; Документы Загрузки Видео Музыка Изображения; do\n  sudo setfacl -R -m u:$(id -un):rwx &quot;\/home\/YOUR_USER\/$d&quot;\n  sudo setfacl -d -m u:$(id -un):rwx &quot;\/home\/YOUR_USER\/$d&quot;\ndone<\/code><\/pre><\/pre>\n<p><h2>5. Перезапускаем службу<\/h2><\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">sudo systemctl restart resilio-sync<\/code><\/pre><\/pre>\n<p><h2>6. Первый вход в веб-интерфейс<\/h2><\/p>\n<p>Откройте браузер по адресу <a href=\"http:\/\/127.0.0.1:8888\/gui\"><a href=\"http:\/\/127.0.0.1:8888\/gui\">http:\/\/127.0.0.1:8888\/gui<\/a><\/a> и задайте имя устройства и новый пароль администратора.<\/p>\n<p><h2>7. Проверяем автозапуск и права<\/h2><\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\"># автозапуск\nsystemctl is-enabled resilio-sync   # enabled\n\n# права: rslsync НЕ видит \/home\/YOUR_USER, но видит нужные папки\nsudo -u rslsync ls \/home\/YOUR_USER          # Permission denied\nsudo -u rslsync ls \/home\/YOUR_USER\/Загрузки # OK<\/code><\/pre><\/pre>\n<p>Готово: Resilio Sync стартует сам при загрузке ALT Linux, имеет доступ только к выбранным папкам и ничего лишнего; вы и сервис можете читать, писать и удалять новые файлы без sudo.<\/p>\n<p>Поправить права можно скриптом ИИ-шный на свой страх и риск<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">#!\/bin\/bash\n# Скрипт для глобальной настройки прав доступа в Resilio Sync\n# Запускать с sudo: sudo .\/setup-resilio-permissions.sh\n\nset -e\n\necho &quot;=== Настройка прав доступа Resilio Sync ===&quot;\necho &quot;&quot;\n\n# Определяем текущего пользователя (который запустил sudo)\nif [ -z &quot;$SUDO_USER&quot; ]; then\n    echo &quot;Ошибка: скрипт должен быть запущен с sudo&quot;\n    exit 1\nfi\n\nSYNC_USER=&quot;$SUDO_USER&quot;\nSYNC_GROUP=&quot;$SUDO_USER&quot;\n\necho &quot;Пользователь для синхронизации: $SYNC_USER&quot;\necho &quot;Группа для синхронизации: $SYNC_GROUP&quot;\necho &quot;&quot;\n\n# 1. Добавляем пользователя в группу rslsync (если она существует)\nif getent group rslsync &gt; \/dev\/null 2&gt;&amp;1; then\n    echo &quot;1. Добавление пользователя $SYNC_USER в группу rslsync...&quot;\n    usermod -a -G rslsync &quot;$SYNC_USER&quot; || echo &quot;   Предупреждение: не удалось добавить в группу (возможно, уже добавлен)&quot;\n    echo &quot;   ✓ Готово&quot;\nelse\n    echo &quot;1. Группа rslsync не найдена, пропускаем...&quot;\nfi\n\n# 2. Создаём резервную копию конфигурации\nCONFIG_FILE=&quot;\/etc\/resilio-sync\/config.json&quot;\nif [ -f &quot;$CONFIG_FILE&quot; ]; then\n    echo &quot;&quot;\n    echo &quot;2. Создание резервной копии конфигурации...&quot;\n    cp &quot;$CONFIG_FILE&quot; &quot;${CONFIG_FILE}.backup.$(date +%Y%m%d_%H%M%S)&quot;\n    echo &quot;   ✓ Резервная копия создана&quot;\nfi\n\n# 3. Обновляем конфигурацию Resilio Sync (если нужно)\necho &quot;&quot;\necho &quot;3. Проверка конфигурации Resilio Sync...&quot;\n# Примечание: Resilio Sync не поддерживает прямую настройку прав доступа через config.json\n# Используем групповые права и setgid вместо этого\necho &quot;   ℹ Используем групповые права вместо параметров конфигурации&quot;\n\n# 4. Настраиваем системный сервис (опционально - можно изменить пользователя)\necho &quot;&quot;\necho &quot;4. Настройка системного сервиса...&quot;\nSERVICE_FILE=&quot;\/etc\/systemd\/system\/multi-user.target.wants\/resilio-sync.service&quot;\nif [ -f &quot;$SERVICE_FILE&quot; ]; then\n    # Создаём резервную копию\n    cp &quot;$SERVICE_FILE&quot; &quot;${SERVICE_FILE}.backup.$(date +%Y%m%d_%H%M%S)&quot;\n    \n    # Обновляем UMask в сервисе для более открытых прав\n    sed -i &#039;s\/UMask=0002\/UMask=0002\/&#039; &quot;$SERVICE_FILE&quot; || true\n    echo &quot;   ✓ Сервис настроен&quot;\nelse\n    echo &quot;   ⚠ Файл сервиса не найден: $SERVICE_FILE&quot;\nfi\n\n# 5. Находим все синхронизируемые директории\necho &quot;&quot;\necho &quot;5. Поиск всех синхронизируемых директорий...&quot;\n\n# Определяем группу для использования\nif getent group rslsync &gt; \/dev\/null 2&gt;&amp;1; then\n    USE_GROUP=&quot;rslsync&quot;\nelse\n    USE_GROUP=&quot;$SYNC_GROUP&quot;\nfi\n\necho &quot;   Используем группу: $USE_GROUP&quot;\necho &quot;&quot;\n\n# Функция для настройки прав на директорию\nsetup_directory_permissions() {\n    local SYNC_DIR=&quot;$1&quot;\n    \n    if [ ! -d &quot;$SYNC_DIR&quot; ]; then\n        echo &quot;   ⚠ Директория не найдена: $SYNC_DIR&quot;\n        return 1\n    fi\n    \n    echo &quot;   Обработка: $SYNC_DIR&quot;\n    \n    # Исправляем владельца и группу существующих файлов и директорий\n    # Владелец: пользователь, группа: rslsync (или группа пользователя, если rslsync нет)\n    echo &quot;      Исправление владельца и группы существующих файлов...&quot;\n    chown -R &quot;$SYNC_USER:$USE_GROUP&quot; &quot;$SYNC_DIR&quot; 2&gt;\/dev\/null || echo &quot;         ⚠ Не удалось изменить владельца\/группу (может потребоваться больше прав)&quot;\n    \n    # Устанавливаем setgid бит на директории (2775 = rwxrwxr-x + setgid)\n    # Это гарантирует, что новые файлы будут создаваться с группой директории\n    echo &quot;      Установка setgid бита на директории...&quot;\n    find &quot;$SYNC_DIR&quot; -type d -exec chmod 2775 {} \\; 2&gt;\/dev\/null || echo &quot;         ⚠ Не удалось установить setgid бит&quot;\n    \n    # Устанавливаем права на файлы (0664 = rw-rw-r--)\n    # Это даёт чтение\/запись владельцу и группе\n    echo &quot;      Установка прав на файлы...&quot;\n    find &quot;$SYNC_DIR&quot; -type f -exec chmod 0664 {} \\; 2&gt;\/dev\/null || echo &quot;         ⚠ Не удалось изменить права на файлы&quot;\n    \n    # Настраиваем ACL для дополнительной защиты\n    echo &quot;      Настройка ACL...&quot;\n    setfacl -R -m d:g:&quot;$USE_GROUP&quot;:rwx &quot;$SYNC_DIR&quot; 2&gt;\/dev\/null || true\n    setfacl -R -m g:&quot;$USE_GROUP&quot;:rwx &quot;$SYNC_DIR&quot; 2&gt;\/dev\/null || true\n    \n    echo &quot;      ✓ Права настроены (владелец: $SYNC_USER, группа: $USE_GROUP)&quot;\n}\n\n# Ищем все директории с .sync (исключаем служебные директории Resilio Sync)\nSYNC_DIRS=$(find \/home\/&quot;$SYNC_USER&quot; -name &quot;.sync&quot; -type d 2&gt;\/dev\/null | \\\n    grep -v &quot;\/\\.config\/resilio-sync&quot; | \\\n    grep -v &quot;\/\\.SyncUser&quot; | \\\n    grep -v &quot;\/License\/&quot; | \\\n    xargs -I {} dirname {} | \\\n    sort -u)\n\n# Также проверяем системные директории (если есть доступ)\nif [ -d &quot;\/var\/lib\/resilio-sync&quot; ]; then\n    # Можно добавить логику для поиска системных директорий, если нужно\n    # Пока пропускаем, так как они обычно требуют специальной настройки\n    true\nfi\n\n# Подсчитываем количество найденных директорий\nSYNC_COUNT=0\nif [ -n &quot;$SYNC_DIRS&quot; ]; then\n    SYNC_COUNT=$(echo &quot;$SYNC_DIRS&quot; | grep -v &#039;^$&#039; | wc -l)\nfi\n\nif [ &quot;$SYNC_COUNT&quot; -eq 0 ]; then\n    echo &quot;   ⚠ Не найдено синхронизируемых директорий&quot;\n    echo &quot;   Проверьте, что Resilio Sync запущен и синхронизирует папки&quot;\nelse\n    echo &quot;   Найдено директорий: $SYNC_COUNT&quot;\n    echo &quot;&quot;\n    \n    # Обрабатываем каждую директорию\n    COUNTER=1\n    while IFS= read -r SYNC_DIR; do\n        if [ -n &quot;$SYNC_DIR&quot; ] &amp;&amp; [ -d &quot;$SYNC_DIR&quot; ]; then\n            echo &quot;   [$COUNTER\/$SYNC_COUNT] $SYNC_DIR&quot;\n            setup_directory_permissions &quot;$SYNC_DIR&quot;\n            echo &quot;&quot;\n            COUNTER=$((COUNTER + 1))\n        fi\n    done &lt;&lt;&lt; &quot;$SYNC_DIRS&quot;\nfi\n\n# 6. Создаём .syncignore файлы в директориях с .git\necho &quot;&quot;\necho &quot;6. Создание .syncignore файлов в директориях с .git...&quot;\n\nSYNCIGNORE_COUNT=0\nif [ -n &quot;$SYNC_DIRS&quot; ] &amp;&amp; [ &quot;$SYNC_COUNT&quot; -gt 0 ]; then\n    while IFS= read -r SYNC_DIR; do\n        if [ -n &quot;$SYNC_DIR&quot; ] &amp;&amp; [ -d &quot;$SYNC_DIR&quot; ] &amp;&amp; [ -d &quot;$SYNC_DIR\/.git&quot; ]; then\n            SYNCIGNORE_FILE=&quot;$SYNC_DIR\/.syncignore&quot;\n            \n            # Создаём или обновляем .syncignore\n            if [ ! -f &quot;$SYNCIGNORE_FILE&quot; ] || ! grep -q &quot;\\.git\/&quot; &quot;$SYNCIGNORE_FILE&quot; 2&gt;\/dev\/null; then\n                {\n                    echo &quot;# Исключить .git из синхронизации Resilio Sync&quot;\n                    echo &quot;# Git репозиторий должен синхронизироваться через git, а не через файловую синхронизацию&quot;\n                    echo &quot;.git\/&quot;\n                    echo &quot;.gitignore&quot;\n                    echo &quot;*.git&quot;\n                } &gt;&gt; &quot;$SYNCIGNORE_FILE&quot;\n                \n                chown &quot;$SYNC_USER:$USE_GROUP&quot; &quot;$SYNCIGNORE_FILE&quot; 2&gt;\/dev\/null || true\n                chmod 644 &quot;$SYNCIGNORE_FILE&quot;\n                \n                echo &quot;   ✓ Создан\/обновлён: $SYNCIGNORE_FILE&quot;\n                SYNCIGNORE_COUNT=$((SYNCIGNORE_COUNT + 1))\n            else\n                echo &quot;   ℹ Уже существует: $SYNCIGNORE_FILE&quot;\n            fi\n        fi\n    done &lt;&lt;&lt; &quot;$SYNC_DIRS&quot;\n    \n    if [ &quot;$SYNCIGNORE_COUNT&quot; -eq 0 ]; then\n        echo &quot;   ℹ Не найдено директорий с .git для создания .syncignore&quot;\n    fi\nelse\n    echo &quot;   ℹ Нет синхронизируемых директорий для проверки&quot;\nfi\n\necho &quot;&quot;\necho &quot;=== Настройка завершена ===&quot;\necho &quot;&quot;\necho &quot;Обработано директорий: $SYNC_COUNT&quot;\nif [ &quot;$SYNCIGNORE_COUNT&quot; -gt 0 ]; then\n    echo &quot;Создано\/обновлено .syncignore файлов: $SYNCIGNORE_COUNT&quot;\nfi\necho &quot;&quot;\necho &quot;Следующие шаги:&quot;\necho &quot;1. Перезапустите Resilio Sync:&quot;\necho &quot;   sudo systemctl restart resilio-sync&quot;\necho &quot;   # Или для пользовательского экземпляра:&quot;\necho &quot;   systemctl --user restart resilio-sync&quot;\necho &quot;&quot;\necho &quot;2. Выйдите и войдите в систему заново, чтобы изменения группы вступили в силу&quot;\necho &quot;&quot;\necho &quot;3. Проверьте права доступа в одной из директорий:&quot;\nif [ -n &quot;$SYNC_DIRS&quot; ] &amp;&amp; [ &quot;$SYNC_COUNT&quot; -gt 0 ]; then\n    FIRST_DIR=$(echo &quot;$SYNC_DIRS&quot; | head -1)\n    if [ -n &quot;$FIRST_DIR&quot; ] &amp;&amp; [ -d &quot;$FIRST_DIR&quot; ]; then\n        echo &quot;   ls -la \\&quot;$FIRST_DIR\\&quot; | head -5&quot;\n        if [ -d &quot;$FIRST_DIR\/.git&quot; ]; then\n            echo &quot;   ls -la \\&quot;$FIRST_DIR\/.git\/\\&quot; | head -5&quot;\n        fi\n    fi\nfi\necho &quot;&quot;\necho &quot;4. Если проблемы остались, исправьте права вручную для конкретной директории:&quot;\necho &quot;   sudo chown -R $SYNC_USER:$USE_GROUP &lt;путь_к_директории&gt;&quot;\necho &quot;&quot;\nif [ -n &quot;$SYNC_DIRS&quot; ] &amp;&amp; [ &quot;$SYNC_COUNT&quot; -gt 0 ]; then\n    echo &quot;5. Список всех обработанных директорий:&quot;\n    while IFS= read -r SYNC_DIR; do\n        if [ -n &quot;$SYNC_DIR&quot; ] &amp;&amp; [ -d &quot;$SYNC_DIR&quot; ]; then\n            echo &quot;   - $SYNC_DIR&quot;\n        fi\n    done &lt;&lt;&lt; &quot;$SYNC_DIRS&quot;\nfi<\/code><\/pre>",
            "date_published": "2025-09-24T11:00:19+03:00",
            "date_modified": "2026-01-12T15:31:33+03:00",
            "tags": [
                "Resilio",
                "Sync"
            ],
            "_date_published_rfc2822": "Wed, 24 Sep 2025 11:00:19 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "8",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "7",
            "url": "https:\/\/alt.webman.agency\/all\/kak-bezopasno-nastroit-ssh-dostup-k-serveru-s-pomoschyu-klyuchey\/",
            "title": "Как безопасно настроить SSH-доступ к серверу с помощью ключей",
            "content_html": "<p>\n        В этом руководстве я покажу, как настроить SSH-подключение к серверу с использованием ключей <strong>с соблюдением базовых норм безопасности<\/strong>.\n    <\/p>\n<p><h2>Шаг 1: Создание безопасного SSH-ключа<\/h2><\/p>\n<p>\n        Генерируем ключ с современным алгоритмом и <strong>обязательным паролем<\/strong>:\n    <\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">ssh-keygen -t ed25519 -C &quot;project-prod-login@beget.tech&quot;<\/code><\/pre><\/pre>\n<p>\n        <strong>Важно:<\/strong>\n    <\/p>\n<ul>\n        <li>Укажите путь: <strong>~\/.ssh\/project-prod-login<\/strong><\/li>\n        <li><strong>Обязательно задайте надёжный пароль<\/strong> (passphrase) для ключа<\/li>\n        <li>ed25519 безопаснее RSA при меньшей длине ключа<\/li>\n    <\/ul>\n<p><h2>Шаг 2: Копирование ключа на сервер<\/h2><\/p>\n<p>\n        Отправляем ключ безопасным способом:\n    <\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">ssh-copy-id -i ~\/.ssh\/project-prod-login login@beget.tech<\/code><\/pre><\/pre>\n<p>\n        <strong>Проверьте:<\/strong> на сервере должны быть правильные права:\n    <\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">chmod 700 ~\/.ssh\nchmod 600 ~\/.ssh\/authorized_keys<\/code><\/pre><\/pre>\n<p><h2>Шаг 3: Безопасная настройка SSH-конфига<\/h2><\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">nano ~\/.ssh\/config<\/code><\/pre><\/pre>\n<p>\n        Добавьте с ограничениями:\n    <\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">Host project-prod\n    HostName beget.tech\n    User login\n    Port 22\n    IdentityFile ~\/.ssh\/project-prod-login\n    IdentitiesOnly yes\n    ForwardAgent no<\/code><\/pre><\/pre>\n<p>\n        <strong>Почему это важно:<\/strong>\n    <\/p>\n<ul>\n        <li><pre class=\"e2-text-code\"><code class=\"\">IdentitiesOnly yes<\/code><\/pre> — запрещает автоматическую отправку всех ключей<\/li>\n        <li><pre class=\"e2-text-code\"><code class=\"\">ForwardAgent no<\/code><\/pre> — отключает небезопасное перенаправление агента<\/li>\n    <\/ul>\n<p><h2>Рекомендации по безопасности<\/h2><\/p>\n<ol>\n        <li><strong>На сервере:<\/strong> отключите парольную аутентификацию в <pre class=\"e2-text-code\"><code class=\"\">\/etc\/ssh\/sshd_config<\/code><\/pre><br>\n            <pre class=\"e2-text-code\"><code class=\"\">PasswordAuthentication no<\/code><\/pre><p>→ затем<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">systemctl restart sshd<\/code><\/pre><p><\/li><\/p>\n<li><strong>Измените порт SSH<\/strong> (не 22) для снижения брутфорс-атак<\/li>\n        <li><strong>Никогда не передавайте приватный ключ<\/strong> по незащищённым каналам<\/li>\n        <li><strong>Регулярно обновляйте ключи<\/strong> (раз в 6-12 месяцев)<\/li>\n        <li>Храните резервную копию ключа <strong>в зашифрованном хранилище<\/strong><\/li>\n    <\/ol>\n<p><h2>Проверка безопасности<\/h2><\/p>\n<p>\n        Убедитесь, что всё настроено правильно:\n    <\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\"># Проверка прав доступа\nls -la ~\/.ssh\n# Приватный ключ должен быть: -rw------- (600)\n\n# Тест подключения\nssh -v project-prod<\/code><\/pre><\/pre>\n<p><h2>Заключение<\/h2><\/p>\n<p>\n        Ключевая аутентификация безопаснее паролей, <strong>но только при правильной настройке<\/strong>. \n        Следуя этим рекомендациям, вы защитите сервер от 90% стандартных атак.\n    <\/p>\n<p>\n        <strong>Помните:<\/strong> ваш приватный ключ — это как цифровой паспорт. Обращайтесь с ним соответственно.\n    <\/p>\n",
            "date_published": "2025-07-30T14:04:32+03:00",
            "date_modified": "2025-07-30T14:11:45+03:00",
            "tags": [
                "ssh-copy-id",
                "ssh-keygen"
            ],
            "_date_published_rfc2822": "Wed, 30 Jul 2025 14:04:32 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "7",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "6",
            "url": "https:\/\/alt.webman.agency\/all\/flameshot-2\/",
            "title": "Запуск Flameshot в Alt Linux Gnome",
            "content_html": "<pre class=\"e2-text-code\"><code class=\"\">flatpak permission-set screenshot screenshot org.flameshot.Flameshot yes<\/code><\/pre>",
            "date_published": "2025-03-12T12:01:30+03:00",
            "date_modified": "2025-03-12T14:48:45+03:00",
            "tags": [
                "flameshot"
            ],
            "_date_published_rfc2822": "Wed, 12 Mar 2025 12:01:30 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "5",
            "url": "https:\/\/alt.webman.agency\/all\/nautilus-chereduyuschihsya-cveta\/",
            "title": "Настройка Nautilus для отображения чередующихся цветов строк в режиме списка",
            "content_html": "<h3>Шаг 1: Создание конфигурационного файла<\/h3>\n<p>Чтобы изменить внешний вид Nautilus, необходимо создать файл стилей `gtk.css` в вашем домашнем каталоге. Для этого выполните команду в терминале:<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">touch ~\/.config\/gtk-4.0\/gtk.css<\/code><\/pre><\/pre>\n<h3>Шаг 2: Добавление стилей<\/h3>\n<p>Откройте созданный файл `gtk.css` с помощью любого текстового редактора, например:<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">nano ~\/.config\/gtk-4.0\/gtk.css<\/code><\/pre><\/pre>\n<p>Вставьте в файл следующий код:<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">\/* Определение базовых цветов *\/\n:root {\n    --row-even-bg-color: hsla(0, 0%, 100%, 0.04); \/* Полупрозрачный белый (4%) для осветления фона *\/\n    --row-hover-bg-color: hsla(0, 0%, 100%, 0.08); \/* Полупрозрачный белый (8%) для эффекта наведения *\/\n}\n\n\/* Применение цветов к Nautilus *\/\n.nautilus-list-view row:nth-child(even):not(:hover):not(:selected) {\n    background-color: var(--row-even-bg-color);\n}\n\n.nautilus-list-view row:hover {\n    background-color: var(--row-hover-bg-color);\n}<\/code><\/pre><\/pre>\n<p>Сохраните изменения и закройте текстовый редактор.<\/p>\n<h3>Шаг 3: Перезапуск Nautilus<\/h3>\n<p>Чтобы изменения вступили в силу, необходимо перезапустить Nautilus. Выполните в терминале:<\/p>\n<p>Выходим из Nautilus<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">nautilus -q<\/code><\/pre><\/pre>\n<p>Запускаем Nautilus<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">nautilus &amp;<\/code><\/pre><\/pre>\n<p>Теперь, открыв Nautilus в режиме списка, вы увидите, что строки чередуются по цвету, что делает просмотр файлов и папок более удобным.<\/p>\n",
            "date_published": "2024-11-20T12:03:18+03:00",
            "date_modified": "2024-11-20T12:05:30+03:00",
            "tags": [
                "nautilus",
                "чередование в списке"
            ],
            "_date_published_rfc2822": "Wed, 20 Nov 2024 12:03:18 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "5",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "4",
            "url": "https:\/\/alt.webman.agency\/all\/uvelichenie-kursora-pri-rezkom-dvizhenii-myshi\/",
            "title": "Увеличение курсора при резком движении мыши.",
            "content_html": "<p>В рабочем окружении GNOME можно легко найти курсор, не нажимая кнопки на клавиатуре. Для этого перейдите в <strong>Настройки<\/strong>, затем в раздел <strong>Специальные возможности<\/strong> и включите пункт <strong>Обнаружить курсор<\/strong>. Теперь, нажав клавишу <b>Ctrl<\/b>, вы получите подсказку о местоположении курсора.<\/p>\n<p>Если вы пользовались MacBook с MacOS, вам мог понравиться способ поиска курсора, при котором он увеличивался при резком движении мыши. Этот метод доступен и в GNOME с помощью расширения <strong>Wiggle<\/strong>.<\/p>\n<p><h2>Установка Wiggle<\/h2><\/p>\n<p>После установки расширения Wiggle вы сможете находить курсор, резко двигая мышью влево-вправо. Также можно настроить размер курсора и различные эффекты. Для настройки нажмите на шестеренку в разделе <strong>Расширения<\/strong>.<\/p>\n<p>Установить расширение Wiggle можно по следующей ссылке: <a href=\"https:\/\/extensions.gnome.org\/extension\/6784\/wiggle\/\">Wiggle на GNOME Extensions<\/a>.<\/p>\n<p>Источник: <a href=\"https:\/\/t.me\/alt_gnome\/1605\">https:\/\/t.me\/alt_gnome\/1605<\/a><\/p>\n",
            "date_published": "2024-08-20T14:57:48+03:00",
            "date_modified": "2024-08-20T15:24:25+03:00",
            "tags": [
                "macOS",
                "Wiggle",
                "Курсор"
            ],
            "_date_published_rfc2822": "Tue, 20 Aug 2024 14:57:48 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "4",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "3",
            "url": "https:\/\/alt.webman.agency\/all\/grub-btrfs-snimki-sistemy-snapshot-v-menyu-grub\/",
            "title": "Grub-btrfs: Снимки системы (snapshot) в меню GRUB",
            "content_html": "<p><h1>Настройка GRUB для восстановления из снимков BTRFS<\/h1><\/p>\n<p>При использовании файловой системы BTRFS с загрузчиком GRUB можно удобно управлять снимками системы через меню загрузки. Это позволяет быстро восстанавливать систему до предыдущего состояния. В этой статье рассмотрим установку и настройку <b>grub-btrfs<\/b> для отображения снимков в GRUB.<\/p>\n<p><h2>Установка grub-btrfs<\/h2><\/p>\n<p>Установите пакет в зависимости от используемого пакетного менеджера:<\/p>\n<p><h3>Через apt (Debian\/Ubuntu)<\/h3><\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">sudo apt update<\/code><\/pre><\/pre>\n<pre><pre class=\"e2-text-code\"><code class=\"\">sudo apt install grub-btrfs<\/code><\/pre><\/pre>\n<p><h3>Через epm (ALT Linux)<\/h3><\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">su -<\/code><\/pre><\/pre>\n<pre><pre class=\"e2-text-code\"><code class=\"\">epm -i grub-btrfs<\/code><\/pre><\/pre>\n<p>После установки обновите конфигурацию GRUB:<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">sudo update-grub<\/code><\/pre><\/pre>\n<p><h2>Настройка автоматического обновления меню GRUB<\/h2><\/p>\n<p>Для динамического отображения новых снимков в меню GRUB активируйте встроенный демон <b>grub-btrfsd<\/b>:<\/p>\n<ol>\n    <li><strong>Отредактируйте конфигурацию сервиса:<\/strong>\n        <pre><pre class=\"e2-text-code\"><code class=\"\">sudo systemctl edit --full grub-btrfsd<\/code><\/pre><\/pre>\n    <\/li>\n    <li><strong>Измените строку запуска демона:<\/strong>\n        <p>Замените:<\/p>\n        <pre><pre class=\"e2-text-code\"><code class=\"\">ExecStart=\/usr\/bin\/grub-btrfsd --syslog \/.snapshots<\/code><\/pre><\/pre>\n        <p>на:<\/p>\n        <pre><pre class=\"e2-text-code\"><code class=\"\">ExecStart=\/usr\/bin\/grub-btrfsd --syslog --timeshift-auto<\/code><\/pre><\/pre>\n    <\/li>\n    <li><strong>Сохраните изменения и активируйте сервис:<\/strong>\n        <pre><pre class=\"e2-text-code\"><code class=\"\">sudo systemctl enable --now grub-btrfsd<\/code><\/pre><\/pre>\n    <\/li>\n<\/ol>\n<p>После настройки сервис будет автоматически обновлять меню GRUB при создании или удалении снимков. В меню загрузки появится пункт <strong>ALT snapshots<\/strong> (или <strong>Sisyphus snapshots<\/strong> для ALT Regular GNOME).<\/p>\n<p><h2>Как это работает<\/h2><\/p>\n<p>Утилита <b>grub-btrfs<\/b> сканирует корневой раздел BTRFS и добавляет доступные снимки в меню GRUB. При активации демона <b>grub-btrfsd<\/b> изменения в снимках (создание\/удаление) моментально отражаются в загрузочном меню. Это обеспечивает удобный способ отката системы к рабочему состоянию.<\/p>\n<p><h2>Примечания<\/h2><\/p>\n<ul>\n    <li>Убедитесь, что снимки создаются в каталоге <pre class=\"e2-text-code\"><code class=\"\">\/.snapshots<\/code><\/pre> (или измените путь в настройках сервиса).<\/li>\n    <li>Для работы демона требуется включить поддержку systemd-юнитов.<\/li>\n<\/ul>\n<p><h2>Заключение<\/h2><\/p>\n<p>Настройка <b>grub-btrfs<\/b> позволяет быстро восстанавливать систему через меню GRUB, используя снимки BTRFS. После установки и активации автоматического обновления вы получите актуальный список снимков при каждой загрузке.<\/p>\n",
            "date_published": "2024-08-20T14:50:13+03:00",
            "date_modified": "2025-07-24T09:54:15+03:00",
            "tags": [
                "btrfs",
                "Grub"
            ],
            "_date_published_rfc2822": "Tue, 20 Aug 2024 14:50:13 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "3",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "2",
            "url": "https:\/\/alt.webman.agency\/all\/ustanovka-grub-na-alt-linux-s-ispolzovaniem-uefi-i-btrfs\/",
            "title": "Установка GRUB на Alt Linux с использованием UEFI и BTRFS",
            "content_html": "<p>В этой статье описывается процесс установки загрузчика GRUB на систему Alt Linux с использованием UEFI и файловой системы BTRFS.<\/p>\n<p><h2>Шаги установки<\/h2><\/p>\n<ol>\n        <li>Получите доступ к суперпользователю:<\/li>\n        <pre><pre class=\"e2-text-code\"><code class=\"\">su -<\/code><\/pre><\/pre>\n        \n        <li>Проверьте доступные диски и разделы:<\/li>\n        <pre><pre class=\"e2-text-code\"><code class=\"\">fdisk -l<\/code><\/pre><\/pre>\n        <p>Выберите нужные разделы. У меня они выглядят так:<\/p>\n        <ul>\n            <li><pre class=\"e2-text-code\"><code class=\"\">\/dev\/nvme0n1  \/\/ Диск<\/code><\/pre><\/li>\n            <li><pre class=\"e2-text-code\"><code class=\"\">\/dev\/nvme0n1p1 \/\/ Раздел с EFI<\/code><\/pre><\/li>\n            <li><pre class=\"e2-text-code\"><code class=\"\">\/dev\/nvme0n1p3 \/\/ Раздел с Linux System<\/code><\/pre><\/li>\n        <\/ul>\n\n        <li>Смонтируйте необходимые разделы:<\/li>\n        <pre><pre class=\"e2-text-code\"><code class=\"\">cd \/\nmkdir mnt\nmount -o subvol=@ \/dev\/nvme0n1p3 mnt\nmount --bind \/dev \/mnt\/dev\nmount --bind \/dev\/pts \/mnt\/dev\/pts\nmount --bind \/sys \/mnt\/sys\nmount --bind \/proc \/mnt\/proc\nmount --bind \/run \/mnt\/run\nmount \/dev\/nvme0n1p1 mnt\/boot\/efi<\/code><\/pre><\/pre>\n\n        <li>Перейдите в среду chroot:<\/li>\n        <pre><pre class=\"e2-text-code\"><code class=\"\">sudo chroot mnt<\/code><\/pre><\/pre>\n\n        <li>Сгенерируйте конфигурацию GRUB:<\/li>\n        <pre><pre class=\"e2-text-code\"><code class=\"\">grub-mkconfig -o \/boot\/grub\/grub.cfg<\/code><\/pre><\/pre>\n\n        <li>Установите и проверьте GRUB:<\/li>\n        <pre><pre class=\"e2-text-code\"><code class=\"\">grub-install --removable \/dev\/nvme0n1<\/code><\/pre><\/pre>\n        <pre><pre class=\"e2-text-code\"><code class=\"\">grub-install --recheck \/dev\/nvme0n1<\/code><\/pre><\/pre>\n\n        <li>Обновите конфигурацию GRUB:<\/li>\n        <pre><pre class=\"e2-text-code\"><code class=\"\">update-grub<\/code><\/pre><\/pre>\n\n        <li>Выйдите из chroot и размонтируйте разделы:<\/li>\n        <pre><pre class=\"e2-text-code\"><code class=\"\">exit<\/code><\/pre><\/pre>\n        <pre><pre class=\"e2-text-code\"><code class=\"\">sudo umount -R \/mnt<\/code><\/pre><\/pre>\n    <\/ol>\n<p><h2>Альтернативный вариант установки GRUB (вместо шага — Установите и проверьте GRUB) <\/h2><\/p>\n<p>Вы также можете попробовать следующую команду:<\/p>\n<pre><pre class=\"e2-text-code\"><code class=\"\">grub-install --target=x86_64-efi --efi-directory=\/boot\/efi --boot-directory=\/boot --recheck --debug<\/code><\/pre><\/pre>\n<p>Источник — <a href=\"https:\/\/logan.tw\/posts\/2015\/05\/17\/grub-install-and-btrfs-root-file-system\/\">https:\/\/logan.tw\/posts\/2015\/05\/17\/grub-install-and-btrfs-root-file-system\/<\/a><\/p>\n",
            "date_published": "2024-08-20T14:34:05+03:00",
            "date_modified": "2024-08-20T15:35:31+03:00",
            "tags": [
                "btrfs",
                "EFI",
                "Grub",
                "UEFI"
            ],
            "_date_published_rfc2822": "Tue, 20 Aug 2024 14:34:05 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "2",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "1",
            "url": "https:\/\/alt.webman.agency\/all\/minidlna-2\/",
            "title": "MiniDLNA — Alt Linux",
            "content_html": "<p>Устанавливаем приложение<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo apt-get install minidlna<\/code><\/pre><p>Создаем директорию в которой будет доступ у системного пользователя _minidlna. Важно учесть тот факт что доступ у _minidlna должен быть к каждой папке от корня до конечной. Поэтому чтобы не ломать права создал отдельную папку.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo mkdir \/home\/DNLA<\/code><\/pre><p>А чтобы было удобно в нее заходить, создаем символическую ссылку из пользовательской папки видео. $USER — нужно заменить на имя своей учетной записи.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo ln -s \/home\/DNLA &#039;\/home\/$USER\/Видео\/DLNA&#039;<\/code><\/pre><p>Для новой папки сделал себя владельцем и установил права на чтение для остальных пользователей (_minidlna). $USER — нужно заменить на имя своей учетной записи.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo chown -R $USER:$USER \/home\/DNLA\nsudo chmod -R 755 \/home\/DNLA<\/code><\/pre><p>Теперь можно настроить конфигурационный файл.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo nano \/etc\/minidlna.conf<\/code><\/pre><p>В него вносим следующие изменения.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">user=_minidlna\nmedia_dir=\/home\/DNLA\ndb_dir=\/var\/cache\/minidlna<\/code><\/pre><p>Перезапускаем демон, происходит сканирование и индексация файлов.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl daemon-reload<\/code><\/pre><p>Запускаем сервис minidlna.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl start minidlna.service<\/code><\/pre><p>Проверяем статус сервиса.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl status minidlna.service<\/code><\/pre><p>Активируем автоматический запуск при загрузке.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl enable minidlna.service<\/code><\/pre><p>После повторного изменения конфигурации перезапускаем сервис.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl restart minidlna.service<\/code><\/pre>",
            "date_published": "2024-04-02T16:52:18+03:00",
            "date_modified": "2024-08-20T15:28:05+03:00",
            "tags": [
                "DNLA",
                "minidlna"
            ],
            "_date_published_rfc2822": "Tue, 02 Apr 2024 16:52:18 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "1",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 4134,
    "_e2_ua_string": "Aegea 11.3 (v4134)"
}