{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Копытов Иван",
    "_rss_description": "Блог ленивого сисадмина",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/kini24.ru\/",
    "feed_url": "https:\/\/kini24.ru\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "Копытов Иван",
            "url": "https:\/\/kini24.ru\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "277",
            "url": "https:\/\/kini24.ru\/all\/zamena-bolshih-vlozheniy-v-email-na-ssylku\/",
            "title": "Замена больших вложений в email на ссылку",
            "content_html": "<p>Устанавливаем MIMEDefang:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">apt update\napt install mimedefang -y<\/code><\/pre><p>Правим файл<i> \/etc\/default\/mimedefang<\/i>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"ini\">SOCKET=\/var\/spool\/postfix\/mimedefang\/mimedefang.sock\nMD_ALLOW_GROUP_ACCESS=yes<\/code><\/pre><p>Добавляем пользователя <i>postfix<\/i> в группу <i>defang<\/i>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">usermod -aG defang postfix<\/code><\/pre><p>Так как postfix работает в chroot-окружении, создаем папку для сокета mimedefang:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">mkdir \/var\/spool\/postfix\/mimedefang<\/code><\/pre><p>Правим<i> \/etc\/postfix\/main.cf<\/i>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"ini\">milter_default_action = accept\nmilter_protocol = 6\nsmtpd_milters = unix:mimedefang\/mimedefang.sock\nnon_smtpd_milters = unix:mimedefang\/mimedefang.sock<\/code><\/pre><p>Теперь нужно добавить следующее в конец функции <i>filter<\/i> в файле<i> \/etc\/mail\/mimedefang-filter<\/i>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"perl\"># Если файл больше указанного размера, он удаляется из письма,\n    # его копия остается на диске, а вместо него предоставляется ссылка, по которой его можно скачать.\n\n    # Максимальный размер вложения (например, 10MB)\n    my $MAX_ATTACHMENT_SIZE = 10 * 1024 * 1024;\n    # Директория для сохранения вложений\n    my $ATTACHMENTS_DIR = &quot;\/var\/mail\/attachments&quot;;\n    # URL, по которому будут доступны вложения\n    my $ATTACHMENTS_URL = &quot;https:\/\/mail.kini24.ru\/attachments&quot;;\n\n    # Создаем директорию, если её нет\n    mkdir $ATTACHMENTS_DIR unless -d $ATTACHMENTS_DIR;\n\n    $size = (stat($entity-&gt;bodyhandle-&gt;path))[7];\n    if ($size &gt; $MAX_ATTACHMENT_SIZE) {\n        md_graphdefang_log(&quot;The attached file $fname is too big, replaced with a link&quot;);\n        return action_replace_with_url($entity,\n            &quot;$ATTACHMENTS_DIR&quot;,\n            &quot;$ATTACHMENTS_URL&quot;,\n            &quot;Размер вложения превысил ограничения сервера, поэтому оно было удалено.\\n&quot; .\n            &quot;Вы можете скачать его по следующей ссылке:\\n\\n&quot; .\n            &quot;_URL_&quot;);\n    }<\/code><\/pre><p>В результате аыполнения функции <i>action_replace_with_url<\/i> в конец письма будет вставлен текст и ссылка для скачивания вложения, а сам файл бует сохранен в папку<i> \/var\/mail\/attachments<\/i>. Надо, кстати, покопаться и найти как вставлять ссылку в текст самого письма. Но пока что оставим как есть.<\/p>\n<p>У меня почтовый и веб-сервер находятся на разных виртуальных машинах, поэтому папку<i> \/var\/mail\/attachments<\/i> надо сделать общей. На почтовом сервере устанавливаем пакет сервера NFS:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">apt install nfs-kernel-server -y<\/code><\/pre><p>Открываем файл<i> \/etc\/exports<\/i> и вписываем в конец файла что-то вроде такого:<\/p>\n<pre class=\"e2-text-code\"><code class=\"plaintext\">\/var\/mail\/attachments 192.168.1.0\/24(rw,sync,no_subtree_check)<\/code><\/pre><p>И выполняем в консоли команду:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">exportfs -a<\/code><\/pre><p>Теперь переходим на веб-сервер и выполняем следующие команды:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">apt update\napt install nfs-common -y<\/code><\/pre><p>Открываем файл<i> \/etc\/fstab<\/i> и дописываем в конец:<\/p>\n<pre class=\"e2-text-code\"><code class=\"plaintext\">192.168.1.12:\/var\/mail\/attachments \/var\/www\/mail\/attachments nfs4 defaults 0 0<\/code><\/pre><p>где 192.168.1.12 — IP-адрес почтового сервера.<br \/>\nДальше выполняем команды:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">mkdir -p \/var\/www\/mail\/attachments\nchown -R www-data:www-data \/var\/www\/mail\/attachments\nmount -a<\/code><\/pre><p>И проверяем что папка смонтировалась:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">ls -l \/var\/www\/mail\/attachments<\/code><\/pre><p>После этого все вложения, которые были удалены из писем, должны стать доступны для скачивания.<\/p>\n",
            "date_published": "2025-03-31T13:45:17+07:00",
            "date_modified": "2025-03-31T13:45:06+07:00",
            "tags": [
                "debian",
                "linux",
                "mimedefang",
                "postfix",
                "вложение",
                "замена",
                "почта",
                "сервер",
                "ссылка"
            ],
            "_date_published_rfc2822": "Mon, 31 Mar 2025 13:45:17 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "277",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "276",
            "url": "https:\/\/kini24.ru\/all\/poluchaem-dannye-s-sayta-sgk-dlya-home-assistant\/",
            "title": "Получаем данные с сайта СГК для Home Assistant",
            "content_html": "<p>В Home Assistant у меня было отслеживание почти всех счетов по квартире: электроэнергия, коммунальные платежи, ТКО, капитальный ремонт и т. д. Проблема была только с сайтом компании СГК, которая занимается предоставлением горячей и холодной воды, отоплением и водоотведением. При помощи таких интеграций, как scrape и multiscrape загрузить данные с их сайта не получалось, поэтому пришлось пойти более сложным путем и написать свой скрипт. На деле он оказался совсем простым, требует доработки в плане проверок ответов сервера, но даже в таком виде он вполне работоспособен. Чтобы не перечислять все данные, возьму только отопление.<\/p>\n<code python>\nimport requests\nimport json\n\nlogin = data.get(\"username\", \"\")\npassword = data.get(\"password\", \"\")\nlogin_url = 'https:\/\/krk.sibgenco.services\/Account\/Auth'\ndata_url = 'https:\/\/krk.sibgenco.services\/fl\/accounts\/getAccounts'\n\nheaders = {\n    \"Content-Type\": \"application\/x-www-form-urlencoded; charset=UTF-8\",\n    \"User-Agent\": \"Mozilla\/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko\/20100101 Firefox\/115.0\",\n}\n\n# Создаем новую сессию\nsession = requests.Session()\n# Авторизуемся на сервере\nresult = session.post(login_url, data = 'login=' + login + '&password=' + password, headers = headers)\n# print(result.text)\n\n# Получаем данные в JSON формате\nresult = session.get(data_url, headers = headers).json()\nsession.close()\n\n# Перекодируем текст в читаемый\nresult = result.encode().decode('unicode-escape', 'ignore')\nresult = json.dumps(result)\nresult = json.loads(result)\n\n# Убираем лишние кавычки в разделе \"Cards\" (откуда взялись?)\nresult = result.replace('\"Cards\":\"', '\"Cards\":').replace('}]\"}', '}]}')\n# print(type(result))\n# print(result)\n\nif len(result) > 0:\n    logger.info(\"Данные от СКГ получены\")\nelse:\n    logger.warning(\"Ошибка получения данных от СГК\")\n# print(result.encode().decode('unicode-escape', 'ignore'))\n\n# Преобразуем строку данных в JSON объект\njson_data = json.loads(result)[\"Accounts\"][0][\"CalcData\"][\"Products\"]#[0][\"ToPay\"]\n\n# print(json_data, '\\n')\n# print(json.dumps(json_data), '\\n')\n\n# for product in json_data[\"Accounts\"][0][\"CalcData\"][\"Products\"]:\n#     print(product[\"ItemName\"] + \": \" + str(product[\"ToPay\"]) + \" руб.\")\n\nif json_data[0][\"ToPay\"] > 0:\n    hass.states.set('sensor.sgk_heating', json_data[0][\"ToPay\"] * -1)\nelse:\n    hass.states.set('sensor.sgk_heating', json_data[0][\"ToPay\"])\n<\/code>\n<p>В ходе работы скрипта получаем несколько секций для каждой из услуг, которые выглядят вот так:<\/p>\n<code json>\n  - IsFine: false\n    Item: 13\n    ContractId: 307015\n    ItemName: Отопление\n    SaldoBegin: 4228.65\n    Paid: 4228.65\n    SaldoEnd: 0\n    FineEndCheck: true\n    FineEnd: 0\n    AccrualsCheck: false\n    Accruals: 0\n    Recalculation: 0\n    ToPayCheck: true\n    ToPay: 0\n    ChargeDetails: \"\"\n    PayDetails: 08.02.2025 4228.65;\n    FinePayDetails: \"\"\n    WebPayDetails: 08.02.2025=5338.65=20250208171312-99240-6764617.585349\n<\/code>\n<p>Далее просто создаем автоматизацию в Home Assistant, которая будет запускать этот скрипт. Для надежности перед первым запуском создаем несколько новых сенсоров в примерно таком формате:<\/p>\n<code python>\n    # Задолженность за отопление, итого\n    heating_debt_summary:\n      unique_id: <тут ваш ID сенсора>\n      attribute_templates:\n        Пеня: \"{{ states('sensor.sgk_heating_penya') }} ₽\"\n      device_class: monetary\n      friendly_name: Задолженность за отопление\n      unit_of_measurement: \"RUB\"\n      # value_template: \"{{ states('sensor.sgk_heating') | float(0) + states('sensor.sgk_heating_penya') | float(0) }}\"\n      value_template: \"{{ states('sensor.sgk_heating') | float(0) }}\"\n<\/code>\n<p>Как видно, в сенсоре будет также атрибут «пеня». Можно вывести суммарную задолженность — долг+пеня, можно вывести только основную — на выбор.<br \/>\nИ вот после сайта СГК меня слегка «понесло» и сделал схожие скрипты для получения информации с сайтов ФНС, капремонта, энергосбыта и регистратора доменов. С ФНС было интересно — там сначала нужно пройти basic-авторизацию, получить токен безопасности, авторизоваться еще раз и слать его при каждом запросе данных. А дальше было уже намного легче — у ФНС существует API, которое они активно используют. Официальной документации по нему нет, но, покопавшись на сайте, можно легко получить все запросы. Для чего нужны эти данные? Например, чтобы отслеживать задолженность по налогам (в том числе и самозанятого), недвижимость и банковские счета. Сейчас такое время, что на тебя могут открыть какой-то счет в банке, сделать тебя «начальником» какой-то конторы, а ты даже будешь не в курсе. Но стоит отметить, что в налоговой отображаются только обычные, дебетовые счета, информации по кредитам там нет.<\/p>\n",
            "date_published": "2025-02-20T10:22:01+07:00",
            "date_modified": "2025-03-27T11:18:56+07:00",
            "tags": [
                "home assistant",
                "python",
                "вода",
                "данные",
                "налоговая",
                "отопление",
                "получение",
                "сайт",
                "сгк",
                "скрипт"
            ],
            "_date_published_rfc2822": "Thu, 20 Feb 2025 10:22:01 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "276",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "274",
            "url": "https:\/\/kini24.ru\/all\/svoy-server-otp\/",
            "title": "Свой сервер OTP",
            "content_html": "<p>Достаточно давно появилось желание завести свой сервер одноразовых паролей. Искал, не особо торопливо, как обычно. Отчасти потому, что еще немногие серверы поддерживали такой механизм аутентификации. Да и данных, которые нужно защищать было немного. Позже появились сервисы типа госуслуг, в почте стало храниться больше «чувствительных» данных, стало необходимо ограничить доступ к некоторым функциям своего сервера... В общем, причин накопилось достаточно. Про сервер OTP (One Time Password) стал вспоминать всё чаще и вот на днях мне попалась один простой, но в тоже время достаточно функциональный сервер <a href=\"https:\/\/github.com\/Bubka\/2FAuth\">2FAuth<\/a>.<br \/>\nКак пишет автор, он создал его потому, что:<\/p>\n<blockquote>\n<p><i>Я хотел, чтобы мои учетные записи 2FA хранились в отдельной базе данных и я мог легко создавать и восстанавливать ее резервные копии.<\/i><br \/>\n<i>Я ненавижу доставать свой смартфон, чтобы получить OTP, когда пользуюсь настольным компьютером.<\/i><br \/>\n<i>Я люблю программировать и люблю самостоятельные решения.<\/i><\/p>\n<\/blockquote>\n<p>Какие есть «плюсы» данного решения:<\/p>\n<ul>\n<li>возможность регистрации новых пользователей. Кто-то отнесет ее к «минусам», я не вижу ничего плохого. Можно отключить в настройках.<\/li>\n<li>Восстановление пароля от своей учетной записи, используемой для входа. Не проверял.<\/li>\n<li>Возможность импорта и экспорта данных.<\/li>\n<li>Возможность загрузки QR-кода из файла.<\/li>\n<li>Возможность ручного ввода данных (сервис, учетная запись, секретный шифр).<\/li>\n<li>Поддержка TOTP, HOTP, Steam, WebAuthn.<\/li>\n<li>Загрузка логотипов. Мелочь, а приятно.<\/li>\n<li>Поддержка SQLite, MariaDB, MySQL, PostgreSQL и SQL Server (внезапно).<\/li>\n<li>Присутствует REST API (снова сюрприз).<\/li>\n<li>Есть темная тема.<\/li>\n<\/ul>\n<p>Пройдемся по «минусам»:<\/p>\n<ul>\n<li>Отсутствует приложение для мобильных телефонов, только веб-страница.<\/li>\n<li>Нет поддержки кодов, генерируемых Яндексом. То есть у вас не получится запихать в сервис OTP от Яндекса. Ну тут «на любителя».<\/li>\n<li>На мой непрофессиональный взгляд слишком много файлов находится в папке.<\/li>\n<\/ul>\n<p>Теперь немного скриншотов:<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"933\" data-ratio=\"1.9276859504132\">\n<img src=\"https:\/\/kini24.ru\/pictures\/0001@2x.png\" width=\"933\" height=\"484\" alt=\"Вход в учетную запись\" \/>\n<img src=\"https:\/\/kini24.ru\/pictures\/0002@2x.png\" width=\"933\" height=\"484\" alt=\"Список паролей OTP (убрал данные из вредности)\" \/>\n<img src=\"https:\/\/kini24.ru\/pictures\/0003@2x.png\" width=\"933\" height=\"484\" alt=\"Создание новой записи в ручном режиме\" \/>\n<img src=\"https:\/\/kini24.ru\/pictures\/0004@2x.png\" width=\"933\" height=\"624\" alt=\"Редактирование записи\" \/>\n<img src=\"https:\/\/kini24.ru\/pictures\/0005@2x.png\" width=\"933\" height=\"484\" alt=\"Создание новой записи\" \/>\n<img src=\"https:\/\/kini24.ru\/pictures\/0006@2x.png.jpg\" width=\"1750\" height=\"2560\" alt=\"Настройки\" \/>\n<img src=\"https:\/\/kini24.ru\/pictures\/0007@2x.png\" width=\"933\" height=\"855\" alt=\"Настройки\" \/>\n<img src=\"https:\/\/kini24.ru\/pictures\/0008@2x.png\" width=\"933\" height=\"484\" alt=\"Настройки\" \/>\n<img src=\"https:\/\/kini24.ru\/pictures\/0009@2x.png\" width=\"933\" height=\"484\" alt=\"Настройки\" \/>\n<\/div>\n<\/div>\n",
            "date_published": "2024-02-11T00:58:59+07:00",
            "date_modified": "2024-02-11T01:01:39+07:00",
            "tags": [
                "2fauth",
                "github",
                "hotp",
                "otp",
                "php",
                "self-hosted",
                "steam",
                "totp",
                "двуфакторная авторизация",
                "свой",
                "сервер"
            ],
            "image": "https:\/\/kini24.ru\/pictures\/0001@2x.png",
            "_date_published_rfc2822": "Sun, 11 Feb 2024 00:58:59 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "274",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "jquery\/jquery.js",
                    "fotorama\/fotorama.css",
                    "fotorama\/fotorama.js"
                ],
                "og_images": [
                    "https:\/\/kini24.ru\/pictures\/0001@2x.png",
                    "https:\/\/kini24.ru\/pictures\/0002@2x.png",
                    "https:\/\/kini24.ru\/pictures\/0003@2x.png",
                    "https:\/\/kini24.ru\/pictures\/0004@2x.png",
                    "https:\/\/kini24.ru\/pictures\/0005@2x.png",
                    "https:\/\/kini24.ru\/pictures\/0006@2x.png.jpg",
                    "https:\/\/kini24.ru\/pictures\/0007@2x.png",
                    "https:\/\/kini24.ru\/pictures\/0008@2x.png",
                    "https:\/\/kini24.ru\/pictures\/0009@2x.png"
                ]
            }
        },
        {
            "id": "273",
            "url": "https:\/\/kini24.ru\/all\/dvizhenie-avtobusov-v-home-assistant\/",
            "title": "Движение автобусов в Home Assistant",
            "content_html": "<h3>Добавление движения общественного транспорта в Home Assistant<\/h3>\n<p>Наконец-то у меня получилось. Как обычно, делал всё сильно неспешно при наличии свободного времени и желания. «Воды» не будет, поэтому поехали.<br \/>\nСейчас не вспомню как, но как-то я вышел на адрес сайта, который отдает данные в формате JSON. Так как меня интересовал в первую очередь конкретный маршрут трамвая, то я получил вот такой вот адрес:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">https:\/\/mu-kgt.ru\/informing\/wap\/marsh\/?m=6%F2%F0&amp;action=getMarshData<\/code><\/pre><p>Что здесь интересного?<\/p>\n<ul>\n<li><i>m=6%F2%F0<\/i> — номер маршрута и обозначение типа транспорта. В данном случае часть «%F2%F0» — это всего лишь русские буквы «тр», то есть трамвай. Для троллейбуса это будет просто «т» или «%F2», для автобуса это либо «а», либо вообще без буквы — если честно, не пробовал, да и лень было.<\/li>\n<li><i>action=getMarshData<\/i> — вызывает одноименную функцию в скрипте.<br \/>\nПереходим в Home Assistant. Здесь я создал новый сенсор в configuration.yaml такого вида:<\/li>\n<\/ul>\n<pre class=\"e2-text-code\"><code class=\"\">sensor:\n  - platform: rest\n    resource: https:\/\/mu-kgt.ru\/informing\/wap\/marsh\/?m=6%F2%F0&amp;action=getMarshData\n    name: Трамвай 6 прибытие\n    unique_id: tram6_arrival\n    value_template: &quot;{{ value_json.ts_line.A[-1].st_arrive }}&quot;\n    scan_interval: 120<\/code><\/pre><p>Самое важное здесь — value_template, в котором содержится путь до нужной остановки, по которой получаем информацию о времени прибытия. Буквой «А» закодировано направление движения транспорта, которое вы видите в левой части экрана, а буквой «В» — в правой части экрана.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/Snimok-ekrana-ot-2024-01-17-23-04-37@2x.png\" width=\"656\" height=\"329\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Такие же буквы присутствуют на самом сайте и в приложении.<\/div>\n<\/div>\n<p>Я сделал два сенсора: прибытие и убытие, чтобы ориентироваться когда придет следующий трамвай на конечную остановку. Можно оформить и получше, но это — не главное.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/Snimok-ekrana-ot-2024-01-17-21-16-28@2x.png\" width=\"243\" height=\"85\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Вид сенсоров в Home Assistant<\/div>\n<\/div>\n<p>Ах да, чуть не забыл. Как посмотреть номер нужной остановки? Открываем страницу по <a href=\"https:\/\/mu-kgt.ru\/informing\/wap\/online\/\">ссылке<\/a>, выбираем тип транспорта, маршрут и направление движения. Затем щелкаем на нужной остановке, чтобы открыть прогноз движения транспорта. Среди прочей информации будет строка вида:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">Остановка: Детский кинотеатр «Мечта» (код 336)<\/code><\/pre><p>В скобках мы и увидим код остановки. В данных, которые нам отдает скрипт по запросу, это код содержится в поле <i>st_regnum<\/i>.<\/p>\n<p>И еще небольшое дополнение. Значения «0» и «-1», конечно, хороши для выбора конечных остановок при условии, что мы не знаем количество остановок на маршруте, который может измениться, например, из-за ремонта дороги или аварии. Следующий шаблон выбирает остановку с заданным кодом:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">value_template: &gt;-\n  {% set stops = value_json.ts_line.A %}\n  {% for stop in stops %}\n    {% if stop.st_regnum == 1989 %} {{ stop.st_arrive }} {% endif %}\n  {% endfor %}<\/code><\/pre><p>Обновлено. Автобусы маркируются без буквы в URL, только номер маршрута.<\/p>\n",
            "date_published": "2024-01-17T23:26:21+07:00",
            "date_modified": "2024-03-14T19:05:58+07:00",
            "tags": [
                "home assistant",
                "online",
                "автобус",
                "движение",
                "красноярск",
                "красноярскгортранс",
                "портал",
                "сайт",
                "трамвай",
                "транспорт",
                "троллейбус"
            ],
            "image": "https:\/\/kini24.ru\/pictures\/Snimok-ekrana-ot-2024-01-17-23-04-37@2x.png",
            "_date_published_rfc2822": "Wed, 17 Jan 2024 23:26:21 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "273",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/kini24.ru\/pictures\/Snimok-ekrana-ot-2024-01-17-23-04-37@2x.png",
                    "https:\/\/kini24.ru\/pictures\/Snimok-ekrana-ot-2024-01-17-21-16-28@2x.png"
                ]
            }
        },
        {
            "id": "272",
            "url": "https:\/\/kini24.ru\/all\/uhod-s-domoticz-na-home-assistant\/",
            "title": "Уход с Domoticz на Home Assistant",
            "content_html": "<p>Попробую сравнить эти две системы «умного дома».<br \/>\nНа Domoticz я «просидел» несколько лет. Эта система была хороша тем, что имела низкий порог вхождения, не требовала особых ресурсов и имела достаточно много возможностей. Что я понял спустя некоторое время:<\/p>\n<ol start=\"1\">\n<li>Интерфейс достаточно жестко закреплен. Вы не можете создавать свои вкладки (разделы), только заданные разработчиками.<\/li>\n<li>Нельзя сгруппировать датчики одного устройства в группу. Один датчик — одна карточка. Которые могут быть разнесены по разным разделам. Например, данные из домашней метеостанции будут присутствовать в трех разделах, между которыми нужно переключаться, чтобы получить всю информацию от нее.<\/li>\n<li>Есть темы оформления, но их мало и не все работают корректно. Некоторые предъявляют требования к именам устройств, чтобы была возможность объединить их в одну карточку.<\/li>\n<li>Чтобы получить данные с сайта, из операционной системы или что-то еще, выходящее за рамки протокола MQTT — придется использовать python или lua. Тут, кстати, небольшой «плюс» — скрипты хранятся в базе данных. После запуска Domoticz они выгружаются во внешние файлы. Зачем? Ладно, пусть.<\/li>\n<li>База данных имеет формат SQLite. Тут свои «плюсы» и «минусы».<\/li>\n<li>Группа Domoticz в Telegram, в которой я состоял, «топит» за использование «домика» в связке c Node-Red. Я не любитель установки множества программ на сервер, поэтому от последнего отказался. Что, с одной стороны, сильно меня ограничило в изменении интерфейса системы, с другой... Да ну его нафиг! Там свои ограничения.<\/li>\n<li>Несмотря за заявленную несколько лет назад возможность синхронизации данных между несколькими серверами Domoticz, она так и не была реализована. Судя по некоторым данным, разработчики просто «забили» на неё.<\/li>\n<li>Мне так и не удалось подключить часть устройств, типа пылесоса Xiaomi, телевизора Samsung, чайника Redmond. И, уверен, в ближайшее время, этого не будет в «домике».<\/li>\n<li>Система может просто не запуститься после обновления ОС или если вы допустили ошибку с своем скрипте. Может не понравиться версия glibc, python или его библиотеки. Проверка целостности отсутствует напрочь.<\/li>\n<li>«Умные» колонки вы не подключите.<\/li>\n<\/ol>\n<p>Скорее всего, было что-то еще, что меня не устраивало в этой системе, но я перечислил основное. К тому же на меня порой «находит» и я начинаю экспериментировать. Поэтому качаем образ Home Assistant для KVM и начинаем пробовать что он может.<\/p>\n<ol start=\"1\">\n<li>У меня много «простых» устройств, работающих по протоколу MQTT. Их пришлось прописать ручками. Копипаста с небольшими правками сильно помогла. Это был начальный этап, я еще ничего не знал. НА может обнаруживать такие устройства сама.<\/li>\n<li>Пылесос, телевизор, чайник «влетели» как родные, после установки нужных дополнений.<\/li>\n<li>Базу данных в формате MySQL пришлось подключать ручками. Основной формат опять же был SQLite, но для большой истории показаний он не годится. Перенес данные из Domoticz в Home Assistant (есть скрипт в интернете).<\/li>\n<li>Сделал нужные мне разделы (вкладки) в интерфейсе, занес в них нужные устройства с нужными параметрами. Разница с Domoticz просто огромная.<\/li>\n<li>Оповещения в Jabber, Telegram, на почту подключаются достаточно просто.<\/li>\n<li>Нашел несколько групп в Telegram по этой системе. Общение между участниками идет постоянно, поэтому пришлось отключить уведомления.<\/li>\n<li>Парсинг данных с сайтов вообще порадовал — достаточно указать URL, с которого будешь забирать данные и тэг, который нужно искать. Ну и номер тэга иногда.<\/li>\n<li>Есть проверка ошибок конфигурации перед перезапуском. Если найдет — выдаст предупреждение. Это вообще кайф :-)<\/li>\n<li>По ресурсам, конечно, более требовательна, но оно того стоит.<\/li>\n<li>Хотите подключить колонку яндекса или марусю — не вопрос!<\/li>\n<\/ol>\n<p>Наверное, на этом закончу. Продолжу тему в другой заметке — там уже много чего описать.<\/p>\n",
            "date_published": "2024-01-13T16:36:35+07:00",
            "date_modified": "2024-01-13T16:37:23+07:00",
            "tags": [
                "domoticz",
                "home assistant",
                "переход",
                "сервер",
                "сравнение",
                "умный дом"
            ],
            "_date_published_rfc2822": "Sat, 13 Jan 2024 16:36:35 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "272",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "271",
            "url": "https:\/\/kini24.ru\/all\/obnovlenie-wildcard-sertifikatov-letsencrypt\/",
            "title": "Обновление wildcard-сертификатов Let’sEncrypt",
            "content_html": "<h3>Случай, когда ваш домен располагается на reg.ru<\/h3>\n<p>Можно, конечно, воспользоваться сторонними библиотеками, но я не любитель ставить что-то стороннее, если можно обойтись своими силами. Поэтому пришлось потратить время на написание и тестирование bash-скрипта с именем authenticator.sh:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">#!\/bin\/bash\n\n#Основные параметры\ndomain=&quot;kini24.ru&quot;\nusername=&quot;graywolf&quot;\npassword=&quot;********&quot;\n# Этот параметр менять не нужно\nsubdomain=&quot;&quot;\n\n# Корректно задаем судбдомен\n# Если обрабатывается основной домен, то субдомен будет _acme-challenge\n# Если обрабатывается субдомен, то строка будет вида _acme-challenge.subdomain\nif [[ $CERTBOT_DOMAIN = $domain ]]\nthen\n  subdomain=&quot;_acme-challenge&quot;\nelse\n  subdomain=&quot;_acme-challenge.${CERTBOT_DOMAIN%.$domain}&quot;\nfi\n\n# Чисто для информации\n\/usr\/bin\/echo &quot;Requesting $CERTBOT_DOMAIN&quot;\n\n# Запрос на удаления текущих записей\ntxt_delete=&quot;input_format=json&amp;input_data={\\&quot;username\\&quot;:\\&quot;$username\\&quot;,\\&quot;password\\&quot;:\\&quot;$password\\&quot;,\\&quot;domains\\&quot;:[{\\&quot;dname\\&quot;:\\&quot;$domain\\&quot;}],\\&quot;subdomain\\&quot;:\\&quot;$subdomain\\&quot;,\\&quot;record_type\\&quot;:\\&quot;TXT\\&quot;,\\&quot;output_content_type\\&quot;:\\&quot;plain\\&quot;}&quot;\n\n# Запрос на добавления записи\ntxt_add=&quot;input_format=json&amp;input_data={\\&quot;username\\&quot;:\\&quot;$username\\&quot;,\\&quot;password\\&quot;:\\&quot;$password\\&quot;,\\&quot;domains\\&quot;:[{\\&quot;dname\\&quot;:\\&quot;$domain\\&quot;}],\\&quot;subdomain\\&quot;:\\&quot;$subdomain\\&quot;,\\&quot;text\\&quot;:\\&quot;$CERTBOT_VALIDATION\\&quot;,\\&quot;output_content_type\\&quot;:\\&quot;plain\\&quot;}&quot;\n\n#Можно проверить при желении\n#\/usr\/bin\/echo &quot;Certbot parameters:&quot;\n#\/usr\/bin\/echo &quot;Current domain: $CERTBOT_DOMAIN&quot;\n\/usr\/bin\/echo &quot;Validation string: $CERTBOT_VALIDATION&quot;\n#\/usr\/bin\/echo &quot;Delete request: $txt_delete&quot;\n#\/usr\/bin\/echo &quot;Add request: $txt_add&quot;\n\n# Запрос на удаление ВСЕХ TXT записей\nif [[ $CERTBOT_DOMAIN != $domain ]]\nthen\n #\/usr\/bin\/echo &quot;Remove all TXT records&quot;\n  \/usr\/bin\/curl --silent --data &quot;$txt_delete&quot; &quot;https:\/\/api.reg.ru\/api\/regru2\/zone\/remove_record&quot;\nfi\n\n# Запрос на создание TXT записи\n#\/usr\/bin\/echo &quot;Add new TXT record&quot;\n\/usr\/bin\/curl --silent --data &quot;$txt_add&quot; &quot;https:\/\/api.reg.ru\/api\/regru2\/zone\/add_txt&quot;\n\n# Проверяем что нужная TXT запись появилась. Иначе ждем пока данные обновятся\n#answer=&quot;&quot;\n#while [[ $answer != $CERTBOT_VALIDATION ]]\n#do\n#  \/usr\/bin\/echo &quot;Requesting DNS record&quot;\n#  answer=$(\/usr\/bin\/dig @77.88.8.8 $CERTBOT_DOMAIN txt +short | \/usr\/bin\/tr -d \\&quot; | \/usr\/bin\/egrep $CERTBOT_VALIDATION)\n#  \/usr\/bin\/sleep 60\n#done\n\nif [[ $CERTBOT_REMAINING_CHALLENGES -eq 0 ]]\nthen\n  sleep 15m\nfi\n\n# Выводим количество доменов, которые осталось обработать\n\/usr\/bin\/echo &quot;Remaining challenges: $CERTBOT_REMAINING_CHALLENGES&quot;<\/code><\/pre><p>Логика скрипта следующая. В начале задаются основной домен, имя пользователя и пароль от личного кабинета reg.ru. Параметр <i>subdomain<\/i> менять не нужно, он «вычисляется» по ходу выполнения скрипта. Далее если обрабатывается основной домен, то поддомен становится равным <i>_acme-challenge<\/i>, иначе в конец еще добавляется поддомен. Формируется строка для удаления всех (!) текущих записей типа TXT, если обрабатыается поддомен. Записи для основного домена просто добавляются (тут да, небольшой косяк, нужно немного дописать скрипт).<br \/>\nЗатем, после добавления DNS-записи скрипт должен был запрашивать все записи TXT и, после появлении нужной, продолжать выполнение, но тут скрипт уходил в бесконечный цикл, поэтому я его закомментировал полностью. Сможете исправить — буду благодарен.<br \/>\nНа последнем шаге скрипт, если доменов для регистрации не осталось, ждет 15 минут (время обновления записей у reg.ru от 15 минут до 1 часа) и возвращает управление команде certbot.<\/p>\n<p>Вызывается скрипт примерной такой командой:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">certbot certonly --manual --agree-tos --manual-public-ip-logging-ok --email admin@kini24.ru --preferred-challenges dns --server https:\/\/acme-v02.api.letsencrypt.org\/directory --domain *.jabber.kini24.ru --domain *.meet.kini24.ru --domain *.kini24.ru --domain kini24.ru --rsa-key-size 2048 --key-type ecdsa --elliptic-curve secp256r1 --redirect --uir --staple-ocsp --must-staple --hsts --manual-auth-hook \/root\/authenticator.sh<\/code><\/pre><p>В этой команде следующие параметры:<br \/>\n<i>certonly<\/i> — только получение сертификата;<br \/>\n<i>agree-tos<\/i> — принимаем пользовательское соглашение;<br \/>\n<i>manual-public-ip-logging-ok<\/i> — соглашаемся на публикацию нашего IP-адреса;<br \/>\n<i>email<\/i> — указываем свою электронную почту для уведомлений;<br \/>\n<i>preferred-challenges<\/i> — выбираем тип проверки. Для wildcard-сертификатов это только DNS;<br \/>\n<i>server<\/i> — указываем сервер сертификации;<br \/>\n<i>domain<\/i> — перечисляем свои (суб-)домены;<br \/>\n<i>rsa-key-size<\/i> — указываем «размер» ключа. Значение 2048 по умолчанию, оставил на всякий случай;<br \/>\n<i>key-type<\/i> — тип ключа. Снова указано значение по умолчанию;<br \/>\n<i>elliptic-curve<\/i> — «кривые». Тут тоже значение по умолчанию;<br \/>\n<i>redirect<\/i> — перенаправлять с http на https$<br \/>\n<i>uir<\/i> — добавляет в ответ заголовок <i>Content-Security-Policy<\/i> со значением <i>upgrade-insecure-requests<\/i>;<br \/>\n<i>staple-ocsp<\/i> — «сшивание» сертификатов;<br \/>\n<i>must-staple<\/i> — обязательное «сшивание»;<br \/>\n<i>hsts<\/i> — принудительная активация защищенного режима, т. е. https;<br \/>\n<i>manual-auth-hook<\/i> — запуск своего скрипта.<\/p>\n",
            "date_published": "2023-12-16T16:16:55+07:00",
            "date_modified": "2023-12-16T16:16:15+07:00",
            "tags": [
                "reg.ru",
                "wildcard",
                "автоматическое",
                "обновление",
                "рег.ру",
                "сертификат",
                "скрипт"
            ],
            "_date_published_rfc2822": "Sat, 16 Dec 2023 16:16:55 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "271",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "270",
            "url": "https:\/\/kini24.ru\/all\/sravnenie-chaynikov-redmond-rk-g211s-i-fiesta-dk-1g\/",
            "title": "Сравнение чайников Redmond RK-G211S и Fiesta DK-1G",
            "content_html": "<p>Побывало у меня 2 «умных» чайника: Redmond RK-G211S и Fiesta DK-1G. Первый отработал около 3 лет, вторым пользуюсь и сейчас. И, внезапно, захотелось их сравнить, выделить «плюсы» и «минусы». Поехали.<\/p>\n<p><b>Redmond RK-G211S<\/b><br \/>\nВот наш первый герой (здесь и далее фото взяты из интернета):<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/rk211s@2x.jpeg\" width=\"265\" height=\"384\" alt=\"\" \/>\n<\/div>\n<p>Начну с «плюсов».<\/p>\n<ol start=\"1\">\n<li>Мощный. Быстро кипятит воду.<\/li>\n<li>Тихий. У меня маленький ребенок,поэтому любой шум будет излишним.<\/li>\n<li>Удобное управление кнопками на ручке чайника и через приложение.<\/li>\n<li>Поддержание заданной температуры.<\/li>\n<li>Возможность задать время суток, когда чайник должен подогреть или вскипятить воду.<\/li>\n<li>Можно использовать в качестве ночника в темное время суток.<\/li>\n<li>Градуировка нанесена на внешнюю часть и хорошо видна.<\/li>\n<li>Можно посмотреть общее потребление электроэнергии чайником.<\/li>\n<li>Температура воды подсвечивается соответствующим цветом: красный, желтый, зеленый, синий.<\/li>\n<\/ol>\n<p>К сожалению, «минусы» тоже присутствуют и для меня они оказались существенными.<\/p>\n<ol start=\"1\">\n<li>Форма носика. За всё время использования я так и не привык тонкой струйкой наливать воды из него. Ну действительно, дизайнеры, поменяйте форму на более привычную. И данная просьба относится не только к этой модели. Очень раздражал этот момент.<\/li>\n<li>Удаленное управление через bluetooth. Через две стены смартфон до чайника не «достает». Если хотите нормально управлять чайником — купите специальный шлюз по такой же цене (или уже дороже?), либо используйте смартфон (планшет) с установленным приложением-шлюзом. Сама компания-производитель говорит, что выбор в пользу bluetooth сделан для увеличения безопасности пользователя. В связи с нежеланием покупать что-то еще для управления чайником не получилось ввести его в систему «умного» дома.<\/li>\n<li>Датчик температуры воды. Видели торчащую «пипку» из дна чайника? Это датчик температуры. Опять же, какой разум сделал его стеклянным и придумал так его расположить. К чему это ведет? Иногда нужно два-три раза подряд вскипятить воду. Иными словами, вскипятил один раз, слил воду, налил новую и еще раз включил чайник. Если вы нальете холодную воду сразу после кипячения, то велика вероятность того, что стеклянная крышка, закрывающая датчик, просто лопнет от перепада температур. Слышали когда-нибудь как трескается стекло при перепаде? Я слышал. Хорошо, что на работе это не сказалось. По крайней мере, я не заметил.<\/li>\n<li>«Забывчивость». Как только вы снимете чайник с подставки он сразу забудет всё, чему вы его «учили». Придется выставлять все параметры заново. Для этого нужно, как минимум, чтобы смартфон с управляющим приложением были в зоне досягаемости чайника.<br \/>\nВ интернете можно найти способ добавления аккумулятора в чайник для предотвращения таких ситуаций, но... Мой опыт показал несостоятельность такого метода. Аккумулятора хватило примерно на полгода, после чего он просто вышел из строя.<\/li>\n<li>Кнопки на ручке закрыты тонкой пленкой, которая быстро достаточно быстро стирается до дыр. Без комментариев.<\/li>\n<li>Пластиковый корпус, можно обжечь руки.<\/li>\n<\/ol>\n<p>Через 3 года использования чайник сломался — сгорел ТЭН. На замену ему пришел новый.<\/p>\n<p><b>Fiesta DK-1G<\/b><br \/>\nВторой наш герой обзора:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/fiesta_dg1g@2x.jpeg\" width=\"384\" height=\"384\" alt=\"\" \/>\n<\/div>\n<p>«Плюсы»:<\/p>\n<ol start=\"1\">\n<li>Удаленное управление через WiFi. Более удобно, быстро и, как мне кажется, надежно. В пределах дома нет ограничений на расстояние между смартфоном и чайником. Да и вообще нет ограничений, можно управлять из любой точки мира, где есть интернет.<\/li>\n<li>В отличие от своего «соперника» этот чайник ничего не «забывает» после снятия с подставки. Или сразу подгружает данные из интернета — пока не уверен. В любом случае занимает это пару-тройку секунд, не больше — ровно столько длится подключение к домашней сети WiFi.<\/li>\n<li>Корпус с двойными стенками. Сразу после кипячения корпус снаружи едва теплый.<\/li>\n<li>Поддержание заданной температуры.<\/li>\n<li>Возможность задать время суток, когда чайник должен подогреть или вскипятить воду.<\/li>\n<li>Носик стандартной формы. Кружку можно налить за несколько секунд против примерно 30 секунд у Редмонда.<\/li>\n<\/ol>\n<p>«Минусы»:<\/p>\n<ol start=\"1\">\n<li>Градуировка нанесена на внутреннюю часть да еще и со стороны ручки. Наливать воду и одновременно контролировать ее уровень у вас не получится. Почти. Нижнее отверстие в корпусе перед носиком почти соответствует максимальному уровню воды, так что можно ориентироваться на него.<\/li>\n<li>Более шумный, чем Редмонд. Хотя, казалось бы, должно быть наоборот.<\/li>\n<li>Через некоторое время (не засекал, но навскидку примерно через час-полтора) гаснет экран, отображающий состояние чайника и температуру воды. Приходится снимать с подставки и возвращать его обратно.<\/li>\n<li>При установке на подставку издает короткий писк. Зачем? Также при включении кипячения пищит два раза: первый — включение, второй раз — начало кипячения. Тоже не понимаю этот момент, ну да ладно.<\/li>\n<li>Чтобы ввести его в систему «умного» дома пришлось проделать множество нестандартных действий. И речь сейчас не об Алисе от яндекса, а о таких системах как Home Assistant или Domoticz. С Алисой проблем вообще не возникло, подключил за пару минут.<\/li>\n<\/ol>\n<p>И пара «спорных» для меня моментов.<\/p>\n<ol start=\"1\">\n<li>Датчик температуры я визуально не нашел. Сдается мне, что расположен он под внутренним дном, что, как более логично.<\/li>\n<li>Сенсорные кнопки управления. Расположены не на верху ручки, как обычно, а на нижней части корпуса. И видно их только после установки чайника на подставку.<\/li>\n<\/ol>\n<p>В общем и целом, Fiesta DK-1G мне пока нравится больше, чем изделие от Редмонда. Я, наверное, даже рад, что моим первым опытом с такой техникой стал именно RK-G211S — он позволил мне точно определить чего я жду от «умного» чайника и с чем я точно не хочу сталкиваться каждый день.<\/p>\n",
            "date_published": "2023-11-07T17:07:55+07:00",
            "date_modified": "2023-11-07T17:07:09+07:00",
            "tags": [
                "dk-1g",
                "fiesta",
                "redmond",
                "rk-g211s",
                "опыт использоавния",
                "сравнение",
                "чайник"
            ],
            "image": "https:\/\/kini24.ru\/pictures\/rk211s@2x.jpeg",
            "_date_published_rfc2822": "Tue, 07 Nov 2023 17:07:55 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "270",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/kini24.ru\/pictures\/rk211s@2x.jpeg",
                    "https:\/\/kini24.ru\/pictures\/fiesta_dg1g@2x.jpeg"
                ]
            }
        },
        {
            "id": "268",
            "url": "https:\/\/kini24.ru\/all\/zapusk-konsultant-pod-linux\/",
            "title": "Запуск Консультант+ под Linux",
            "content_html": "<p>Я несколько лет бился с запуском этой программы под разными версиями линукса: Alt Linux, Ubuntu, другие. И всё время натыкался на одну и ту же ошибку: «На найдена точка входа UserLogonExA в библиотеке ADVAPI32.DLL». Перепробовал множество способов, описанных в интернете. Ничего не помогало. Сравнительно недавно наткнулся на один, но из-за текущих дел опробовать не успел. А тут случилось неудачное обновление, база некорректно обновилась, пришлось откатываться и заодно решил попробовать — чем черт не шутит. Итак, алгоритм такой (предполагается, что wine уже установлен):<\/p>\n<ol start=\"1\">\n<li>Монтируем сетевую папку на свой компьютер. Например, в \/mnt\/cons.<\/li>\n<li>Запускаем winecfg, добавляем новый диск (пусть D:) и указываем смонтированную папку \/mnt\/cons.<\/li>\n<li>Из консоли запустить файл cons.exe с параметрами пока не получилось, поэтому запускаем winefile и уже из него cons.exe.<\/li>\n<li>При запуске соглашаемся с путями, которые нам предложила система (или изменяем на свои).<\/li>\n<li>На рабочем столе появляется ярлык на cons.exe, но запустить система его не дает — выдает ошибку «Разрешите запуск». Галочка «Запускать как программу» установлена, но этого мало. Идем дальше.<\/li>\n<li>Устанавливаем еще один пакет:<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"\">sudo apt install dbus-x11<\/code><\/pre><ol start=\"7\">\n<li>Запускаем:<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"\">dbus-launch gio set &#039;\/home\/kopytov\/Рабочий стол\/ConsultantPlus.desktop&#039; &quot;metadata::trusted&quot; true<\/code><\/pre><ol start=\"8\">\n<li>Обновляем рабочий стол и спокойно работаем с Консультантом.<\/li>\n<\/ol>\n<p>Если нужен запуск системы с ключами, то добавляем их в desktop-файл.<\/p>\n",
            "date_published": "2023-05-10T12:32:03+07:00",
            "date_modified": "2023-05-10T12:31:58+07:00",
            "tags": [
                "advapi32.dll",
                "ubuntu",
                "userlogonex",
                "wine",
                "диск",
                "запуск",
                "консультант",
                "линукс",
                "ошибка",
                "сеть"
            ],
            "_date_published_rfc2822": "Wed, 10 May 2023 12:32:03 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "268",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "263",
            "url": "https:\/\/kini24.ru\/all\/podklyuchenie-ustroystv-k-alise\/",
            "title": "Подключение устройств к Алисе",
            "content_html": "<p>«Генератор идей» в голове порой не дает нормально поспать. Вот зачем мне в голову уже за полночь пришла мысль попробовать подключить все устройства, которые есть в доме, к Алисе? Хорошо, что процесс не занял много времени и я успел более-менее нормально выспаться.<br \/>\nПервой «жертвой» стал телевизор Samsung. Первая попытка подключения была неуспешной — телевизор не был зарегистрирован в личном кабинете производителя. Пришлось установить программу SmartThings на телефон, войти в личный кабинет, добавить туда телевизор и уже после этого можно было добавить его в Алису. Немного побаловался голосовым управлением и пошел спать.<br \/>\nУтром сделал еще несколько попыток голосового управления и понял, что есть вещи, с которыми нужно будет разобраться:<\/p>\n<ol start=\"1\">\n<li>Нельзя включить ТВ через Алису. Скорее всего, и не получится. В принципе, пока не критично. Но мысли как это обойти уже есть.<\/li>\n<li>Нельзя переключать каналы, сказав, например: «Включи канал СТС на телевизоре». Но можно переключить канал, сказав его номер. Кто помнит какой телеканал под каким номером сохранен в вашем телевизоре? Вот и я не помню.<\/li>\n<li>Нельзя переключить источник сигнала с HDMI на антенну, сказав пресловутую фразу «Включи канал СТС на телевизоре».<\/li>\n<li>Запускать Алису на телефоне, чтобы управлять телевизором голосом — долго. Быстрее использовать кнопки в SmartThings или другом стороннем приложении.<\/li>\n<\/ol>\n<p>Вторым устройством стал чайник Redmond. Им более-менее удобно было управлять с телефона через фирменное приложение. Из «минусов», которые меня раздражали, основным неудобством было то, что чайник подключался через bluetooth. Попробовал было подключить его через донгл к домашнему серверу, но «что-то пошло не так» и я забил.<br \/>\nПодключить чайник пока что не получилось. Возможно, сказалось то, что он был вне зоны действия bluetooth моего телефона. Возможно, для полноценного управления чайником нужен шлюз. Пока что непонятно, поэтому... Будем устанавливать android в виртуальную машину и пытаться настраивать его в качестве этого самого шлюза. Это пока что в процессе.<br \/>\nСледующим шагом стало подключение робота-пылесоса Xiaomi. Схема была такой же, как и с предыдущими двумя устройствами: авторизуемся в личном кабинете производителя, проверяем, что устройство там есть, заходим в приложение «Умный дом» от Яндекса и добавляем в него пылесос. Тут возник нюанс: пылесосов у меня добавлено два — один в моем доме, второй — у мамы. И приложение, ничуть не сомневаясь в своей правоте, успешно добавило оба в мой дом. Пришлось создавать второй дом и переносить туда мамин пылесос, чтобы случайно не запустить его убираться.<\/p>\n",
            "date_published": "2023-02-06T13:58:31+07:00",
            "date_modified": "2023-02-06T13:58:22+07:00",
            "tags": [
                "алиса",
                "голосовое управление",
                "удаленное управление",
                "умный дом",
                "устройство",
                "яндекс"
            ],
            "_date_published_rfc2822": "Mon, 06 Feb 2023 13:58:31 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "263",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "262",
            "url": "https:\/\/kini24.ru\/all\/servisy-dlya-testirovaniya-veb-i-pochtovyh-serverov\/",
            "title": "Сервисы для тестирования веб, почты и других серверов (обновляемая запись)",
            "content_html": "<p>Соберу, пожалуй, в одном месте список серверов для тестирования различных сервисов. Одни сервисы уходят, другие приходят, поэтому постараюсь сделать этот список обновляемым. Да и просто порой открываешь для себя новые сервисы и хочется их сохранить для использования в дальнейшем.<\/p>\n<p><b>Почта<\/b><br \/>\n<a href=\"https:\/\/www.checktls.com\/TestReceiver?LEVEL=DETAIL\">CheckTLS<\/a>. Очень любопытный сервис проверки почты. Наблюдаем за прогрессом в реальном времени.<\/p>\n<p><a href=\"https:\/\/dkimcore.org\/tools\/\">DKIM Core Tools<\/a>. Генерация и проверка настроек DKIM.<\/p>\n<p><a href=\"https:\/\/dmarcian.com\/dmarc-inspector\/\">DMARC Inspector<\/a>. Проверка корректности записи DMARC.<\/p>\n<p><a href=\"https:\/\/esmtp.email\/tools\/mta-sts\/\">ESMTP email<\/a>. Проверка настройки MTA-STS. Это функция, призывающая удаленные серверы обмениваться почтовыми сообщениями, используя защищенное соединение.<\/p>\n<p><a href=\"https:\/\/www.mail-tester.com\">Mail tester<\/a>. Всё время «теряю» этот сервис. Отправляете письмо на указанный адрес и через некоторое время можете посмотреть отчет о прохождении письма.<\/p>\n<p><a href=\"https:\/\/mxtoolbox.com\">MX Toolbox<\/a>. Сервис проверки почтового сервера и, немножко, веб-сервера. Множество самых различных тестов. Имхо, один из самых лучших сервисов.<\/p>\n<p><a href=\"https:\/\/ssl-tools.net\">SSL Tools<\/a>. Старый и уже позабытый мной сервис проверки SSL почтового сервера. Также есть проверка web-сервера и некоторых уязвимостей.<\/p>\n<p><a href=\"https:\/\/uptimebot.ru\/online\/smtp-check\/\">UptimeBot<\/a>. Можно по быстрому посмотреть на каких портах поддерживается TLS\/STARTTLS. А также проверить DKIM, DMARC, SPF, Whois.<\/p>\n<p><b>Сканеры открытых портов<\/b><br \/>\n<a href=\"http:\/\/www.ipv6scanner.com\">Сканер IPv6<\/a>. Сканирует на выбор либо только указанный порт, либо все часто используемые. В первом случае можно указать использовать TCP или UDP протокол.<\/p>\n<p><b>Jabber<\/b><br \/>\n<a href=\"https:\/\/compliance.conversations.im\">Тест jabber-сервера<\/a>. Проверка jabber-сервера на наличие часто используемых функций.<\/p>\n<p><b>IPv6<\/b><br \/>\n<a href=\"http:\/\/test-ipv6.com\/\">Тест IPv6<\/a>. Тест доступности сервера по IPv6. Краткий, но доступный для понимания проблем отчет.<\/p>\n<p><a href=\"https:\/\/ipv6-test.com\/\">IPv6 тест<\/a>. Назвал так, потому что название схоже с предыдущим сервером, только поменяны местами два слова. Функционал такой же, как и у сервера выше. Также позволяет проверить скорость соединения, пропинговать сервер и показывает статистику распространения протокола по странам. Позабавило, что Россию исключили из списка, раньше она там точно была.<\/p>\n<p><a href=\"https:\/\/www.kame.net\">Черепашка<\/a>. Если вы видите танцующую черепашку, то доступ к страницам, работающим по IPv6, у вас есть.<\/p>\n<p><b>Скорость соединения<\/b><br \/>\n<a href=\"https:\/\/www.speedtest.net\/\">Speedtest<\/a>. Всем известный ресурс проверки скорости соединения. Настолько известный, что почти все провайдеры так или иначе мухлюют при обращении клиента к этому сайту, чтобы он показал скорость выше той, что есть на самом деле.<\/p>\n<p><a href=\"https:\/\/speed.cloudflare.com\/\">Тест от Cloudflare<\/a>. Не менее известный сервис проверки скорости соединения.<\/p>\n<p><b>Общее<\/b><br \/>\n<a href=\"https:\/\/dnschecker.org\">DNS Checker<\/a>. Несмотря на название, это комплекс утилит для проверки почты, домена и т. д. В чем-то схож с <a href=\"https:\/\/mxtoolbox.com\">MX Toolbox<\/a>.<\/p>\n<p><a href=\"https:\/\/hstspreload.org\/\">HSTS Preload<\/a>. Сервис проверки на включение вашего сервера в список HSTS Preload. Это список серверов, при обращении к которым будет сразу использоваться HTTPS-соединение, минуя HTTP. На мой взгляд, сейчас не сильно актуально, потому все поголовно переходят на HTTPS. Там же находятся рекомендации по настройке сервера для последующего включения его в список. Если проверка прошла успешно, фон страницы станет зеленым. Эта настройка отображается в отчете SSL Labs.<\/p>\n<p><a href=\"https:\/\/www.hardenize.com\">Hardenize<\/a>. Проверяет веб- и почтовый серверы. Выдает информацию по зоне, DNS-записям и настройкам. Среди проверяемых функций такие как: DNSSEC, CAA, MTA-STS, TLSRPT, SPF, DMARC, DANE, заголовки ответов и прочее. Выдает достаточно информативный отчет.<\/p>\n<p><a href=\"https:\/\/www.immuniweb.com\/\">Immuniweb<\/a>. Есть два неплохих теста: <a href=\"https:\/\/www.immuniweb.com\/ssl\/\">SSL<\/a> и <a href=\"https:\/\/www.immuniweb.com\/websec\/\">безопасности сайта<\/a>. В первом проверяет настройки сервера на соответствие стандартам PCI DSS, HIPAA and NIST и Industry Best Practices. Второй проверяет GDPR Compliance, PCI DSS и заголовки ответов (куда же без них?).<\/p>\n<p><a href=\"https:\/\/en.internet.nl\/\">internet.nl<\/a>. Позволяет проверить настройки веб- и почтового серверов. Тестирует DNSSEC, IPv6, DANE, заголовки ответов и RPKI. Для меня лично новинкой стала проверка файла security.txt.<\/p>\n<p><a href=\"https:\/\/tests.nettools.ru\/\">NetTools<\/a>. Сборник самых различных тестов: почта, веб-сервер, сканер открытых портов, скорости соединения, NTP-сервера, DNS, FTP..<\/p>\n<p><a href=\"https:\/\/securityheaders.com\/\">Security Headers<\/a>. Проверяет заголовки ответов веб-сервера. Пройдя по ссылкам, можно попасть на <a href=\"https:\/\/scotthelme.co.uk\">блог Scott Helme<\/a> и узнать как настроить тот или иной заголовок. Вообще в блоге много полезной информации. Единственный «минус» — всё на английском.<\/p>\n<p><a href=\"https:\/\/www.ssllabs.com\/ssltest\/\">SSL Labs<\/a>. Один из самых популярных сервисов тестирования веб-серверов. Проверяет сертификаты, используемые шифры, протоколы (HTTP, HTTP\/2), совместимость с популярными браузерами, наличие уязвимостей и некоторых настроек (HSTS, OCSP, HPKP и другие). К сожалению, почту проверять не умеет.<\/p>\n<p><a href=\"https:\/\/dnssec-analyzer.verisignlabs.com\/\">Verisign анализатор<\/a>. Быстрая проверка DNSSEC. Не могли что ли сделать шрифт покрупнее в отчете?<\/p>\n<p><a href=\"https:\/\/zonemaster.net\">ZoneMaster<\/a>. Проводит полную проверку вашего доменного имени.<\/p>\n<p><a href=\"https:\/\/webrtc.github.io\/samples\/src\/content\/peerconnection\/trickle-ice\/\">Проверка STUN и TURN<\/a>. Собственно весь функционал описан в названии. В случае корректной настройки STUN должен вернуть «srflx» в списке. В случае с TURN — «relay».<\/p>\n<p><a href=\"https:\/\/1.1.1.1\/help\">Тест DoH<\/a>. Проверка работоспособности DNS-over-HTTPS от Cloudflare. Показывает «Yes» только в случае, если вы настроили DoH на их серверы. В противном случае стоит ориентироваться на ASN.<\/p>\n<p><a href=\"https:\/\/dnsleaktest.com\">Тест утечки DNS<\/a>. Отображает серверы, которым вы «доверяете» хранить и, возможно, использовать информацию о том, к каким серверам или сайтам вы подключаетесь.<\/p>\n<p><b>Генераторы настроек<\/b><br \/>\n<a href=\"https:\/\/ssl-config.mozilla.org\/\">Генератор настроек SSL<\/a>. Генератор настроек SSL от Mozilla для различных программ.<\/p>\n<p><a href=\"https:\/\/securitytxt.org\">Генератор файла security.txt<\/a> Удобная форма генератора security.txt.<\/p>\n<p><b>Реклама<\/b><br \/>\n<a href=\"https:\/\/checkadblock.ru\/\">CheckAdBlock<\/a>. Один из первых сайтов, который мне попался много лет назад, когда возникла мысль протестировать работу блокировщиков рекламы в браузере.<\/p>\n",
            "date_published": "2023-01-20T13:35:10+07:00",
            "date_modified": "2025-02-28T09:01:38+07:00",
            "tags": [
                "dns",
                "ipv6",
                "jabber",
                "online",
                "ssl",
                "web",
                "веб",
                "защита",
                "настройка",
                "порт",
                "почта",
                "проверка",
                "сервер",
                "сервис",
                "тест"
            ],
            "_date_published_rfc2822": "Fri, 20 Jan 2023 13:35:10 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "262",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "261",
            "url": "https:\/\/kini24.ru\/all\/novoe-transportnoe-prilozhenie\/",
            "title": "Новое транспортное приложение",
            "content_html": "<p>Увидел, что стали появляться наклейки с QR-кодами в транспорте для оплаты проезда. Видимо, приложение вышло из стадии тестирования и вошло в стадию эксплуатации. Что ж, посмотрим, что там наваяли... Никаких особых ожиданий от приложения не было. Несколько напрягало то, что сменился разработчик — это обычно влечет за собой полную переработку программы. Зачастую не в лучшую сторону.<br \/>\nЧитая условия и правила использования, стал напрягаться еще больше. Программа выполнена в формате PWA (progressive web app), т. е. без интернета проезд уже не оплатить. Ладно, это понятно, норм. После удаления браузера из системы или очистки его данных (бывает нужно на некоторых сайтах), данные приложения тоже будут удалены. Уже неприятно. Вход осуществляется на выбор из трех вариантов: Яндекс, Google и VK. Уже неплохо, в старом приложении вариантов не было — только Google. Карта привязывается просто, но не совсем понятно где хранятся данные о ней, это неприятно. Написано, что хранение производится на серверах Сбера, но звучит как-то неубедительно что ли. А вот дальше началось полное безобразие.<br \/>\nВнешний вид очень аскетичен, на мой взгляд. Очень.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/Screenshot_20221229-172111@2x.png\" width=\"540\" height=\"1080\" alt=\"\" \/>\n<\/div>\n<p>Ну ок, возможно, просто непривычно. А дальше нормально будет. Идем дальше:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/Screenshot_20221229-172310@2x.png\" width=\"540\" height=\"1080\" alt=\"\" \/>\n<\/div>\n<p>Меню достаточно большое. А если бы у меня экран был поменьше, что тогда? И я почти получил ответ на этот вопрос, но чуть позже.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/Screenshot_20221229-172128@2x.png\" width=\"540\" height=\"1080\" alt=\"\" \/>\n<\/div>\n<p>Настроек немного. Да, в принципе, что настраивать-то? Камерой я обычно не пользуюсь, предпочитаю ручной ввод, поэтому отключаю. Остальные пункты не совсем понятны, оставляю как есть. Попробуем оплатить проезд, нажав соответствующую кнопку:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/Screenshot_20221229-172212@2x.png\" width=\"540\" height=\"1080\" alt=\"\" \/>\n<\/div>\n<p>Оп-па. Клавиатура полностью закрывает поле ввода кода. Я даже не знаю что я ввожу. Явная недоработка! Кажется, я догадываюсь, как отображалось бы меню при меньших размерах экрана смартфона. Ладно, в настройках что-то было про подсказки, попробую отключить:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/Screenshot_20221229-172213@2x.png\" width=\"540\" height=\"1080\" alt=\"\" \/>\n<\/div>\n<p>Так намного лучше. А что делает настройка «Инструкция»? Просто убирает одноименный пункт главного меню. Хм, забавно. Сильно подозреваю, что «Отслеживание транспорта» делает то же самое. Этот пункт меню, кстати, просто перебрасывает на сайт, где можно посмотреть где какой автобус\/трамвай\/троллейбус сейчас находится. Им я пользуюсь уже давно, для меня там ничего нового нет.<br \/>\nПо итогу. Предыдущее приложение мне нравилось намного больше по сравнению с этим:<\/p>\n<ol start=\"1\">\n<li>Мне не нравится формат приложения.<\/li>\n<li>Мне не нравится сайт, на котором нужно привязывать свою карту для оплаты.<\/li>\n<li>Мне не нравится внешний вид и то, что он явно «заточен» под большие экраны.<br \/>\nПроезд оплачивать пока не пробовал и я не вижу никого, кто бы пользовался этим приложением. Наводит на некоторые размышления. Наверное, я пока что подожду немного с его использованием и отвяжу на всякий случай банковскую карту.<br \/>\nНа других маршрутах, кстати, тоже появились QR-коды, но от старых разработчиков. Судя по данным на них, проезд можно оплатить через СБПей или бота в Telegram. С учетом того, что кондукторы отказывались принимать оплату через бота, с этими наклейками тоже лучше подождать. А представляя себе работу чиновников, «нормальной» оплаты проезда, кроме наличных или банковской карты (еще транспортная есть, забыл), в ближайшее время ждать не стоит. Впрочем, думаю, что скоро СМИ отрапортуют, что всё готово, всё прекрасно работает и умолчат о том, что этим приложением никто (или почти никто) не пользуется. Опрос что ли провести? :-)<\/li>\n<\/ol>\n",
            "date_published": "2022-12-29T18:04:04+07:00",
            "date_modified": "2023-02-27T15:52:18+07:00",
            "tags": [
                "город",
                "красинформ",
                "красноярск",
                "оплата",
                "приложение",
                "проезд",
                "транспорт"
            ],
            "image": "https:\/\/kini24.ru\/pictures\/Screenshot_20221229-172111@2x.png",
            "_date_published_rfc2822": "Thu, 29 Dec 2022 18:04:04 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "261",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/kini24.ru\/pictures\/Screenshot_20221229-172111@2x.png",
                    "https:\/\/kini24.ru\/pictures\/Screenshot_20221229-172310@2x.png",
                    "https:\/\/kini24.ru\/pictures\/Screenshot_20221229-172128@2x.png",
                    "https:\/\/kini24.ru\/pictures\/Screenshot_20221229-172212@2x.png",
                    "https:\/\/kini24.ru\/pictures\/Screenshot_20221229-172213@2x.png"
                ]
            }
        },
        {
            "id": "259",
            "url": "https:\/\/kini24.ru\/all\/probros-portov-v-openwrt\/",
            "title": "Проброс портов в OpenWrt",
            "content_html": "<p>Мне никогда не нравилось, что в интерфейсе OpenWrt нельзя указать несколько портов при пробросе, можно указать только диапазон. А если мне нужно несколько, объединенных одним сервисом? Например, почта. Если указывать все порты, то получается, что на каждый из них нужно создавать свое правило. В итоге получается такая простыня правил, что ориентироваться в ней становится затруднительно.<br \/>\nПо сути, эта заметка — напоминание себе как нужно правильно прокинуть порты во внутреннюю сеть, используя iptables. И, заодно, там же сделаем так, чтобы из локальной сети можно было обращаться к своим серверам по доменному имени.<br \/>\nИдем  в раздел <i>Network<\/i> — <i>Firewall<\/i> и открываем вкладку <i>Custom rules<\/i>. Добавляем туда строку такого вида:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">iptables -t nat -A zone_wan_prerouting -p tcp -m multiport --dports 25,110,143,465,587,993,995,4190 -j DNAT --to-destination 192.168.1.100<\/code><\/pre><p>Здесь мы помещает в цепочку <i>zone_wan_prerouting<\/i> таблицы <i>nat<\/i> правило, указывающее, что сервисы, обращающиеся из внешней сети на перечисленные порты, должны перенаправляться на сервер с адресом 192.168.1.100. Параметр -р указывает протокол tcp, а параметр -m multiports позволяет указать не один порт, а несколько. Это правило позволит открыть порты для доступна извне, но при обращении к ним из локальной сети придется указывать «прямой» адрес 192.168.1.100. Если вписать свой внешний адрес (IP или DNS), то ничего не выйдет. Чтобы это стало возможным, нужно дописать еще две строки:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">iptables -t nat -A zone_lan_prerouting -d 95.170.188.45 -p tcp -m multiport --dports 25,110,143,465,587,993,995,4190 -j DNAT --to-destination 192.168.1.100\niptables -t nat -A zone_lan_postrouting -d 192.168.1.100 -p tcp -m multiport --dports 25,110,143,465,587,993,995,4190 -j MASQUERADE<\/code><\/pre><p>В первой строке мы говорим, что все обращения к внешнему адресу на указанные порты должны перенаправляться на локальный адрес 192.168.1.100. Во второй строке мы, если так можно выразиться, прячем, что обращаемся из локальной сети.<br \/>\nПосле нажатия кнопки <i>Save<\/i> содержимое поля <i>Custom Rules<\/i> будет сохранено на роутере в файле \/etc\/firewall.user. Для применения эти необходимо перезапустить файрволл:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">\/etc\/init.d\/firewall restart<\/code><\/pre><p>После этого почта станет доступной из внешней сети и из локальной, причем по доменному имени или внешнему IP-адресу.<\/p>\n<p><b>Обновление<\/b> Если оставить последнее правило в таком виде, то исходящий IP-адрес (адрес клиента) будет отображаться как адрес самого роутера в локальной сети: 192.168.1.1. Поэтому следует немного изменить правило, чтобы оно выглядело следующим образом:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">iptables -t nat -A zone_lan_postrouting -s 192.168.1.0\/24 -d 192.168.1.100 -p tcp -m multiport --dports 25,110,143,465,587,993,995,4190 -j MASQUERADE<\/code><\/pre><p>В этом случае внешние адреса останутся «настоящими», а все запросы из локальной сети будут отображаться как 192.168.1.1. На мой взгляд, это приемлемо.<\/p>\n",
            "date_published": "2022-12-25T12:48:29+07:00",
            "date_modified": "2023-01-18T12:11:20+07:00",
            "tags": [
                "firewall",
                "iptables",
                "openwrt",
                "внешний",
                "доступ",
                "локальная сеть",
                "перенаправление",
                "порт",
                "проброс",
                "роутер"
            ],
            "_date_published_rfc2822": "Sun, 25 Dec 2022 12:48:29 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "259",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "258",
            "url": "https:\/\/kini24.ru\/all\/udalenny-dostup-cherez-rustdesk\/",
            "title": "Удаленный доступ через Rustdesk",
            "content_html": "<p>Так уж получилось, что эту программу я открыл для себя недавно и то случайно. <a href=\"https:\/\/rustdesk.com\/\">Rustdesk<\/a> предоставляет возможность удаленного доступа к любому компьютеру на базе Linux, Windows, MacOS, а также смартфонах под управлением Android или iOS. В общем, программа всеядная, так сказать. Управлять компьютером или смартфоном можно в обоих направлениях — со смартфона компьютером или с компьютера смартфоном. Программа имеет децентрализованный сервер, т. е. вы можете установить его на свой сервер или даже NAS и подключаться через него. Это, на мой взгляд, большой плюс. Да и я, грешен, предпочитаю self-hosted решения.<br \/>\nКакие «плюсы» есть еще? Программа имеет <a href=\"https:\/\/github.com\/rustdesk\/rustdesk\">открытый код<\/a> и абсолютно бесплатна. Подключение осуществляется по так называемым ID (аналогично таким программам как TeamViewer, Anydesk и т. п.), то есть может работать за NAT. Меня лично особо порадовала возможность обмениваться файлами между Linux и Windows системами — этого мне сильно не хватало. Следующим «плюсом», на мой взгляд, является достаточно быстрая работа на медленных линиях. Перепробовав несколько программ удаленного доступа, выделил для себя лидеров по скорости: TightVNC и Anydesk.<br \/>\nДо этого момента я предпочитал использовать VNC. Но тут была пара «минусов»: приходилось пробрасывать порты на шлюзах, что, при большом количестве компьютеров, превращало таблицы iptables в большую портянку. Вторым «минусом» была невозможность использования цифровой клавиатуры в ряде случаев. Точно так же себя вел и буфер обмена. Ну и третьим, как можно догадаться, была невозможность копирования файлов между Linux и Windows.<br \/>\nИнтерфейс программы, можно сказать, аскетичен, настроек ОЧЕНЬ немного. Для кого-то это «минус», лично я считаю, что больше и не нужно.<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"469\" data-ratio=\"1.4702194357367\">\n<img src=\"https:\/\/kini24.ru\/pictures\/rustdesk@2x.png\" width=\"469\" height=\"319\" alt=\"\" \/>\n<img src=\"https:\/\/kini24.ru\/pictures\/rustdesk_settings@2x.png\" width=\"182\" height=\"213\" alt=\"\" \/>\n<\/div>\n<\/div>\n<p>Из интересного присутствуют возможность TCP-туннелирования, избранное, адресная книга (возможность пока не реализована) и, видимо, что-то вроде личного кабинета на сервере (тоже пока не реализовано). Также можно использовать сгенерированный программой пароль или указать свой. Присутствует возможность в качестве идентификатора указать свое имя — так подключившийся человек будет отображаться у клиента. Еще одним любопытным свойством является возможность предоставить клиенту исполняемый файл с предустановленными настройками на свой сервер. Для этого нужно всего лишь изменить имя файла, например на такое:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">rustdesk-host=&lt;host-ip-or-name&gt;,key=&lt;строка-открытого-ключа&gt;<\/code><\/pre><p>где <i>host-ip-or-name<\/i> — DNS или IP-адрес вашего сервера, а <i>строка-открытого-ключа<\/i> — публичный ключ, который выдает вам сервер после своего запуска и который хранится в файле id_******.pub.<br \/>\nПодводя итог краткого обзора, могу сказать, что программа имеет все шансы заместить TeamViewer, Anydesk и другие подобные программы. Я бы порекомендовал ее к использованию.<\/p>\n",
            "date_published": "2022-12-24T14:35:09+07:00",
            "date_modified": "2023-02-27T15:53:57+07:00",
            "tags": [
                "rustdesk",
                "доступ",
                "сервер",
                "удаленное управление"
            ],
            "image": "https:\/\/kini24.ru\/pictures\/rustdesk@2x.png",
            "_date_published_rfc2822": "Sat, 24 Dec 2022 14:35:09 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "258",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "jquery\/jquery.js",
                    "fotorama\/fotorama.css",
                    "fotorama\/fotorama.js",
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/kini24.ru\/pictures\/rustdesk@2x.png",
                    "https:\/\/kini24.ru\/pictures\/rustdesk_settings@2x.png"
                ]
            }
        },
        {
            "id": "175",
            "url": "https:\/\/kini24.ru\/all\/samsung-tv\/",
            "title": "Управление Samsung TV через сеть",
            "content_html": "<p>Не оставляю попыток получить управление своим ТВ через сеть. Периодически поглядываю через wireshark на него, но информации маловато для понимания. Существует же множество утилит, которые позволяют управлять им со смартфона, значит это возможно. Для линукса существует утилита samsungctl, но мою модель она не поддерживает (???)<\/p>\n<p class=\"aside\">Я вообще когда-нибудь получу контроль над ним через сеть?<\/p>\n<p>Ниже список доступных портов, чтобы не забыть.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># nmap -v -p1-65535 -sS 192.168.1.7\n\nCompleted SYN Stealth Scan at 11:56, 3.12s elapsed (65535 total ports)\nNmap scan report for Samsung-TV.kini24.ru (192.168.1.7)\nHost is up (0.00065s latency).\nNot shown: 65517 closed ports\nPORT      STATE SERVICE\n7676\/tcp  open  imqbrokerd\n7678\/tcp  open  unknown\n8001\/tcp  open  vcom-tunnel\n8002\/tcp  open  teradataordbms\n8080\/tcp  open  http-proxy\n8187\/tcp  open  unknown\n9012\/tcp  open  unknown\n9119\/tcp  open  unknown\n9197\/tcp  open  unknown\n9999\/tcp  open  abyss\n15500\/tcp open  unknown\n32768\/tcp open  filenet-tms\n32769\/tcp open  filenet-rpc\n32770\/tcp open  sometimes-rpc3\n32771\/tcp open  sometimes-rpc5\n39556\/tcp open  unknown\n52752\/tcp open  unknown\n56295\/tcp open  unknown\nMAC Address: 7C:64:56:FE:76:2A (Unknown)<\/code><\/pre><p>Порты Samsung AllShare: 7676, 7678, 8187, 9119, 9197<\/p>\n<p>Полное сканирование портов:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">PROTOCOL STATE         SERVICE\n1        open          icmp\n2        open|filtered igmp\n6        open          tcp\n17       open          udp\n136      open|filtered udplite\n255      open|filtered unknown\n7676\/tcp  open  imqbrokerd\n7678\/tcp  open  unknown\n8001\/tcp  open  vcom-tunnel\n8002\/tcp  open  teradataordbms\n8080\/tcp  open  http-proxy\n8187\/tcp  open  unknown\n9012\/tcp  open  unknown\n9119\/tcp  open  unknown\n9197\/tcp  open  unknown\n9999\/tcp  open  abyss\n15500\/tcp open  unknown\n26101\/tcp open  unknown\n32768\/tcp open  filenet-tms\n32769\/tcp open  filenet-rpc\n32770\/tcp open  sometimes-rpc3\n32771\/tcp open  sometimes-rpc5\n40046\/tcp open  unknown\n57772\/tcp open  unknown\n60850\/tcp open  unknown\n1900\/udp  open|filtered upnp\n5353\/udp  open|filtered zeroconf\n8001\/udp  open|filtered vcom-tunnel\n32768\/udp open|filtered omad\nMAC Address: 7C:64:56:FE:76:2A (Unknown)<\/code><\/pre>",
            "date_published": "2022-12-12T14:00:40+07:00",
            "date_modified": "2022-12-21T18:40:16+07:00",
            "tags": [
                "samsung",
                "smarttv",
                "доступ",
                "порт",
                "сеть",
                "сканирование",
                "удаленное управление"
            ],
            "_date_published_rfc2822": "Mon, 12 Dec 2022 14:00:40 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "175",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "254",
            "url": "https:\/\/kini24.ru\/all\/pereezd-na-kvm\/",
            "title": "Переезд на KVM",
            "content_html": "<p>Проверяем поддержку виртуальных машин:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">egrep -c &#039;(vmx|svm)&#039; \/proc\/cpuinfo<\/code><\/pre><p>Ответом должно быть число больше нуля — компьютер поддерживает виртуализацию.<\/p>\n<p>Устанавливаем KVM:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo apt install qemu qemu-kvm libvirt-daemon libvirt-clients bridge-utils virt-manager<\/code><\/pre><p>Добавляем текущего пользователя в группу, чтобы иметь возможность управлять виртуальными машинами:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo gpasswd -a $USER libvirt<\/code><\/pre><p>Проверяем состояние службы:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl status libvirtd<\/code><\/pre><p>Проверяем, что всё установлено правильно:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">kvm-ok<\/code><\/pre><p>«Правильный» ответ:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">INFO: \/dev\/kvm exists\nKVM acceleration can be used<\/code><\/pre><p>Список виртуальных машин:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">virsh -c qemu:\/\/\/system list --all<\/code><\/pre><p>Если хотим, чтобы ВМ была в той же подсети, что и хост, то удаляем мосты по умолчанию:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">virsh net-list --all\nvirsh net-destroy default\nvirsh net-undefine default<\/code><\/pre><p>Смотрим свой сетевой интерфейс:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">ip a s<\/code><\/pre><p>И создаем новый мост, редактируя файл \/etc\/netplan\/01-netcfg.yaml:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># Let NetworkManager manage all devices on this system\nnetwork:\n  version: 2\n  ethernets:\n    enp6s0:\n      dhcp4: no\n      dhcp6: no\n  bridges:\n    kvm-br0:\n      interfaces: [enp6s0]\n      addresses: [192.168.1.5\/24]\n      gateway4: 192.168.1.1\n      nameservers:\n        addresses: [192.168.1.1, 8.8.8.8, 1.1.1.1]\n        search: [kini24.ru]<\/code><\/pre><p>На gateway4 будет ругаться, скорее всего, поэтому меняем его на:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">routes:\n      - to: default\n        via: 192.168.1.1\n        on-link: yes<\/code><\/pre><p>Применяем изменения:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo netplan --debug generate\nsudo netplan apply<\/code><\/pre><p>Установка операционной системы:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo virt-install --virt-type=kvm --name=ubuntu --ram=2048 --vcpus=2 --os-variant=ubuntu20.04 --hvm --cdrom=ubuntu-20.04.4-live-server-amd64.iso --network=bridge=bridge0,model=virtio --graphics vnc --disk path=\/var\/lib\/libvirt\/images\/ubuntu.qcow2,size=40,bus=virtio,format=qcow2<\/code><\/pre><p>Или устанавливаем систему, используя установленный Virt-Manager.<\/p>\n<p>Источники:<\/p>\n<ul>\n<li><a href=\"https:\/\/losst.ru\/ustanovka-kvm-ubuntu-16-04\">https:\/\/losst.ru\/ustanovka-kvm-ubuntu-16-04<\/a><\/li>\n<li><a href=\"https:\/\/levelup.gitconnected.com\/how-to-setup-bridge-networking-with-kvm-on-ubuntu-20-04-9c560b3e3991\">https:\/\/levelup.gitconnected.com\/how-to-setup-bridge-networking-with-kvm-on-ubuntu-20-04-9c560b3e3991<\/a><\/li>\n<\/ul>\n",
            "date_published": "2022-12-12T13:54:23+07:00",
            "date_modified": "2022-12-12T13:54:04+07:00",
            "tags": [
                "hypervisor",
                "kvm",
                "ubuntu",
                "виртуализация",
                "виртуальная машина",
                "гипервизор",
                "компьютер",
                "операционная система"
            ],
            "_date_published_rfc2822": "Mon, 12 Dec 2022 13:54:23 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "254",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "257",
            "url": "https:\/\/kini24.ru\/all\/videonablyudenie-dlya-linux\/",
            "title": "Видеонаблюдение для Linux",
            "content_html": "<p>Программу видеонаблюдения для ОС Linux найти достаточно сложно: часть из них стоит достаточно дорого для дома, часть просто не работает, другие не работают с имеющимся оборудованием. И так далее. Проблем много, много больше, чем с клиентами для Windows. Перебрав кучу программ, остановился на двух их них.<br \/>\nДля начала поясню, чего я ожидал от них вообще.<\/p>\n<ol start=\"1\">\n<li>Поддержка имеющегося у меня оборудования. Да, камеры и регистратор у меня от братьев-китайцев. Если быть точнее, то XiongMai. Сходного оборудования у китайцев много, поэтому выбор был очевиден. Плюс цена, конечно.<\/li>\n<li>PTZ (управление положением камеры) мне не особо нужен. Если будет — хорошо.<\/li>\n<li>Поддержка разрешения 4К и выше. Часть программ отвалилась сразу.<\/li>\n<li>Поддержка кодирования H.265. До свидания практически те же программы, что и в п. 3.<\/li>\n<li>Желательно аналогичный клиент для Android и Windows. Люблю единообразие :-)<\/li>\n<li>Работа с архивом. Тут всё совсем плохо, скажу сразу. Ведение своего архива мне не нужно от слова «совсем» — предпочитаю возложить это на регистратор.<\/li>\n<li>Обнаружение людей\/лиц. Не критично, но желательно.<\/li>\n<li>Просмотр всех камер в одном окне. Иначе можно тупо создать ярлык, который будет запускать, например, VLC и подключаться к определенной камере. Это неудобно, имхо.<\/li>\n<li><\/li>\n<\/ol>\n<p>Первую программу, которая у меня нормально заработала, я обнаружил в репозитории Linux, как ни странно. Называется она <a href=\"https:\/\/snapcraft.io\/cctv-viewer\">CCTV Viewer<\/a>:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/Screenshot_20201007_155400@2x.jpg\" width=\"1280\" height=\"716\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Главное окно программы<\/div>\n<\/div>\n<p>Количество настроек у программы минимально. В принципе, всё, что вам нужно знать — URL подключения к камере или видеорегистратору. Выбираем нужный «кадр» в главном окне, справа вводим адрес подключения и всё. Если хотите звук, то в настройках программы нужно выставить соответствующую галочку.<br \/>\nПрограмма потребляет минимум ресурсов и просто работает. Поддержки PTZ и архивов нет, обнаружения лиц и людей — тоже. Клиентов для других ОС тоже нет. Еще одним «минусов» является тот факт, что программа устанавливается из snap’ов, что менее безопасно для пользователя, нежели репозиторий.<\/p>\n<p>Вторая программа... Ну тут я просто долго «тупил». Потому что она используется у меня на работе уже много лет. Но подключение каждой камеры требует приобретения лицензии (2400 рублей за камеру на момент написания текста). Наверное, меня останавливало именно это. Я знал про существование демо-версии, но не был в курсе налагаемых на нее ограничений. Что ж, теперь знаю :-)<br \/>\nЭто программа от компании <a href=\"https:\/\/devline.ru\/\">DevLine<\/a>. Архитектура — клиент-серверная. Иначе говоря, вам нужно установить две части: сервер и клиент. В случае с линуксом, это устанавливается одним пакетом.<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"960\" data-ratio=\"1.8461538461538\">\n<img src=\"https:\/\/kini24.ru\/pictures\/15@2x.jpg\" width=\"960\" height=\"520\" alt=\"Главное окно программы\" \/>\n<img src=\"https:\/\/kini24.ru\/pictures\/14@2x.jpg\" width=\"683\" height=\"384\" alt=\"Окно настроек\" \/>\n<\/div>\n<\/div>\n<p>Итак сервер. Поддержка до 16 камер, работа с ONVIF, автообнаружение камер в сети, аналитика, оповещения и прочие <a href=\"\"плюшки\"\"><a href=\"https:\/\/devline.ru\/moduli\/\">https:\/\/devline.ru\/moduli\/<\/a><\/a>, бОльшая часть из которых мне не особо нужны. А вот наличие клиента для Android и Windows, а также свой веб-сервер на базе HTML5 — очень хорошо.<br \/>\nИз «минусов»: отсутствие поддержки «чужих» архивов (на видеорегистраторе) и, как сегодня оказалось, периодическим пропадание звука с камер. Лечится перезапуском сервиса.<br \/>\nРесурсов потребляет немного, но существенно больше по сравнению с первой программой. Впрочем, для домашнего видеонаблюдения всё равно годится. По опыту могу сказать, что крайне желательно иметь еще и дискретную видеокарту для снижения нагрузки на процессор.<\/p>\n<p>Да, я знаю о существовании такие программ как motion, zoneminder. Motion я довольно долго использовал в свое время потому, что она позволяла запускать внешние скрипты при наступлении события. Это, в свою очередь, давало очень большое поле для фантазии. Zoneminder мне тогда не понравился, но чем — сейчас уже и не вспомню.<\/p>\n",
            "date_published": "2022-12-12T11:19:13+07:00",
            "date_modified": "2023-02-27T15:54:24+07:00",
            "tags": [
                "cctv",
                "cms",
                "devline",
                "linux",
                "ubuntu",
                "vms",
                "видеонаблюдение",
                "программа"
            ],
            "image": "https:\/\/kini24.ru\/pictures\/Screenshot_20201007_155400@2x.jpg",
            "_date_published_rfc2822": "Mon, 12 Dec 2022 11:19:13 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "257",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "jquery\/jquery.js",
                    "fotorama\/fotorama.css",
                    "fotorama\/fotorama.js"
                ],
                "og_images": [
                    "https:\/\/kini24.ru\/pictures\/Screenshot_20201007_155400@2x.jpg",
                    "https:\/\/kini24.ru\/pictures\/15@2x.jpg",
                    "https:\/\/kini24.ru\/pictures\/14@2x.jpg"
                ]
            }
        },
        {
            "id": "256",
            "url": "https:\/\/kini24.ru\/all\/winapi32-ustarel\/",
            "title": "WinApi32 устарел",
            "content_html": "<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/0001.png\" width=\"553\" height=\"297\" alt=\"\" \/>\n<\/div>\n",
            "date_published": "2022-10-24T16:47:51+07:00",
            "date_modified": "2023-02-27T15:55:13+07:00",
            "tags": [
                "api",
                "vk",
                "windows",
                "вконтакте",
                "комментарий",
                "программирование"
            ],
            "image": "https:\/\/kini24.ru\/pictures\/0001.png",
            "_date_published_rfc2822": "Mon, 24 Oct 2022 16:47:51 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "256",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/kini24.ru\/pictures\/0001.png"
                ]
            }
        },
        {
            "id": "255",
            "url": "https:\/\/kini24.ru\/all\/sozdanie-zerkala-nod32-na-synology\/",
            "title": "Создание зеркала Nod32 на Synology",
            "content_html": "<h2>Заметка на память<\/h2>\n<ol start=\"1\">\n<li>Распаковываем архив со скриптом в \/volume1\/web\/nod<\/li>\n<li>В Web Station создаем виртуальный хост с именем nod. Открываем порты 443 и 80.<\/li>\n<li>Корневым каталогом указываем \/web\/nod\/www<\/li>\n<li>В планировщике задач создаем новую с произвольным именем. В качестве команды для выполнения указываем<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"\">\/usr\/local\/bin\/php74 -f \/volume1\/web\/nod\/update.php &amp;<\/code><\/pre><p>Пользователь root.<\/p>\n<ol start=\"5\">\n<li>Подключаемся к NAS по SSH, создаем файл \/etc\/nginx\/sites-enabled\/nod.conf:<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"\">touch \/etc\/nginx\/sites-enabled\/nod.conf<\/code><\/pre><ol start=\"6\">\n<li>Открываем файл на редактирование:<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"\">vi \/etc\/nginx\/sites-enabled\/nod.conf<\/code><\/pre><p>Для начала редактирования нужно нажать английскую клавишу «i». Затем вставляем из буфера обмена текст из пункта 7.<\/p>\n<ol start=\"7\">\n<li>Правим этот файл и приводим к виду:<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"\">map $http_user_agent $ver {\n        &quot;~^.*(EEA|EES|EFSW)+\\s+Update.*BPC\\s+(\\d+)\\..*$&quot; &quot;ep$2&quot;;\n        &quot;~^.*Update.*BPC\\s+(\\d+)\\..*$&quot; &quot;v$1&quot;;\n}\n\nserver {\n                listen 80;\n                listen 2221;\n                server_name nod.home.mikhailov.by;\n\n                # Optional: Charset\n                charset utf-8;\n\n                # Path to the root of your installation\n                root \/volume1\/web\/nod\/www;\n\n                # Index file\n                index index.html;\n\n                # Доп. заголовки\n                add_header X-Robots-Tag &quot;noindex, nofollow, nosnippet, noarchive&quot;;\n                add_header Cache-Control &quot;no-cache, public, must-revalidate&quot;;\n\n                ################# Nginx Rewrite #################\n\n                location ~* \\.ver$ {\n                        auth_basic &quot;Restricted&quot;;\n                        auth_basic_user_file \/volume1\/web\/nod\/htpasswd;\n\n                        if ($ver ~ &quot;^ep[6-9]$&quot;) {\n                                rewrite ^\/(dll\/)?update.ver$ \/eset_upd\/$ver\/$1update.ver break;\n                        }\n\n                        if ($ver ~ &quot;^v(5|9)$&quot;) {\n                                rewrite ^(.*) \/eset_upd\/$ver\/update.ver break;\n                        }\n\n                        if ($ver ~ &quot;^v[3-8]$&quot;) {\n                                rewrite ^(.*) \/eset_upd\/v3\/update.ver break;\n                        }\n\n                        if ($ver ~ &quot;^v1[0-1]$&quot;) {\n                                rewrite ^(.*) \/eset_upd\/v10\/dll\/update.ver break;\n                        }\n                        if ($ver ~ &quot;^v1[2-9]$&quot;) {\n                                rewrite ^(.*) \/eset_upd\/$ver\/dll\/update.ver break;\n                        }\n                }\n\n                ################################################\n}<\/code><\/pre><ol start=\"8\">\n<li>Завершаем редактирование нажатием клавиши Esc. Затем нужно ввести двоеточие и следом за ним буквы wq. Внизу слева должно получиться следующее:<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"\">:wq<\/code><\/pre><p>Теперь нажимаем Enter. Буква w означает запись, буква q — выход из программы. Если возникнут вопросы по редактору, гуглим vi.<\/p>\n<ol start=\"9\">\n<li>В папке \/volume1\/web\/nod создаем файл htpasswd.<\/li>\n<li>Добавляем в него пользователя:<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"\">htpasswd -b \/volume1\/web\/nod\/htpasswd username password<\/code><\/pre><ol start=\"11\">\n<li>Перезапускаем nginx:<\/li>\n<\/ol>\n<pre class=\"e2-text-code\"><code class=\"\">nginx -s reload<\/code><\/pre><ol start=\"12\">\n<li>Проверяем доступность зеркала и запрос пароля<\/li>\n<\/ol>\n",
            "date_published": "2022-10-21T10:21:07+07:00",
            "date_modified": "2022-12-02T00:48:18+07:00",
            "tags": [
                "nas",
                "nginx",
                "nod32",
                "synology",
                "зеркало",
                "создание"
            ],
            "_date_published_rfc2822": "Fri, 21 Oct 2022 10:21:07 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "255",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "253",
            "url": "https:\/\/kini24.ru\/all\/povtorny-ban-narodnogo-monitoringa\/",
            "title": "Повторный бан «Народного мониторинга»",
            "content_html": "<h2>На этот раз последний<\/h2>\n<p>Итак, на днях в чате взаимопомощи обсуждалась ситуация, когда датчик перестает передавать показания по причине отсутствия электроэнергии или интернета. В последнем случае, конечно, можно завести резервный канал. Но кто будет это делать только ради одного «мониторинга»? А таких достаточно много, как мне кажется.<br \/>\nМысль я поддержал. Пользователь @Constanine приводил свои доводы, на мой взгляд, неубедительные: иметь ИБП и резервный канал от другого провайдера. Только смысл в них, если, например, из-за отключения электроэнергии вырубилось оборудование провайдера? Потихоньку беседа переключилась на то, какие датчики можно выводить в публичный доступ, а какие нельзя. Со своей стороны я попросил актуализировать\/дополнить справку на сайте проекта, на что в ответ получил:<br \/>\n— А не слишком ли многого вы от нас хотите?<br \/>\nПростите, но не так уж и много. Если я пришел на проект, почитал документацию по передаче данных, вывел кучу датчиков в паблик, а мне их убрали обратно в приват — я просто хочу знать причину, а не выяснять у всех и каждого почему так получилось.<br \/>\nКак мне кажется, @Constantine — человек достаточно резкий, невоздержанный, читающий сообщения «по диагонали». В начале моей с ним «перепалки» он отвечал, как заведенный: «Зато у нас есть бонусы!» Да мне всё равно на бонусы, я про них в курсе, достаточно давно на проекте. И вообще в своих вопросах я о них не спрашивал. Я просто просил дополнить информацию на сайте. Даже готов был заняться этим, если у них нет человека, который этим уже занимается.<br \/>\nВ общем, минут через 5 @Constantine просто отключает мне возможность отправлять сообщения в чат. Еще через минуту просто трет историю в чате, оаставляя только одно мое, самое первое, сообщение. Жаль, я не догадался сделать скриншоты. Ну что тут скажешь? Надоело пытаться отвечать на «неудобные» вопросы? Да, давайте всех банить, что уж!<br \/>\nЯ тоже человек не гордый, не хотите — не надо. Удалил все датчики и свой профиль из проекта. Вышел из <a href=\"https:\/\/t.me\/narodmon\">чата<\/a>, <a href=\"https:\/\/vk.com\/narodmon\">группы в ВК<\/a>, забыл только про <a href=\"https:\/\/twitter.com\/narodmon\">твиттер<\/a>. Исправил как только пришло первое сообщение оттуда. Отключил отправку данных со всех своих датчиков — это буквально 2 кнопки нажать. Если поддержка не может адекватно реагировать на вопросы — зачем мне вообще связываться с такой компанией? Я бы еще понял, если бы не то что матерился или наезжал, а просто писал резко. Но нет, всё было достаточно корректно, я даже извинялся пару раз.<br \/>\nВ общем, надоело. Каждое слово, каждое объяснение нужно вытягивать. Справки нормальной нет. Как-то в приложении «Народный мониторинг 2019» нашел FAQ с вопросами, которые, во-первых, мне показались интересными, а, во-вторых, которые я так и не нашел на сайте. Хотя приложение берет все данные именно с сайта.<br \/>\nПосле того, как «Народный мониторинг» обнаружил, что другой проект — rp5, крадет у них информацию, мне кажется, что именно меня заподозрили в том, что я виновен в этом. Возможно, поэтому они так резко начали относиться ко мне. И всё это только из-за того, что другим участникам «Народного мониторинга» предложил отправлять данные и на rp5. Впрочем, меня попросили не рекламировать другие сайты, что я и сделал. Вот только «НМ» ошибся: никакие данные с их проекта я никому не сливал и даже не собирался. Да, я отправлял данные со своих датчиков и на rp5, помимо «Народного мониторинга». Как и на WeatherUnderground, OpenWeatherMap и множество других сайтов. А на то, что происходило между ними, какие у них взаимоотношения — мне глубоко «фиолетово». Данные мои => отправляю куда хочу.<\/p>\n<p>That’s all, folks!<\/p>\n",
            "date_published": "2022-01-24T21:37:52+07:00",
            "date_modified": "2022-09-08T09:02:45+07:00",
            "tags": [
                "narodmon",
                "openweathermap",
                "rp5",
                "weatherunderground",
                "бан",
                "надоело",
                "народный мониторинг",
                "проект",
                "техподдержка",
                "умный дом",
                "уход"
            ],
            "_date_published_rfc2822": "Mon, 24 Jan 2022 21:37:52 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "253",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "250",
            "url": "https:\/\/kini24.ru\/all\/staraya-gifka\/",
            "title": "Старая гифка",
            "content_html": "<p>Некоторые вещи порой сложно найти. Особенно такие старые. Эта гифка еще с тех времен, когда я в интернет выходил через модем, а трафик был достаточно дорогой. Оставлю на память здесь<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/kini24.ru\/pictures\/post-19-1141387292.gif\" width=\"142\" height=\"128\" alt=\"\" \/>\n<\/div>\n",
            "date_published": "2021-11-23T10:11:30+07:00",
            "date_modified": "2023-02-27T15:55:30+07:00",
            "tags": [
                "gif",
                "бутылка",
                "гифка",
                "мальчик",
                "пацан",
                "писающий мальчик",
                "пьяный",
                "сигарета"
            ],
            "image": "https:\/\/kini24.ru\/pictures\/post-19-1141387292.gif",
            "_date_published_rfc2822": "Tue, 23 Nov 2021 10:11:30 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "250",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/kini24.ru\/pictures\/post-19-1141387292.gif"
                ]
            }
        }
    ],
    "_e2_version": 4134,
    "_e2_ua_string": "Aegea 11.3 (v4134)"
}