{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Воронин",
    "_rss_description": "воронин, voronin, it",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/voronin.one\/",
    "feed_url": "https:\/\/voronin.one\/rss\/",
    "icon": "https:\/\/voronin.one\/pictures\/userpic\/userpic@2x.jpg?1658757233",
    "authors": [
        {
            "name": "Алексей Воронин",
            "url": "https:\/\/voronin.one\/",
            "avatar": "https:\/\/voronin.one\/pictures\/userpic\/userpic@2x.jpg?1658757233"
        }
    ],
    "items": [
        {
            "id": "60",
            "url": "https:\/\/voronin.one\/all\/matrixrtc-server-na-baze-synology\/",
            "title": "MatrixRTC сервер на базе Synology",
            "content_html": "<p>развернём свой matrix сервер используя средства synology<\/p>\n<p>для начала подготовим папки, где будят хранится настройки сервера и база PostgreSQL<br \/>\nв каталоге <b>docker<\/b> создал папку <b>matrix<\/b> а в ней уже <b>data<\/b> и <b>db<\/b> соответственно<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-97.png\" width=\"800\" height=\"298.67947178872\" alt=\"\" \/>\n<\/div>\n<p>так же нам нужно получить id пользователя и группы, <a href=\"https:\/\/voronin.one\/all\/kak-poluchit-id-polzovatelya-i-gruppy-v-synology\/\">uid и gid<\/a><\/p>\n<p>затем идём в «Панель управления» -> «Планировщик задач» -> «Создать» -> «Запланированная задача» -> «Скрипт, созданный пользователем»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-98.png\" width=\"800\" height=\"472.72727272727\" alt=\"\" \/>\n<\/div>\n<p>создаём задачу «MATRIX», указываем пользователя «root» и обязательно отключаем<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-99.png\" width=\"532\" height=\"581\" alt=\"\" \/>\n<\/div>\n<p>в расписание обязательно «не повторять»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-100.png\" width=\"532\" height=\"581\" alt=\"\" \/>\n<\/div>\n<p>и пишем скрипт для запуска, нам нужно запустить его один раз для создания структуры<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-101.png\" width=\"531\" height=\"582\" alt=\"\" \/>\n<\/div>\n<p>сам скрипт:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">#!\/bin\/bash\ndocker run --rm \\\n--user 1026:100 \\\n-v \/volume1\/docker\/matrix\/data:\/data \\\n-e SYNAPSE_CONFIG_PATH=\/data\/homeserver.yaml \\\n-e SYNAPSE_SERVER_NAME=matrixchat \\\n-e SYNAPSE_REPORT_STATS=yes \\<\/code><\/pre><p>в скрипт подставляем «user 1026:100» uid и gid <a href=\"https:\/\/voronin.one\/all\/kak-poluchit-id-polzovatelya-i-gruppy-v-synology\/\">полученные выше<\/a><\/p>\n<p>после того как создали задачу, выбираем её в списке и жмём «выполнить», вам потребуется указать пароль текущего пользователя и он должен быть с правами администратора<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-111.png\" width=\"590\" height=\"152\" alt=\"\" \/>\n<\/div>\n<p>теперь готовим файл <b>compose.yaml<\/b> следующего содержимого<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">services:\n  synapse-db:\n    image: postgres:16\n    container_name: Synapse-DB\n    hostname: synapse-db\n    security_opt:\n      - no-new-privileges:true\n    healthcheck:\n      test: [&quot;CMD&quot;, &quot;pg_isready&quot;, &quot;-q&quot;, &quot;-d&quot;, &quot;synapsedb&quot;, &quot;-U&quot;, &quot;synapseuser&quot;]\n      timeout: 45s\n      interval: 10s\n      retries: 10\n    volumes:\n      - \/volume1\/docker\/matrix\/db:\/var\/lib\/postgresql\/data:rw\n    environment:\n      - POSTGRES_DB=synapsedb\n      - POSTGRES_USER=synapseuser\n      - POSTGRES_PASSWORD=synapsepass\n      - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C\n    restart: on-failure:5\n\n  synapse:\n    image: matrixdotorg\/synapse:latest\n    container_name: Synapse\n    hostname: synapse\n    security_opt:\n      - no-new-privileges:true\n    user: 1026:100\n    environment:\n      - TZ=Europe\/Moscow\n      - SYNAPSE_CONFIG_PATH=\/data\/homeserver.yaml\n    volumes:\n      - \/volume1\/docker\/matrix\/data:\/data:rw\n    ports:\n      - 8450:8008\/tcp\n    restart: on-failure:5\n    depends_on:\n      synapse-db:\n        condition: service_started<\/code><\/pre><p>обратите внимание, что пусти <b>\/volume1\/docker\/matrix\/db<\/b> и <b>\/volume1\/docker\/matrix\/data<\/b> должны вести на папки, созданные выше<\/p>\n<p>идём в <b>Container manager<\/b>, <b>Проект<\/b> и жмём «создать»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-113.png\" width=\"800\" height=\"333.26063249727\" alt=\"\" \/>\n<\/div>\n<p>даём название проекту, указываем путь к нашей папке <b>matrix<\/b> и выбираем с компьютера файл <b>compose.yaml<\/b><\/p>\n<p>настройки web портала не трогаем, мы будем настраивать обратный прокси<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-114.png\" width=\"740\" height=\"578\" alt=\"\" \/>\n<\/div>\n<p>запускаем<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-115.png\" width=\"741\" height=\"578\" alt=\"\" \/>\n<\/div>\n<p>ждём старта проекта<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-116.png\" width=\"800\" height=\"503\" alt=\"\" \/>\n<\/div>\n<p>теперь надо остановить проект и отредактировать файл конфигурации нашего сервера<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-112.png\" width=\"800\" height=\"333.22314049587\" alt=\"\" \/>\n<\/div>\n<p>добавляем следующие параметры после названия сервера<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">enable_registration: true\nenable_registration_without_verification: true\nenable_group_creation: true<\/code><\/pre><div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-119.png\" width=\"797\" height=\"454\" alt=\"\" \/>\n<\/div>\n<p>теперь меняем параметры базы данных, заменим следующие строчки<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">database:\n  name: sqlite3\n  args:\n    database: \/data\/homeserver.db<\/code><\/pre><div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-120.png\" width=\"417\" height=\"88\" alt=\"\" \/>\n<\/div>\n<p>на<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">database:\n  name: psycopg2\n  args:\n    user: synapseuser\n    password: synapsepass\n    database: synapsedb\n    host: synapse-db\n    cp_min: 5\n    cp_max: 10<\/code><\/pre><div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-121.png\" width=\"521\" height=\"165\" alt=\"\" \/>\n<\/div>\n<p>при редактировании файла конфигурации важно не ошибиться в отступах<\/p>\n<p>настраиваем обратный прокси<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-122.png\" width=\"689\" height=\"442\" alt=\"\" \/>\n<\/div>\n<p>создаём новую запись, указываем имя нашего сервера, например «im.server.ru», порт 443, обязательно включаем HSTS и порт нашего контейнера 8450<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-123.png\" width=\"604\" height=\"563\" alt=\"\" \/>\n<\/div>\n<p>создаём заголовки под websocket<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-124.png\" width=\"603\" height=\"561\" alt=\"\" \/>\n<\/div>\n<p>выпускаем сертификат для нашего сервера<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-125.png\" width=\"800\" height=\"312.59418729817\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"652\" data-ratio=\"1.1790235081374\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-126.png\" width=\"652\" height=\"553\" alt=\"\" \/>\n<img src=\"https:\/\/voronin.one\/pictures\/image-127.png\" width=\"650\" height=\"552\" alt=\"\" \/>\n<img src=\"https:\/\/voronin.one\/pictures\/image-128.png\" width=\"653\" height=\"550\" alt=\"\" \/>\n<img src=\"https:\/\/voronin.one\/pictures\/image-129.png\" width=\"650\" height=\"550\" alt=\"\" \/>\n<\/div>\n<\/div>\n<p>идём в настройки и назначаем сертификат домену<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-130.png\" width=\"795\" height=\"342\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-131.png\" width=\"600\" height=\"419\" alt=\"\" \/>\n<\/div>\n<p>осталось скачать клиент и подключиться к серверу<br \/>\n<a href=\"https:\/\/element.io\/download\">https:\/\/element.io\/download<\/a><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-132.png\" width=\"800\" height=\"619.53125\" alt=\"\" \/>\n<\/div>\n<p>жмём «редактировать» чтобы сменить сервер на наш<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-133.png\" width=\"800\" height=\"625.54027504912\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-134.png\" width=\"800\" height=\"621.7008797654\" alt=\"\" \/>\n<\/div>\n<p>создаём новую учётную запись<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-137.png\" width=\"800\" height=\"617.25490196078\" alt=\"\" \/>\n<\/div>\n<p>мы вошли<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-136.png\" width=\"800\" height=\"622.48289345064\" alt=\"\" \/>\n<\/div>\n<p>поздравляю<\/p>\n",
            "date_published": "2026-03-30T16:33:28+03:00",
            "date_modified": "2026-03-31T13:56:07+03:00",
            "tags": [
                "docker",
                "MATRIX",
                "MatrixRTC",
                "PostgreSQL",
                "synology"
            ],
            "image": "https:\/\/voronin.one\/pictures\/image-117.png",
            "_date_published_rfc2822": "Mon, 30 Mar 2026 16:33:28 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "60",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css",
                    "jquery\/jquery.js",
                    "fotorama\/fotorama.css",
                    "fotorama\/fotorama.js"
                ],
                "og_images": [
                    "https:\/\/voronin.one\/pictures\/image-117.png",
                    "https:\/\/voronin.one\/pictures\/image-118.png",
                    "https:\/\/voronin.one\/pictures\/image-135.png",
                    "https:\/\/voronin.one\/pictures\/image-97.png",
                    "https:\/\/voronin.one\/pictures\/image-98.png",
                    "https:\/\/voronin.one\/pictures\/image-99.png",
                    "https:\/\/voronin.one\/pictures\/image-100.png",
                    "https:\/\/voronin.one\/pictures\/image-101.png",
                    "https:\/\/voronin.one\/pictures\/image-111.png",
                    "https:\/\/voronin.one\/pictures\/image-113.png",
                    "https:\/\/voronin.one\/pictures\/image-114.png",
                    "https:\/\/voronin.one\/pictures\/image-115.png",
                    "https:\/\/voronin.one\/pictures\/image-116.png",
                    "https:\/\/voronin.one\/pictures\/image-112.png",
                    "https:\/\/voronin.one\/pictures\/image-119.png",
                    "https:\/\/voronin.one\/pictures\/image-120.png",
                    "https:\/\/voronin.one\/pictures\/image-121.png",
                    "https:\/\/voronin.one\/pictures\/image-122.png",
                    "https:\/\/voronin.one\/pictures\/image-123.png",
                    "https:\/\/voronin.one\/pictures\/image-124.png",
                    "https:\/\/voronin.one\/pictures\/image-125.png",
                    "https:\/\/voronin.one\/pictures\/image-126.png",
                    "https:\/\/voronin.one\/pictures\/image-127.png",
                    "https:\/\/voronin.one\/pictures\/image-128.png",
                    "https:\/\/voronin.one\/pictures\/image-129.png",
                    "https:\/\/voronin.one\/pictures\/image-130.png",
                    "https:\/\/voronin.one\/pictures\/image-131.png",
                    "https:\/\/voronin.one\/pictures\/image-132.png",
                    "https:\/\/voronin.one\/pictures\/image-133.png",
                    "https:\/\/voronin.one\/pictures\/image-134.png",
                    "https:\/\/voronin.one\/pictures\/image-137.png",
                    "https:\/\/voronin.one\/pictures\/image-136.png"
                ]
            }
        },
        {
            "id": "61",
            "url": "https:\/\/voronin.one\/all\/kak-poluchit-id-polzovatelya-i-gruppy-v-synology\/",
            "title": "как получить id пользователя и группы в synology",
            "content_html": "<p>чтобы получить id пользователя и группы в synology есть 2 пути:<\/p>\n<ol start=\"1\">\n<li>используем подключение ssh<br \/>\nвключаем терминал в панели управления<\/li>\n<\/ol>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-102.png\" width=\"800\" height=\"456.39344262295\" alt=\"\" \/>\n<\/div>\n<p>дальше подключаемся чрез ssh (в windows и linux клиент встроен в систему)<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-103.png\" width=\"612\" height=\"175\" alt=\"\" \/>\n<\/div>\n<p>выполните команду <b>id<\/b><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-104.png\" width=\"739\" height=\"302\" alt=\"\" \/>\n<\/div>\n<pre class=\"e2-text-code\"><code class=\"\">uid=1026(axl) gid=100(users)<\/code><\/pre><p>у меня пользователь id (uid) — 1026<br \/>\nid группы (gid) — 100<\/p>\n<ol start=\"2\">\n<li>чуть дольше, делается через web интерфейс, никаких ssh не требуется<\/li>\n<\/ol>\n<p>идём в «Панель управления» -> «Планировщик задач» -> «Создать» -> «Запланированная задача» -> «Скрипт, созданный пользователем»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-105.png\" width=\"800\" height=\"610.09174311927\" alt=\"\" \/>\n<\/div>\n<p>создаём задание, которое будет выполняться от имени нужного нам пользователя, обязательно отключаем<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-106.png\" width=\"534\" height=\"581\" alt=\"\" \/>\n<\/div>\n<p>указываем «не повторять»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-107.png\" width=\"532\" height=\"583\" alt=\"\" \/>\n<\/div>\n<p>результат получим на почту, укажем адрес<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-108.png\" width=\"529\" height=\"580\" alt=\"\" \/>\n<\/div>\n<p>и команда<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">id<\/code><\/pre><p>после того как создали задачу, выбираем её в списке и жмём «выполнить»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-109.png\" width=\"611\" height=\"224\" alt=\"\" \/>\n<\/div>\n<p>и ждём, когда нам на почту придём результат<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-110.png\" width=\"777\" height=\"284\" alt=\"\" \/>\n<\/div>\n",
            "date_published": "2026-03-30T14:00:17+03:00",
            "date_modified": "2026-03-30T13:59:34+03:00",
            "tags": [
                "gid",
                "SSH",
                "synology",
                "uid"
            ],
            "image": "https:\/\/voronin.one\/pictures\/image-102.png",
            "_date_published_rfc2822": "Mon, 30 Mar 2026 14:00:17 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "61",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/voronin.one\/pictures\/image-102.png",
                    "https:\/\/voronin.one\/pictures\/image-103.png",
                    "https:\/\/voronin.one\/pictures\/image-104.png",
                    "https:\/\/voronin.one\/pictures\/image-105.png",
                    "https:\/\/voronin.one\/pictures\/image-106.png",
                    "https:\/\/voronin.one\/pictures\/image-107.png",
                    "https:\/\/voronin.one\/pictures\/image-108.png",
                    "https:\/\/voronin.one\/pictures\/image-109.png",
                    "https:\/\/voronin.one\/pictures\/image-110.png"
                ]
            }
        },
        {
            "id": "59",
            "url": "https:\/\/voronin.one\/all\/podklyuchaem-ai-k-nashemu-synology\/",
            "title": "подключаем AI к нашему synology",
            "content_html": "<p>Я использовал свою систему запущенную на Ollama (Nvidia RTX4090), по производительности просадок нет. Как поднять на debian ollama расписывать не стану, сразу перейду к настройке совместной работы с synology.<\/p>\n<p>Для начала на м надо сделать модель, которую сможет вызывать synology, для этого я склонировал Qwen\/Qwen3-235B-A22B в gpt-4o-mini<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">echo &quot;FROM qwen3:235b&quot; &gt;&gt; gpt-4o-mini.Modelfile<\/code><\/pre><pre class=\"e2-text-code\"><code class=\"bash\">ollama create gpt-4o-mini -f .\/gpt-4o-mini.Modelfile<\/code><\/pre><p>проверка работы<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">curl http:\/\/localhost:11434\/api\/generate -d &#039;{ &quot;model&quot;: &quot;gpt-4o-mini&quot;, &quot;prompt&quot;: &quot;Why is the sky blue?&quot; }&#039;<\/code><\/pre><div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-93.png\" width=\"800\" height=\"417.2131147541\" alt=\"\" \/>\n<\/div>\n<p>URL по-умолчанию для подключения к локальной Ollama <a href=\"http:\/\/ip_нашего_сервера:11434\">http:\/\/ip_нашего_сервера:11434<\/a><\/p>\n<p>формат API идентичный OpenAI<\/p>\n<p>теперь в Synology добавляем новую LLM<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-94.png\" width=\"686\" height=\"483\" alt=\"\" \/>\n<\/div>\n<p>название указываем своё, ключ API — любой (можно пробел)<\/p>\n<p>открываем «Дополнительные настройки» и прописываем нашу URL<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-95.png\" width=\"691\" height=\"491\" alt=\"\" \/>\n<\/div>\n<p>готово<\/p>\n",
            "date_published": "2026-01-09T12:41:00+03:00",
            "date_modified": "2026-01-09T12:40:24+03:00",
            "tags": [
                "API",
                "gpt",
                "Ollama",
                "OpenAI",
                "Qwen",
                "synology"
            ],
            "image": "https:\/\/voronin.one\/pictures\/image-93.png",
            "_date_published_rfc2822": "Fri, 09 Jan 2026 12:41:00 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "59",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/voronin.one\/pictures\/image-93.png",
                    "https:\/\/voronin.one\/pictures\/image-94.png",
                    "https:\/\/voronin.one\/pictures\/image-95.png"
                ]
            }
        },
        {
            "id": "58",
            "url": "https:\/\/voronin.one\/all\/kak-podruzhit-synology-s-neproverennymi-diskami\/",
            "title": "как подружить synology с непроверенными дисками",
            "content_html": "<p>Многие уже столкнулись с ошибкой совместимости дисков сторонних производителей с новыми моделями серверов synology. Да, это новая политика для продвижения OEM дисков, производимых под своим брендом.<\/p>\n<p>Экономя до 30% стоимости на покупке и ставя диски не synology мы теряем возможность мониторинга smart.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-87.png\" width=\"598\" height=\"93\" alt=\"\" \/>\n<\/div>\n<p>Ежемесячных отчётов и т. д.<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"446\" data-ratio=\"0.94893617021277\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-96.png\" width=\"446\" height=\"470\" alt=\"\" \/>\n<img src=\"https:\/\/voronin.one\/pictures\/image-88.png\" width=\"616\" height=\"542\" alt=\"\" \/>\n<\/div>\n<\/div>\n<p>и критично это становится, когда мы используем не домашние решения, а большие серверы с дисками SAS, тут разница стоимости дисков может превышать и 500 тыс. руб.<\/p>\n<p>Зато теперь, благодаря, <a href=\"https:\/\/github.com\/007revad\">Дейву Расселу<\/a> у нас есть возможность «подружить» диски сторонних производителей с нашим сервером.<\/p>\n<p>Для применения исправления, нужен доступ к серверу через SSH. Чтобы его включить перейдите в «Панель управления» -> «Терминал» и установите галочку напротив «Включить службу SSH», обязательно смените 22 порт на свой уникальный (49152-65535).<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-89.png\" width=\"800\" height=\"354.42114858706\" alt=\"\" \/>\n<\/div>\n<p>далее подключаемся по SSH (в linux и так понятно) в windows откройте терминал Win+X<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-90.png\" width=\"346\" height=\"556\" alt=\"\" \/>\n<\/div>\n<p>подключитесь к серверу<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-91.png\" width=\"800\" height=\"178.48244620612\" alt=\"\" \/>\n<div class=\"e2-text-caption\">где<\/div>\n<\/div>\n<ul>\n<li>адрес_сервера — это имя или ip адрес вашего сервера<\/li>\n<li>пользователь — это логин администратора сервера (именно дефолтного администратора)<\/li>\n<li>порт — порт, который назначили службе SSH (см. выше)<\/li>\n<\/ul>\n<p>после подключения перейдите в режим администратора (укажите пароль пользователя)<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">sudo -i<\/code><\/pre><p>теперь создаём папку opt и скачиваем скрипты<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">mkdir -m775 \/opt\ncd \/opt\ncurl -O &quot;https:\/\/raw.githubusercontent.com\/007revad\/Synology_HDD_db\/refs\/heads\/main\/syno_hdd_db.sh&quot;\ncurl -O &quot;https:\/\/raw.githubusercontent.com\/007revad\/Synology_HDD_db\/refs\/heads\/main\/syno_hdd_vendor_ids.txt&quot;\nchmod 750 \/opt\/syno_hdd_db.sh<\/code><\/pre><p>выполните скрипт для обновления базы данных дисков<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">\/opt\/syno_hdd_db.sh<\/code><\/pre><p>скрипт сам определит модель сервера, версию DSM, установленные диски и пропишет их в лист совместимости<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/kak-podruzhit-synology-s-neproverennymi-diskami.png\" width=\"527\" height=\"625\" alt=\"\" \/>\n<\/div>\n<p>и практически сразу диски станут «зелёными»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-92.png\" width=\"582\" height=\"645\" alt=\"\" \/>\n<\/div>\n<p>рекомендую запустить «исправление ошибок данных», чтобы всё было идеально<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/kak-podruzhit-synology-s-neproverennymi-diskami-1.png\" width=\"800\" height=\"530.65326633166\" alt=\"\" \/>\n<\/div>\n",
            "date_published": "2025-12-30T12:37:48+03:00",
            "date_modified": "2026-01-19T09:55:13+03:00",
            "tags": [
                "compatibility",
                "disk",
                "DSM",
                "hdd",
                "ssd",
                "SSH",
                "synology",
                "диск",
                "совместимость"
            ],
            "image": "https:\/\/voronin.one\/pictures\/image-87.png",
            "_date_published_rfc2822": "Tue, 30 Dec 2025 12:37:48 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "58",
            "_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:\/\/voronin.one\/pictures\/image-87.png",
                    "https:\/\/voronin.one\/pictures\/image-96.png",
                    "https:\/\/voronin.one\/pictures\/image-88.png",
                    "https:\/\/voronin.one\/pictures\/image-89.png",
                    "https:\/\/voronin.one\/pictures\/image-90.png",
                    "https:\/\/voronin.one\/pictures\/image-91.png",
                    "https:\/\/voronin.one\/pictures\/kak-podruzhit-synology-s-neproverennymi-diskami.png",
                    "https:\/\/voronin.one\/pictures\/image-92.png",
                    "https:\/\/voronin.one\/pictures\/kak-podruzhit-synology-s-neproverennymi-diskami-1.png"
                ]
            }
        },
        {
            "id": "57",
            "url": "https:\/\/voronin.one\/all\/skript-dlya-proverki-validnosti-sertifikata-servera\/",
            "title": "Скрипт для проверки валидности сертификата сервера",
            "content_html": "<p>Обратились коллеги, скину скрин ошибки соединения с teamwork<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-83.png\" width=\"800\" height=\"642.95874822191\" alt=\"\" \/>\n<\/div>\n<p>надо проверить валидность сертификата<\/p>\n<p>собственный тест сервера ошибки не выявил<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-84.png\" width=\"800\" height=\"583.47578347578\" alt=\"\" \/>\n<\/div>\n<p>как и собственный тест менеджера подключений<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-85.png\" width=\"800\" height=\"811.59420289855\" alt=\"\" \/>\n<\/div>\n<p>обратите внимание, все соединения защищены шифрованием ssl<\/p>\n<p>давайте, напишем простой скрипт на bash для тестирования серификата на каждом подключении снаружи<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\">#!\/bin\/bash\n\nHOST=&quot;имя сервера&quot; # Замените на ваш домен\n#PORT=&quot;443&quot;\nPORT=&quot;27001&quot;\nDAYS_THRESHOLD=30 # За сколько дней предупреждать об истечении\n\n# 1. Получаем даты окончания сертификата\n# -connect: Подключаемся к хосту:порту\n# -servername: Указываем SNI (Server Name Indication) для SNI-серверов\n# x509 -noout -dates: Извлекаем даты из сертификата\nEND_DATE_STR=$(openssl s_client -connect $HOST:$PORT -servername $HOST 2&gt;\/dev\/null | openssl x509 -noout -dates | grep &quot;notAfter&quot;)\n\nif [ -z &quot;$END_DATE_STR&quot; ]; then\n    echo &quot;Не удалось получить сертификат или ошибка соединения для $HOST&quot;\n    exit 1\nfi\n\n# Извлекаем дату в формате &#039;notAfter=...&#039;\nEND_DATE=$(echo &quot;$END_DATE_STR&quot; | cut -d &#039;=&#039; -f 2)\n\n# 2. Конвертируем дату в секунды с эпохи Unix\n# date -d: Парсит дату\n# +%s: Выводит в секундах\nEND_TIMESTAMP=$(date -d &quot;$END_DATE&quot; +%s)\nCURRENT_TIMESTAMP=$(date +%s)\n\n# 3. Вычисляем оставшиеся дни\nDAYS_LEFT=$(( (END_TIMESTAMP - CURRENT_TIMESTAMP) \/ 86400 )) # 86400 секунд в дне\n\necho &quot;Сертификат для $HOST действителен до: $END_DATE ($DAYS_LEFT дней осталось)&quot;\n\n# 4. Проверка на истечение срока\nif [ &quot;$DAYS_LEFT&quot; -lt 0 ]; then\n    echo &quot;!!! ВНИМАНИЕ: Сертификат для $HOST истек $((-1 * DAYS_LEFT)) дней назад !!!&quot;\nelif [ &quot;$DAYS_LEFT&quot; -le &quot;$DAYS_THRESHOLD&quot; ]; then\n    echo &quot;!!! ВНИМАНИЕ: Сертификат для $HOST истекает через $DAYS_LEFT дней (менее $DAYS_THRESHOLD) !!!&quot;\nelse\n    echo &quot;Сертификат для $HOST в порядке.&quot;\nfi<\/code><\/pre><p>ну и результат выполнения (проверял 443 и 27001 порты)<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-86.png\" width=\"800\" height=\"57.26872246696\" alt=\"\" \/>\n<\/div>\n",
            "date_published": "2025-12-24T18:35:30+03:00",
            "date_modified": "2025-12-25T08:23:03+03:00",
            "tags": [
                "bash",
                "bimcloud",
                "sertificate",
                "ssl",
                "teamwirk"
            ],
            "image": "https:\/\/voronin.one\/pictures\/image-83.png",
            "_date_published_rfc2822": "Wed, 24 Dec 2025 18:35:30 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "57",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/voronin.one\/pictures\/image-83.png",
                    "https:\/\/voronin.one\/pictures\/image-84.png",
                    "https:\/\/voronin.one\/pictures\/image-85.png",
                    "https:\/\/voronin.one\/pictures\/image-86.png"
                ]
            }
        },
        {
            "id": "56",
            "url": "https:\/\/voronin.one\/all\/traccar-na-synology\/",
            "title": "traccar на synology",
            "content_html": "<p>развернём систему <a href=\"https:\/\/www.traccar.org\/\">traccar<\/a> в Docker Synology<\/p>\n<p>для начала создадим базу данных<br \/>\nдля простоты воспользуемся двумя пакетами MariaDB и phpMyAdmin<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"135\" data-ratio=\"0.98540145985401\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology.png\" width=\"135\" height=\"137\" alt=\"\" \/>\n<img src=\"https:\/\/voronin.one\/pictures\/image-82.png\" width=\"142\" height=\"137\" alt=\"\" \/>\n<\/div>\n<\/div>\n<p>открываем phpMyAdmin и задаём нового пользователя<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-1.png\" width=\"800\" height=\"550.42735042735\" alt=\"\" \/>\n<\/div>\n<p>Заполните поля, имя пользователя лучше сделать уникальным, так будет сложнее взломать сервер. И обязательно поставьте галочку, чтобы создалась база с тем же именем<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-15.png\" width=\"674\" height=\"532\" alt=\"\" \/>\n<\/div>\n<p>отлично, дальше создаём структуру для хранения изменяемых данных<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-4.png\" width=\"530\" height=\"220\" alt=\"\" \/>\n<div class=\"e2-text-caption\">основную папку<\/div>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-3.png\" width=\"670\" height=\"181\" alt=\"\" \/>\n<div class=\"e2-text-caption\">и подпапки<\/div>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-6.png\" width=\"225\" height=\"310\" alt=\"\" \/>\n<\/div>\n<p>не забудьте на основной папке отключить наследование<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-7.png\" width=\"330\" height=\"148\" alt=\"\" \/>\n<\/div>\n<p>и дать права на запись всем<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-8.png\" width=\"736\" height=\"292\" alt=\"\" \/>\n<\/div>\n<p>скачайте с git файл конфигурации <a href=\"https:\/\/github.com\/traccar\/traccar\/blob\/master\/setup\/traccar.xml\">https:\/\/github.com\/traccar\/traccar\/blob\/master\/setup\/traccar.xml<\/a><\/p>\n<p>и отредактируйте конфигурацию подключения к базе данных<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-2.png\" width=\"800\" height=\"264.1056422569\" alt=\"\" \/>\n<\/div>\n<pre class=\"e2-text-code\"><code class=\"\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;!DOCTYPE properties SYSTEM &#039;http:\/\/java.sun.com\/dtd\/properties.dtd&#039;&gt;\n&lt;properties&gt;\n\n    &lt;!-- Documentation: https:\/\/www.traccar.org\/configuration-file\/ --&gt;\n\n    &lt;entry key=&#039;database.driver&#039;&gt;com.mysql.cj.jdbc.Driver&lt;\/entry&gt;\n    &lt;entry key=&#039;database.url&#039;&gt;jdbc:mysql:\/\/ip_of_synology:3306\/traccar_db?serverTimezone=UTC&amp;amp;useSSL=false&amp;amp;allowMultiQueries=true&amp;amp;autoReconnect=true&amp;amp;useUnicode=yes&amp;amp;characterEncoding=UTF-8&amp;amp;sessionVariables=sql_mode=&#039;&#039;&lt;\/entry&gt;\n    &lt;entry key=&#039;database.user&#039;&gt;traccar_db&lt;\/entry&gt;\n    &lt;entry key=&#039;database.password&#039;&gt;password&lt;\/entry&gt;\n\n&lt;\/properties&gt;<\/code><\/pre><p>файл загрузите на сервер synology в папку \/docker\/traccar\/conf<\/p>\n<p>дальше идём в Docker synology и жмём создать проект<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-10.png\" width=\"800\" height=\"325.05263157895\" alt=\"\" \/>\n<\/div>\n<p>заполняем поля<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-11.png\" width=\"745\" height=\"584\" alt=\"\" \/>\n<\/div>\n<p>пишем следующий compose.yaml<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">version: &#039;3&#039;\nservices:\n  traccar:\n    container_name: traccar_latest\n    image: traccar\/traccar:debian\n    volumes:\n      - \/volume1\/docker\/traccar\/conf\/traccar.xml:\/opt\/traccar\/conf\/traccar.xml:rw\n      - \/volume1\/docker\/traccar\/logs:\/opt\/traccar\/logs:rw\n    network_mode: &#039;host&#039;\n    restart: always<\/code><\/pre><p>жмём далее и тут можно было бы сразу создать свой web портал, но приложение использует в работе web интерфейса протокол websocket, а его можно настроить только в «Обратном прокси»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-12.png\" width=\"747\" height=\"587\" alt=\"\" \/>\n<\/div>\n<p>создаём и запускаем<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-13.png\" width=\"749\" height=\"590\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-14.png\" width=\"659\" height=\"424\" alt=\"\" \/>\n<\/div>\n<p>в случае проблем запуска контейнера — смотрите логи docker\/traccar\/logs\/tracker-server.log<\/p>\n<p>дальше осталось настроить «Обратный прокси» и выпустить сертификат<\/p>\n<p>я думаю, вы уже зарегистрировали домен для вашего сервиса<\/p>\n<p>открываем «Панель управления» -> «Дополнительно» -> «Обратный прокси»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-9.png\" width=\"710\" height=\"717\" alt=\"\" \/>\n<\/div>\n<p>создаём правило для вашего домена<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-16.png\" width=\"600\" height=\"565\" alt=\"\" \/>\n<\/div>\n<p>не забудем включить поддержку Websocket<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-17.png\" width=\"605\" height=\"564\" alt=\"\" \/>\n<\/div>\n<p>так же опционально сделаем подключение через ssl<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-18.png\" width=\"606\" height=\"566\" alt=\"\" \/>\n<\/div>\n<p>и Websocket не забываем<\/p>\n<p>остался последний штрих — выпустить Let’s Ecnrypt сертификат<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-19.png\" width=\"800\" height=\"628.36710369487\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"652\" data-ratio=\"1.1833030852995\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-20.png\" width=\"652\" height=\"551\" alt=\"\" \/>\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-21.png\" width=\"655\" height=\"558\" alt=\"\" \/>\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-22.png\" width=\"656\" height=\"556\" alt=\"\" \/>\n<\/div>\n<\/div>\n<p>там же идём в настройки<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-23.png\" width=\"800\" height=\"432.18390804598\" alt=\"\" \/>\n<\/div>\n<p>и назначаем сертификат нашему домену<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/traccar-na-synology-24.png\" width=\"603\" height=\"423\" alt=\"\" \/>\n<\/div>\n",
            "date_published": "2024-06-06T18:16:21+03:00",
            "date_modified": "2024-06-06T18:20:55+03:00",
            "tags": [
                "docker",
                "mariadb",
                "phpMyAdmin",
                "synology",
                "traccar"
            ],
            "image": "https:\/\/voronin.one\/pictures\/traccar-na-synology-5.png",
            "_date_published_rfc2822": "Thu, 06 Jun 2024 18:16:21 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "56",
            "_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:\/\/voronin.one\/pictures\/traccar-na-synology-5.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology.png",
                    "https:\/\/voronin.one\/pictures\/image-82.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-1.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-15.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-4.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-3.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-6.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-7.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-8.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-2.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-10.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-11.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-12.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-13.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-14.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-9.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-16.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-17.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-18.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-19.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-20.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-21.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-22.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-23.png",
                    "https:\/\/voronin.one\/pictures\/traccar-na-synology-24.png"
                ]
            }
        },
        {
            "id": "55",
            "url": "https:\/\/voronin.one\/all\/web-rustdesk-na-synology\/",
            "title": "WEB RustDesk на Synology",
            "content_html": "<p>Если у вас настроен свой сервер ретрансляции в локальной сети, то вы замечали, наверное, что подключение к машинам в LAN происходит великолепно, а вот снаружи не получится.<\/p>\n<p>Есть «костыль», который решит вашу проблему, давайте настроим web сервер для RustDesk, который будет находится в той же сети, что и ретранслятор, и поможет не имея приложения-клиента подключаться к любой машине в LAN.<\/p>\n<p>Воспользуемся Docker на Synology.<\/p>\n<p>Для начала найдём в реестре контейнер <b>rustdesk-web-client<\/b><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-78.png\" width=\"800\" height=\"252.98570227082\" alt=\"\" \/>\n<\/div>\n<p>и скачаем его<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-79.png\" width=\"800\" height=\"329.62298025135\" alt=\"\" \/>\n<\/div>\n<p>после скачивания выбираем «Запустить»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-80.png\" width=\"800\" height=\"406.21266427718\" alt=\"\" \/>\n<\/div>\n<p>пробросим 5000 порт на 35000, чтобы не конфликтовал с  synology<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/web-rustdesk-na-synology.png\" width=\"733\" height=\"571\" alt=\"\" \/>\n<\/div>\n<p>остальное оставляем по-умолчанию<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/web-rustdesk-na-synology-1.png\" width=\"731\" height=\"577\" alt=\"\" \/>\n<\/div>\n<p>теперь просто в браузере открываем на наш synology порт 35000<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/web-rustdesk-na-synology-5.png\" width=\"706\" height=\"476\" alt=\"\" \/>\n<\/div>\n<p>готово<\/p>\n",
            "date_published": "2023-10-03T15:29:40+03:00",
            "date_modified": "2023-10-03T15:29:27+03:00",
            "tags": [
                "RustDesk",
                "synology",
                "web"
            ],
            "image": "https:\/\/voronin.one\/pictures\/image-81.png",
            "_date_published_rfc2822": "Tue, 03 Oct 2023 15:29:40 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "55",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/voronin.one\/pictures\/image-81.png",
                    "https:\/\/voronin.one\/pictures\/web-rustdesk-na-synology-2.png",
                    "https:\/\/voronin.one\/pictures\/web-rustdesk-na-synology-3.png",
                    "https:\/\/voronin.one\/pictures\/web-rustdesk-na-synology-4.png",
                    "https:\/\/voronin.one\/pictures\/image-78.png",
                    "https:\/\/voronin.one\/pictures\/image-79.png",
                    "https:\/\/voronin.one\/pictures\/image-80.png",
                    "https:\/\/voronin.one\/pictures\/web-rustdesk-na-synology.png",
                    "https:\/\/voronin.one\/pictures\/web-rustdesk-na-synology-1.png",
                    "https:\/\/voronin.one\/pictures\/web-rustdesk-na-synology-5.png"
                ]
            }
        },
        {
            "id": "54",
            "url": "https:\/\/voronin.one\/all\/rustdesk-na-synology\/",
            "title": "RustDesk на Synology",
            "content_html": "<p>запустим свой сервер ретрансляции для RustDesk на Synology<\/p>\n<p>за основу взял статью на официальном сайте: <a href=\"https:\/\/rustdesk.com\/docs\/en\/self-host\/rustdesk-server-oss\/docker\/\">https:\/\/rustdesk.com\/docs\/en\/self-host\/rustdesk-server-oss\/docker\/<\/a><\/p>\n<p>нам потребуется создать на компьютере файл <b>docker-compose.yml<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\">version: &#039;3&#039;\n\nservices:\n  hbbs:\n    container_name: hbbs\n    image: rustdesk\/rustdesk-server:latest\n    command: hbbs\n    volumes:\n      - .\/data:\/root\n    network_mode: &quot;host&quot;\n\n    depends_on:\n      - hbbr\n    restart: unless-stopped\n\n\n  hbbr:\n    container_name: hbbr\n    image: rustdesk\/rustdesk-server:latest\n    command: hbbr\n    volumes:\n      - .\/data:\/root\n    network_mode: &quot;host&quot;\n    restart: unless-stopped<\/code><\/pre><p>на Synology создайте папку <b>RustDesk<\/b> в структуре <b>\/volume1\/docker<\/b><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-65.png\" width=\"777\" height=\"411\" alt=\"\" \/>\n<\/div>\n<p>далее в папке <b>RustDesk<\/b> создайте папку <b>data<\/b><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-66.png\" width=\"702\" height=\"324\" alt=\"\" \/>\n<\/div>\n<p>и дайте на неё полные права для записи<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-67.png\" width=\"645\" height=\"260\" alt=\"\" \/>\n<\/div>\n<p>теперь откройте <b>Container Manager<\/b> и нажмите кнопку создать<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-68.png\" width=\"800\" height=\"439.31623931624\" alt=\"\" \/>\n<\/div>\n<p>заполните соответствующие поля и укажите путь к файлу <b>docker-compose.yml<\/b> на компьютере<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-69.png\" width=\"734\" height=\"575\" alt=\"\" \/>\n<\/div>\n<p>настройки веб-портала я пропустил<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-70.png\" width=\"731\" height=\"364\" alt=\"\" \/>\n<\/div>\n<p>создаём и запускаем<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-71.png\" width=\"726\" height=\"568\" alt=\"\" \/>\n<\/div>\n<p>ждём когда скачаются соответствующие образы и сформируются контейнеры<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-72.png\" width=\"636\" height=\"406\" alt=\"\" \/>\n<\/div>\n<p>всё готово и наш проект запустился<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-73.png\" width=\"800\" height=\"291.05058365759\" alt=\"\" \/>\n<\/div>\n<p>внутри него два зависимых контейнера<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-74.png\" width=\"800\" height=\"234.03185247276\" alt=\"\" \/>\n<\/div>\n<p>можно смотреть их свойства, например, журнал сервера<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-75.png\" width=\"800\" height=\"423.09623430962\" alt=\"\" \/>\n<\/div>\n<p>а в папке <b>\/volume1\/docker\/RustDesk<\/b> появился файл <b>compose.yaml<\/b><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-76.png\" width=\"800\" height=\"318.81918819188\" alt=\"\" \/>\n<\/div>\n<p>в папке <b>data<\/b> структура файлов и нужный нам для подключения публичный ключ<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-77.png\" width=\"800\" height=\"343.99008674102\" alt=\"\" \/>\n<\/div>\n<p>готово<\/p>\n<p>PS не забудьте дать доступ к портам вашего synology<\/p>\n<ul>\n<li>TCP (21115, 21116, 21117, 21118, 21119)<\/li>\n<li>UDP (21116)<\/li>\n<\/ul>\n",
            "date_published": "2023-10-03T13:07:38+03:00",
            "date_modified": "2023-10-03T13:06:45+03:00",
            "tags": [
                "docker",
                "RustDesk",
                "synology"
            ],
            "image": "https:\/\/voronin.one\/pictures\/image-65.png",
            "_date_published_rfc2822": "Tue, 03 Oct 2023 13:07:38 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "54",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/voronin.one\/pictures\/image-65.png",
                    "https:\/\/voronin.one\/pictures\/image-66.png",
                    "https:\/\/voronin.one\/pictures\/image-67.png",
                    "https:\/\/voronin.one\/pictures\/image-68.png",
                    "https:\/\/voronin.one\/pictures\/image-69.png",
                    "https:\/\/voronin.one\/pictures\/image-70.png",
                    "https:\/\/voronin.one\/pictures\/image-71.png",
                    "https:\/\/voronin.one\/pictures\/image-72.png",
                    "https:\/\/voronin.one\/pictures\/image-73.png",
                    "https:\/\/voronin.one\/pictures\/image-74.png",
                    "https:\/\/voronin.one\/pictures\/image-75.png",
                    "https:\/\/voronin.one\/pictures\/image-76.png",
                    "https:\/\/voronin.one\/pictures\/image-77.png"
                ]
            }
        },
        {
            "id": "53",
            "url": "https:\/\/voronin.one\/all\/stavim-rustdesk-na-synology\/",
            "title": "Ставим Rustdesk на synology",
            "content_html": "<p>Воспользуемся пакетом «Container manager»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-61.png\" width=\"130\" height=\"106\" alt=\"\" \/>\n<\/div>\n<p>Для вашей простоты я уже подготовил рабочие конфигурации, вам лишь осталось немного подготовить сервер, для этого создайте папку общего доступа <b>RustDesk<\/b>. Все настройки безопасности по-умолчанию.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-62.png\" width=\"605\" height=\"447\" alt=\"\" \/>\n<\/div>\n<p>внутри папки общего доступа создадим подпапки, в них будут храниться настройки сервиса<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-63.png\" width=\"156\" height=\"89\" alt=\"\" \/>\n<\/div>\n<p>Затем в «Container manager» найдите и загрузите образ <b>rustdesk\/rustdesk-server<\/b><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-64.png\" width=\"800\" height=\"288.84688090737\" alt=\"\" \/>\n<\/div>\n<p>ну, а теперь самое простое, ниже выкладываю листинги настроенных конфигураций контейнеров<\/p>\n<p>сохраните этот в файл с именем <b>hbbr.json<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\">{\n   &quot;CapAdd&quot; : null,\n   &quot;CapDrop&quot; : null,\n   &quot;cmd&quot; : &quot;hbbr&quot;,\n   &quot;cpu_priority&quot; : 50,\n   &quot;enable_publish_all_ports&quot; : false,\n   &quot;enable_restart_policy&quot; : false,\n   &quot;enable_service_portal&quot; : null,\n   &quot;enabled&quot; : true,\n   &quot;env_variables&quot; : [\n      {\n         &quot;key&quot; : &quot;PATH&quot;,\n         &quot;value&quot; : &quot;\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin&quot;\n      }\n   ],\n   &quot;exporting&quot; : false,\n   &quot;id&quot; : &quot;79ece58ece789b007f88a1940cc2a93737b47eca9de138e4a99d46efa4fa274e&quot;,\n   &quot;image&quot; : &quot;rustdesk\/rustdesk-server:latest&quot;,\n   &quot;is_ddsm&quot; : false,\n   &quot;is_package&quot; : false,\n   &quot;labels&quot; : {\n      &quot;org.opencontainers.image.created&quot; : &quot;2022-09-02T10:46:15.873Z&quot;,\n      &quot;org.opencontainers.image.description&quot; : &quot;RustDesk Server Program&quot;,\n      &quot;org.opencontainers.image.licenses&quot; : &quot;AGPL-3.0&quot;,\n      &quot;org.opencontainers.image.revision&quot; : &quot;4bdc205fca189e2d3e8207d2a68c0dd9c166429d&quot;,\n      &quot;org.opencontainers.image.source&quot; : &quot;https:\/\/github.com\/rustdesk\/rustdesk-server&quot;,\n      &quot;org.opencontainers.image.title&quot; : &quot;rustdesk-server&quot;,\n      &quot;org.opencontainers.image.url&quot; : &quot;https:\/\/github.com\/rustdesk\/rustdesk-server&quot;,\n      &quot;org.opencontainers.image.version&quot; : &quot;1.1.6-1&quot;\n   },\n   &quot;links&quot; : [],\n   &quot;memory_limit&quot; : 0,\n   &quot;name&quot; : &quot;hbbr&quot;,\n   &quot;network&quot; : [\n      {\n         &quot;driver&quot; : &quot;host&quot;,\n         &quot;name&quot; : &quot;host&quot;\n      }\n   ],\n   &quot;network_mode&quot; : &quot;host&quot;,\n   &quot;port_bindings&quot; : [],\n   &quot;privileged&quot; : false,\n   &quot;services&quot; : null,\n   &quot;shortcut&quot; : {\n      &quot;enable_shortcut&quot; : false,\n      &quot;enable_status_page&quot; : false,\n      &quot;enable_web_page&quot; : false,\n      &quot;web_page_url&quot; : &quot;&quot;\n   },\n   &quot;use_host_network&quot; : true,\n   &quot;version&quot; : 2,\n   &quot;volume_bindings&quot; : [\n      {\n         &quot;host_volume_file&quot; : &quot;\/RustDesk\/hbbr&quot;,\n         &quot;is_directory&quot; : true,\n         &quot;mount_point&quot; : &quot;\/root&quot;,\n         &quot;type&quot; : &quot;rw&quot;\n      }\n   ]\n}<\/code><\/pre><p>и второй файл сохраните с именем <b>hbbs.json<\/b> и обязательно отредактируйте, заменив <b>SYNOLOGY_IP<\/b> на ip вашего сервера<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">{\n   &quot;CapAdd&quot; : null,\n   &quot;CapDrop&quot; : null,\n   &quot;cmd&quot; : &quot;hbbs -r SYNOLOGY_IP&quot;,\n   &quot;cpu_priority&quot; : 50,\n   &quot;enable_publish_all_ports&quot; : false,\n   &quot;enable_restart_policy&quot; : false,\n   &quot;enable_service_portal&quot; : null,\n   &quot;enabled&quot; : true,\n   &quot;env_variables&quot; : [\n      {\n         &quot;key&quot; : &quot;PATH&quot;,\n         &quot;value&quot; : &quot;\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin&quot;\n      }\n   ],\n   &quot;exporting&quot; : false,\n   &quot;id&quot; : &quot;5072e615b973f22d24e46b3517cd999ee1a04d317d3dad8c6cc47fb074e16953&quot;,\n   &quot;image&quot; : &quot;rustdesk\/rustdesk-server:latest&quot;,\n   &quot;is_ddsm&quot; : false,\n   &quot;is_package&quot; : false,\n   &quot;labels&quot; : {\n      &quot;org.opencontainers.image.created&quot; : &quot;2022-09-02T10:46:15.873Z&quot;,\n      &quot;org.opencontainers.image.description&quot; : &quot;RustDesk Server Program&quot;,\n      &quot;org.opencontainers.image.licenses&quot; : &quot;AGPL-3.0&quot;,\n      &quot;org.opencontainers.image.revision&quot; : &quot;4bdc205fca189e2d3e8207d2a68c0dd9c166429d&quot;,\n      &quot;org.opencontainers.image.source&quot; : &quot;https:\/\/github.com\/rustdesk\/rustdesk-server&quot;,\n      &quot;org.opencontainers.image.title&quot; : &quot;rustdesk-server&quot;,\n      &quot;org.opencontainers.image.url&quot; : &quot;https:\/\/github.com\/rustdesk\/rustdesk-server&quot;,\n      &quot;org.opencontainers.image.version&quot; : &quot;1.1.6-1&quot;\n   },\n   &quot;links&quot; : [],\n   &quot;memory_limit&quot; : 0,\n   &quot;name&quot; : &quot;hbbs&quot;,\n   &quot;network&quot; : [\n      {\n         &quot;driver&quot; : &quot;host&quot;,\n         &quot;name&quot; : &quot;host&quot;\n      }\n   ],\n   &quot;network_mode&quot; : &quot;host&quot;,\n   &quot;port_bindings&quot; : [],\n   &quot;privileged&quot; : false,\n   &quot;services&quot; : null,\n   &quot;shortcut&quot; : {\n      &quot;enable_shortcut&quot; : false,\n      &quot;enable_status_page&quot; : false,\n      &quot;enable_web_page&quot; : false,\n      &quot;web_page_url&quot; : &quot;&quot;\n   },\n   &quot;use_host_network&quot; : true,\n   &quot;version&quot; : 2,\n   &quot;volume_bindings&quot; : [\n      {\n         &quot;host_volume_file&quot; : &quot;\/RustDesk\/hbbs&quot;,\n         &quot;is_directory&quot; : true,\n         &quot;mount_point&quot; : &quot;\/root&quot;,\n         &quot;type&quot; : &quot;rw&quot;\n      }\n   ]\n}<\/code><\/pre><p>далее идём в «Container manager» -> Контейнер -> Импорт -> С локального устройства<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/stavim-rustdesk-na-synology.png\" width=\"800\" height=\"383.38945005612\" alt=\"\" \/>\n<\/div>\n<p>и выбираем по очереди наши json файлы<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/stavim-rustdesk-na-synology-1.png\" width=\"636\" height=\"199\" alt=\"\" \/>\n<\/div>\n<p>после того, как мы их импортировали — можно запускать «Действие» -> «Пуск»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/stavim-rustdesk-na-synology-2.png\" width=\"475\" height=\"163\" alt=\"\" \/>\n<\/div>\n<p>теперь идём в Журнал контейнера hbbs и ищем запись, куда сохранён публичный ключ<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/stavim-rustdesk-na-synology-3.png\" width=\"800\" height=\"356.74769488684\" alt=\"\" \/>\n<\/div>\n<p>файл лежит в папке, которую мы делали выше<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/stavim-rustdesk-na-synology-4.png\" width=\"800\" height=\"242.61555806088\" alt=\"\" \/>\n<\/div>\n<p>готово! все молодцы.<\/p>\n",
            "date_published": "2023-08-09T14:19:05+03:00",
            "date_modified": "2023-08-09T14:42:58+03:00",
            "tags": [
                "Container manager",
                "docker",
                "RustDesk",
                "synology"
            ],
            "image": "https:\/\/voronin.one\/pictures\/image-61.png",
            "_date_published_rfc2822": "Wed, 09 Aug 2023 14:19:05 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "53",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/voronin.one\/pictures\/image-61.png",
                    "https:\/\/voronin.one\/pictures\/image-62.png",
                    "https:\/\/voronin.one\/pictures\/image-63.png",
                    "https:\/\/voronin.one\/pictures\/image-64.png",
                    "https:\/\/voronin.one\/pictures\/stavim-rustdesk-na-synology.png",
                    "https:\/\/voronin.one\/pictures\/stavim-rustdesk-na-synology-1.png",
                    "https:\/\/voronin.one\/pictures\/stavim-rustdesk-na-synology-2.png",
                    "https:\/\/voronin.one\/pictures\/stavim-rustdesk-na-synology-3.png",
                    "https:\/\/voronin.one\/pictures\/stavim-rustdesk-na-synology-4.png"
                ]
            }
        },
        {
            "id": "52",
            "url": "https:\/\/voronin.one\/all\/zamena-vlozheniya-v-pochtovom-soobschenii\/",
            "title": "замена вложения в почтовом сообщении",
            "content_html": "<p>действуем в несколько этапов:<\/p>\n<ul>\n<li>подключаем к нашей почте клиент Thunderbird<\/li>\n<li>устанавливаем расширение ImportExportTools NG<\/li>\n<li>загружаем письмо на локальный компьютер<\/li>\n<li>редактируем содержимое письма<\/li>\n<li>загружаем обратно письмо на сервер<\/li>\n<\/ul>\n<p>первый пункт я пропущу, т. к. для этого есть официальные инструкции (не важно какой у вас почтовый сервер)<\/p>\n<p>для того, чтобы установить расширение, нажмите Alt и в меню выберите «Инструменты» -> «Дополнения и темы»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-45.png\" width=\"602\" height=\"335\" alt=\"\" \/>\n<\/div>\n<p>через поиск найдите расширение <b>ImportExportTools NG<\/b> и установите его<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-46.png\" width=\"800\" height=\"369.23076923077\" alt=\"\" \/>\n<\/div>\n<p>далее мы получаем сообщение с вложением (роза)<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-47.png\" width=\"800\" height=\"482.10180623974\" alt=\"\" \/>\n<\/div>\n<p>далее скачиваем письмо в формате eml<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-48.png\" width=\"629\" height=\"698\" alt=\"\" \/>\n<\/div>\n<p>если пользуетесь windows — то проще воспользоваться Total Commander и Notepad++, если другая платформа — пишите в комментарии, я дополню инструкцию<\/p>\n<p>получаем такой файл<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-49.png\" width=\"412\" height=\"123\" alt=\"\" \/>\n<\/div>\n<p>готовим документ, на который нам надо заменить исходный, кодируем его в формат base64<br \/>\nотметьте файл для кодирования и в меню выберите «Кодировать (MIME, UUE, XXE)...»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-50.png\" width=\"421\" height=\"437\" alt=\"\" \/>\n<\/div>\n<p>кодируем в ту же папку, выбрав формат «MIME (Base64)»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-51.png\" width=\"407\" height=\"172\" alt=\"\" \/>\n<\/div>\n<p>был файл «.jpeg», стал «.b64»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-52.png\" width=\"405\" height=\"94\" alt=\"\" \/>\n<\/div>\n<p>открываем файл в редакторе Notepad++ и копируем кодированную часть сообщения, пропуская технический заголовок (с 6 строки и до конца)<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-53.png\" width=\"697\" height=\"616\" alt=\"\" \/>\n<\/div>\n<p>теперь открываем для редактирования файл eml, если видите ошибку при открытии — завершите Thunderbird<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-54.png\" width=\"373\" height=\"151\" alt=\"\" \/>\n<\/div>\n<p>закодированные вложения хранятся в конце письма, т. к. изначально почтовый протокол поддерживал передачу только текста, то и бинарные файлы кодируются в текст, обратите внимание:<br \/>\n1 — разделитель<br \/>\n2 — служебный заголовок вложения<br \/>\n3 — само тело вложения<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-55.png\" width=\"693\" height=\"843\" alt=\"\" \/>\n<\/div>\n<p>нам надо заменить само тело вложения, не затрагиваем заголовки и разделитель<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-56.png\" width=\"699\" height=\"700\" alt=\"\" \/>\n<\/div>\n<p>после замены, уберите из атрибутов (в заголовке вложения) размер файла, он изменился, по понятным причинам, а почтовую программу не будем смущать, просто удалите строку<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-57.png\" width=\"701\" height=\"536\" alt=\"\" \/>\n<\/div>\n<p>сохраните письмо!<br \/>\nосталось загрузить его обратно н сервер<\/p>\n<p>правый клик на папке «Входящие» -> «ImportExportTools NG» -> «Импортировать файл eml»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-58.png\" width=\"800\" height=\"515.49609810479\" alt=\"\" \/>\n<\/div>\n<p>загружаем наше отредактированное письмо и мы получаем два идентичных письма во «Входящих»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-59.png\" width=\"800\" height=\"576.47058823529\" alt=\"\" \/>\n<div class=\"e2-text-caption\">одно с розой (обратите внимание на объем сложения)<\/div>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-60.png\" width=\"800\" height=\"548.21052631579\" alt=\"\" \/>\n<div class=\"e2-text-caption\">второе с зимнем цветком<\/div>\n<\/div>\n<p>даже имена вложенных файлов остались идентичны<\/p>\n<p>это самый надёжный способ замены вложения в существующем письме<\/p>\n",
            "date_published": "2023-07-31T19:29:26+03:00",
            "date_modified": "2023-08-01T09:29:34+03:00",
            "tags": [
                "attach",
                "eml",
                "ImportExportTools NG",
                "notepad++",
                "Thunderbird",
                "total commander"
            ],
            "image": "https:\/\/voronin.one\/pictures\/image-45.png",
            "_date_published_rfc2822": "Mon, 31 Jul 2023 19:29:26 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "52",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/voronin.one\/pictures\/image-45.png",
                    "https:\/\/voronin.one\/pictures\/image-46.png",
                    "https:\/\/voronin.one\/pictures\/image-47.png",
                    "https:\/\/voronin.one\/pictures\/image-48.png",
                    "https:\/\/voronin.one\/pictures\/image-49.png",
                    "https:\/\/voronin.one\/pictures\/image-50.png",
                    "https:\/\/voronin.one\/pictures\/image-51.png",
                    "https:\/\/voronin.one\/pictures\/image-52.png",
                    "https:\/\/voronin.one\/pictures\/image-53.png",
                    "https:\/\/voronin.one\/pictures\/image-54.png",
                    "https:\/\/voronin.one\/pictures\/image-55.png",
                    "https:\/\/voronin.one\/pictures\/image-56.png",
                    "https:\/\/voronin.one\/pictures\/image-57.png",
                    "https:\/\/voronin.one\/pictures\/image-58.png",
                    "https:\/\/voronin.one\/pictures\/image-59.png",
                    "https:\/\/voronin.one\/pictures\/image-60.png"
                ]
            }
        },
        {
            "id": "50",
            "url": "https:\/\/voronin.one\/all\/cherny-i-bely-spisok-dlya-postfix\/",
            "title": "черный и белый список для postfix",
            "content_html": "<p>Делаем черный и белый список для postfix.<\/p>\n<p>создаем файл <b>\/etc\/postfix\/rbl_override<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo mcedit \/etc\/postfix\/rbl_override<\/code><\/pre><p>пишем в него, узлы, которые хотим исключить из проверки<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">1.2.3.4 OK\n1.2.3.5 OK\nmail.freemailer.tld OK<\/code><\/pre><p>преобразуем<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo postmap \/etc\/postfix\/rbl_override<\/code><\/pre><p>осталось подключить к нашей системе, для этого отредактируем <b>\/etc\/postfix\/main.c<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo mcedit \/etc\/postfix\/main.cf<\/code><\/pre><p>находим раздел <b>smtpd_recipient_restrictions<\/b> и добавляем <b>check_client_access hash:\/etc\/postfix\/rbl_override<\/b> после <b>reject_unauth_destination<\/b><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-43.png\" width=\"445\" height=\"176\" alt=\"\" \/>\n<\/div>\n<p>теперь просто перегружаем службу postfix<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo service postfix restart<\/code><\/pre>",
            "date_published": "2023-06-29T14:09:04+03:00",
            "date_modified": "2023-06-29T14:08:52+03:00",
            "tags": [
                "iRedMail",
                "postfix"
            ],
            "image": "https:\/\/voronin.one\/pictures\/image-43.png",
            "_date_published_rfc2822": "Thu, 29 Jun 2023 14:09:04 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "50",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/voronin.one\/pictures\/image-43.png"
                ]
            }
        },
        {
            "id": "48",
            "url": "https:\/\/voronin.one\/all\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk\/",
            "title": "proxmox, настраиваем резервирование на внешний USB диск",
            "content_html": "<p>С целью защиты своих данных, я придумал бэкапить виртуальные машины на внешний жесткий диск. Для этого был приобретён seagate на 4Тб.<\/p>\n<p>Давайте познакомим его с нашим proxmox. После подключения переходим через web интерфейс и убеждаемся видит ли его система.<\/p>\n<p>Откроем наш PVE сервер, раздел Disks<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-2.png\" width=\"410\" height=\"481\" alt=\"\" \/>\n<\/div>\n<p>Обновим список устройств и увидим диск с типом USB<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-11.png\" width=\"800\" height=\"253.43855693348\" alt=\"\" \/>\n<\/div>\n<p>Почему наш диск <b>\/dev\/sda<\/b>, поинтересуетесь вы, да потому что первый диск NVMe подключен через m.2 разъем<\/p>\n<p>Для начала очистим диск от заводских разметок<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk.png\" width=\"771\" height=\"218\" alt=\"\" \/>\n<\/div>\n<p>Затем проведём инициализацию<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-1.png\" width=\"765\" height=\"205\" alt=\"\" \/>\n<\/div>\n<p>Теперь перейдём в раздел Directory и создадим новую директорию<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-3.png\" width=\"438\" height=\"361\" alt=\"\" \/>\n<\/div>\n<p>Выберем наш диск <b>\/dev\/sda<\/b>, укажем файловую систему <b>ext4<\/b>, название директории <b>backup<\/b> и не забудем галочку «Add storage»<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-4.png\" width=\"327\" height=\"233\" alt=\"\" \/>\n<\/div>\n<p>Когда задача будет выполнена — идём в <b>Datacenter<\/b> и выбираем <b>Storage<\/b><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-5.png\" width=\"407\" height=\"286\" alt=\"\" \/>\n<\/div>\n<p>В списке доступных хранений будет наша директория на диске USB<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-6.png\" width=\"800\" height=\"162.29327453142\" alt=\"\" \/>\n<\/div>\n<p>Откроем свойства и убедимся, что у нас в списке доступных функций есть <b>VZDump backup file<\/b><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-7.png\" width=\"622\" height=\"328\" alt=\"\" \/>\n<\/div>\n<p>Теперь можно настроить ротацию хранения, например хранить 5 последних копий<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-8.png\" width=\"620\" height=\"332\" alt=\"\" \/>\n<\/div>\n<p>В том же разделе <b>Datacenter<\/b> перейдём в <b>Backup<\/b> и добавим новую задачу<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-9.png\" width=\"327\" height=\"263\" alt=\"\" \/>\n<\/div>\n<p>Укажем наш PVE сервер, хранилище <b>backup<\/b>, расписание «ежедневно в 4:30», все виртуальные машины, в режиме <b>Snapshot<\/b>, с уведомлением на почту в случае ошибки<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-10.png\" width=\"594\" height=\"234\" alt=\"\" \/>\n<\/div>\n<p>Готово! Вы молодцы.<\/p>\n",
            "date_published": "2023-06-28T17:44:12+03:00",
            "date_modified": "2023-06-28T17:43:48+03:00",
            "tags": [
                "ext4",
                "proxmox",
                "usb",
                "резервное копирование"
            ],
            "image": "https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-2.png",
            "_date_published_rfc2822": "Wed, 28 Jun 2023 17:44:12 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "48",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-2.png",
                    "https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-11.png",
                    "https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk.png",
                    "https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-1.png",
                    "https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-3.png",
                    "https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-4.png",
                    "https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-5.png",
                    "https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-6.png",
                    "https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-7.png",
                    "https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-8.png",
                    "https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-9.png",
                    "https:\/\/voronin.one\/pictures\/proxmox-nastraivaem-rezervirovanie-na-vneshniy-usb-disk-10.png"
                ]
            }
        },
        {
            "id": "47",
            "url": "https:\/\/voronin.one\/all\/perenosim-bazu-spamassassin-bayes-v-mysql\/",
            "title": "переносим базу SpamAssassin bayes в MySQL",
            "content_html": "<p>для начала проверим версию SpamAssassin<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">$ sudo spamassassin -V\nSpamAssassin version 3.4.6\n  running on Perl version 5.32.1<\/code><\/pre><p>в нашем случае это 3.4.6<\/p>\n<p>теперь качаем нужный файл со структурой mysql<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">$ cd ~\n$ wget http:\/\/svn.apache.org\/repos\/asf\/spamassassin\/tags\/spamassassin_release_3_4_6\/sql\/bayes_mysql.sql<\/code><\/pre><p>подключаемся к движку базы и загружаем структуру<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">$ mysql -uroot -p\nMariaDB [(none)]&gt; CREATE DATABASE sa_bayes;\nMariaDB [(none)]&gt; USE sa_bayes;\nMariaDB [(none)]&gt; SOURCE ~\/bayes_mysql.sql;<\/code><\/pre><p>создадим пользователя <b>sa_user<\/b> с паролем <b>Pa$$W0rd<\/b> (замените на свой) и правами на нашу базу<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">MariaDB [(none)]&gt; GRANT SELECT, INSERT, UPDATE, DELETE ON sa_bayes.* TO sa_user@localhost IDENTIFIED BY &#039;Pa$$W0rd&#039;;\nMariaDB [(none)]&gt; FLUSH PRIVILEGES;\nMariaDB [sa_bayes]&gt; quit;<\/code><\/pre><p>отредактируем конфиг <b>\/etc\/mail\/spamassassin\/local.cf<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\">use_bayes          1\nbayes_auto_learn   1\nbayes_auto_expire  1\n\n# Store bayesian data in MySQL.\n# Please make sure you have correct server address, port and database name.\nbayes_store_module Mail::SpamAssassin::BayesStore::MySQL\nbayes_sql_dsn      DBI:mysql:sa_bayes:127.0.0.1:3306\n\n# Store bayesian data in PostgreSQL.\n# Please make sure you have correct server address, port and database name.\n#bayes_store_module Mail::SpamAssassin::BayesStore::PgSQL\n#bayes_sql_dsn      DBI:Pg:database=sa_bayes;host=127.0.0.1;port=5432\n\n# SQL username and password.\nbayes_sql_username sa_user\nbayes_sql_password Pa$$W0rd\n\n# Override the username used for storing data in the database.\n# This could be used to group users together to share bayesian filter data.\n# You can also use this config option to trick sa-learn to learn data as a specific user.\n#bayes_sql_override_username vmail\nbayes_sql_override_username amavis<\/code><\/pre><p>рестартим службу<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">$ sudo service amavis restart<\/code><\/pre><p>проверяем, скармливаем тестовое сообщение<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">$ sa-learn --spam --username=amavis \/usr\/share\/doc\/spamassassin\/examples\/sample-spam.txt\nLearned tokens from 1 message(s) (1 message(s) examined)<\/code><\/pre><p>и проверим наполняемость базы<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">$ mysql -uroot -p\nMariaDB [(none)]&gt; USE sa_bayes;\nMariaDB [sa_bayes]&gt; SELECT username,spam_count,ham_count FROM bayes_vars;\n+----------+------------+-----------+\n| username | spam_count | ham_count |\n+----------+------------+-----------+\n| amavis   |          1 |         1 |\n+----------+------------+-----------+\n1 row in set (0,000 sec)\nMariaDB [sa_bayes]&gt; quit;<\/code><\/pre><p>и не забудьте отредактировать файл резервирования <b>\/var\/vmail\/backup\/backup_mysql.sh<\/b>, чтобы добавить и нашу базу<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># Databases we should backup.\n# Multiple databases MUST be seperated by SPACE.\nexport DATABASES=&#039;mysql vmail roundcubemail amavisd iredadmin sogo iredapd sa_bayes&#039;<\/code><\/pre><p>PS мне скрипт резервирования не пришлось менять, там уже быза бала прописана<\/p>\n",
            "date_published": "2023-06-13T17:59:28+03:00",
            "date_modified": "2023-06-15T16:04:56+03:00",
            "tags": [
                "bayes",
                "iRedMail",
                "MySQL",
                "SpamAssassin"
            ],
            "_date_published_rfc2822": "Tue, 13 Jun 2023 17:59:28 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "47",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "46",
            "url": "https:\/\/voronin.one\/all\/iredmail-i-roundcube\/",
            "title": "iRedMail и Roundcube",
            "content_html": "<p>После установки и настройки iRedMail мы получаем удобный почтовый клиент Roundcube.<\/p>\n<p>Давайте немного его улучшим для работы.<\/p>\n<h2>установим необходимые компоненты и обновим существующие модули<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">sudo apt install composer php-ldap\n\ncd \/opt\/www\/roundcubemail\nsudo composer update<\/code><\/pre><h2>установим и включим контекстное меню<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">sudo composer require johndoh\/contextmenu<\/code><\/pre><div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/iredmail-i-roundcube-1.png\" width=\"407\" height=\"294\" alt=\"\" \/>\n<\/div>\n<h2>установим и включим календарь<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">sudo composer require kolab\/calendar<\/code><\/pre><div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/iredmail-i-roundcube.png\" width=\"800\" height=\"364.08163265306\" alt=\"\" \/>\n<\/div>\n<p>отредактируем файл с конфигурацией Roundcube <b>\/opt\/www\/roundcubemail\/config\/config.inc.php<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\">\/\/ PLUGINS\n$config[&#039;plugins&#039;] = [\n        &#039;managesieve&#039;,\n        &#039;password&#039;,\n        &#039;zipdownload&#039;,\n        &#039;acl&#039;,\n        &#039;markasjunk&#039;,\n        &#039;contextmenu&#039;,\n        &#039;libkolab&#039;,\n        &#039;libcalendaring&#039;,\n        &#039;calendar&#039;,\n];<\/code><\/pre><p>убедитесь, что у вас в списке плагинов есть <b>’acl’<\/b> и <b>’markasjunk’<\/b>, первый отвечает за расшаривание почтовых папок, второй за манипуляции со СПАМ сообщениями.<\/p>\n<h2>включим возможность отмечать сообщения как СПАМ<\/h2>\n<p>отредактируем файл с конфигурацией ’markasjunk’ <b>\/opt\/www\/roundcubemail\/plugins\/markasjunk\/config.inc.php<\/b><br \/>\nи укажем следующие значения для параметров:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">$config[&#039;markasjunk2_learning_driver&#039;] = &#039;cmd_learn&#039;;\n$config[&#039;markasjunk2_spam_cmd&#039;] = &#039;\/usr\/bin\/sa-learn --spam --username=amavis %f&#039;;\n$config[&#039;markasjunk2_ham_cmd&#039;] = &#039;\/usr\/bin\/sa-learn --ham --spam --username=amavis %f&#039;;<\/code><\/pre><div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/Screenshot_20230530_171451.png\" width=\"274\" height=\"56\" alt=\"\" \/>\n<\/div>\n<p>PS не забудьте разрешить php исполнение внешних команд, для этого отредактируйте файл <b>\/etc\/php\/7.4\/fpm\/php.ini<\/b><\/p>\n<p>и удалите в параметре <b>disable_functions<\/b> значение <b>shell_exec<\/b><\/p>\n<pre class=\"e2-text-code\"><code class=\"\">disable_functions = posix_uname,eval,pcntl_wexitstatus,posix_getpwuid,xmlrpc_entity_decode,pcntl_wifstopped,pcntl_wifexited,pcntl_wifsignaled,phpAds_XmlRpc,pcntl_strerror,ftp_exec,pcntl_wtermsig,mysql_pconnect,proc_nice,pcntl_sigtimedwait,posix_kill,pcntl_sigprocmask,fput,phpinfo,system,phpAds_remoteInfo,ftp_login,inject_code,posix_mkfifo,highlight_file,escapeshellcmd,show_source,pcntl_wifcontinued,fp,pcntl_alarm,pcntl_wait,ini_alter,posix_setpgid,parse_ini_file,ftp_raw,pcntl_waitpid,pcntl_getpriority,ftp_connect,pcntl_signal_dispatch,pcntl_wstopsig,ini_restore,ftp_put,passthru,proc_terminate,posix_setsid,pcntl_signal,pcntl_setpriority,phpAds_xmlrpcEncode,pcntl_exec,ftp_nb_fput,ftp_get,phpAds_xmlrpcDecode,pcntl_sigwaitinfo,pcntl_get_last_error,ftp_rawlist,pcntl_fork,posix_setuid<\/code><\/pre><p>ну и перезапустим php<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo service php7.4-fpm restart<\/code><\/pre><p>Более полный список расширений вы сможете найти по ссылке: <a href=\"https:\/\/packagist.org\/?type=roundcube-plugin\">https:\/\/packagist.org\/?type=roundcube-plugin<\/a><\/p>\n",
            "date_published": "2023-05-30T17:16:55+03:00",
            "date_modified": "2023-06-13T18:33:00+03:00",
            "tags": [
                "acl",
                "calendar",
                "composer",
                "contextmenu",
                "iRedMail",
                "markasjunk",
                "Roundcube"
            ],
            "image": "https:\/\/voronin.one\/pictures\/iredmail-i-roundcube-1.png",
            "_date_published_rfc2822": "Tue, 30 May 2023 17:16:55 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "46",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/voronin.one\/pictures\/iredmail-i-roundcube-1.png",
                    "https:\/\/voronin.one\/pictures\/iredmail-i-roundcube.png",
                    "https:\/\/voronin.one\/pictures\/Screenshot_20230530_171451.png"
                ]
            }
        },
        {
            "id": "45",
            "url": "https:\/\/voronin.one\/all\/fedora-i-drayvery-nvidia\/",
            "title": "Fedora и драйверы Nvidia",
            "content_html": "<p>Когда вы попробуете установить драйверы, скаченные с официального сервера Nvidia, вам сообщат, что инсталляция возможна только с отключенной графической оболочкой.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/voronin.one\/pictures\/image-40.png\" width=\"735\" height=\"481\" alt=\"\" \/>\n<\/div>\n<p>Как запустить систему без Иксов, установить видеодрайвер и опять вернуться к графической оболочке?<\/p>\n<p>всё просто (отключаем графику)<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl set-default multi-user.target\nsudo reboot<\/code><\/pre><p>логинимся в терминале и устанавливаем драйверы<\/p>\n<p>возвращаем всё обратно<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl set-default graphical.target\nsudo reboot<\/code><\/pre>",
            "date_published": "2023-05-19T10:42:44+03:00",
            "date_modified": "2023-05-19T10:42:28+03:00",
            "tags": [
                "Fedora",
                "Gnome",
                "Nvidia"
            ],
            "image": "https:\/\/voronin.one\/pictures\/image-40.png",
            "_date_published_rfc2822": "Fri, 19 May 2023 10:42:44 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "45",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/voronin.one\/pictures\/image-40.png"
                ]
            }
        },
        {
            "id": "44",
            "url": "https:\/\/voronin.one\/all\/obnovlyaem-clamav-na-territorii-rf\/",
            "title": "Обновляем clamav на территории РФ",
            "content_html": "<p>Есть проблемы с антивирусом clamav на территории РФ, после первоначальной установки он у вас просто не запустится, т. к. не сможет обновить свои базы, как решить?<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo mcedit \/etc\/clamav\/freshclam.conf<\/code><\/pre><p>редактируем конец файла, указав зеркало «pivotal-clamav-mirror.s3.amazonaws.com»<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">Checks 24\n#DatabaseMirror db.local.clamav.net\n#DatabaseMirror database.clamav.net\nDatabaseMirror pivotal-clamav-mirror.s3.amazonaws.com<\/code><\/pre><p>удалим старый файл с данными об обновлении баз<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo rm \/var\/lib\/clamav\/freshclam.dat<\/code><\/pre><p>останавливаем службу обновления антивируса<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl stop clamav-freshclam.service<\/code><\/pre><p>запускаем обновление баз вручную<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo freshclam<\/code><\/pre><p>запускаем службу обновления антивируса<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl start clamav-freshclam.service<\/code><\/pre>",
            "date_published": "2023-05-03T13:20:54+03:00",
            "date_modified": "2023-05-03T13:20:50+03:00",
            "tags": [
                "clamav"
            ],
            "_date_published_rfc2822": "Wed, 03 May 2023 13:20:54 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "44",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "43",
            "url": "https:\/\/voronin.one\/all\/uvelichivaem-razmer-prinimaemogo-soobscheniya-v-iredmail\/",
            "title": "Увеличиваем размер принимаемого сообщения в iRedMail",
            "content_html": "<p>Увеличим размер почтового сообщения до 35Мб<\/p>\n<p>меняем настройки postfix<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">postconf -e message_size_limit=36700160\npostconf -e mailbox_size_limit=36700160<\/code><\/pre><p>перечитываем изменения службой postfix<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl reload postfix<\/code><\/pre><p>редактируем php.ini<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo mcedit \/etc\/php\/7.4\/fpm\/php.ini<\/code><\/pre><p>ищем переменные и меняем значения на нужные нам<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">memory_limit = 256M;\nupload_max_filesize = 35M;\npost_max_size = 37M;<\/code><\/pre><p>рестартим php<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl restart php7.4-fpm<\/code><\/pre><p>редактируем конфиг roundcube<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo mcedit \/opt\/www\/roundcubemail\/config\/config.inc.php<\/code><\/pre><p>ищем настройку максимального размера сообщения и меняем значение<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">$config[&#039;max_message_size&#039;] = &#039;35M&#039;;<\/code><\/pre><p>редактируем конфиг nginx<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo mcedit \/etc\/nginx\/conf-enabled\/client_max_body_size.conf<\/code><\/pre><p>ищем переменную и меняем значение на своё<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">client_max_body_size 100m;<\/code><\/pre><p>проверяем правильность конфига<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo nginx -t<\/code><\/pre><p>перечитываем изменения службой nginx<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl reload nginx<\/code><\/pre>",
            "date_published": "2023-05-03T13:18:44+03:00",
            "date_modified": "2023-05-03T13:18:40+03:00",
            "tags": [
                "iRedMail",
                "nginx",
                "php",
                "postfix",
                "Roundcube"
            ],
            "_date_published_rfc2822": "Wed, 03 May 2023 13:18:44 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "43",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "42",
            "url": "https:\/\/voronin.one\/all\/vypuskaem-sertifikat-lets-encrypt-i-nastraivaem-avtomaticheskiy\/",
            "title": "Выпускаем сертификат Let’s encrypt и настраиваем автоматический перевыпуск в iRedMail",
            "content_html": "<p>устанавливаем certbot<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo apt update\nsudo apt install certbot<\/code><\/pre><p>запрашиваем новый сертификат для домена mail.{domain}.ru<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo certbot certonly --webroot --agree-tos --email postmaster@{domain}.ru -d mail.{domain}.ru -w \/var\/www\/html\/<\/code><\/pre><p>открываем конфиги nginx и если нужно вносим изменения, сначала для http<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo mcedit \/etc\/nginx\/sites-enabled\/00-default.conf<\/code><\/pre><p>убедились, чтобы эти поля были раскомментированы<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">enable listen [::]:80;<\/code><\/pre><p>затем для https<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo mcedit \/etc\/nginx\/sites-enabled\/00-default-ssl.conf<\/code><\/pre><p>убедились, чтобы эти поля были раскомментированы<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">add listen [::]:443 ssl http2;<\/code><\/pre><p>проверяем правильность конфига<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo nginx -t<\/code><\/pre><p>перечитываем изменения службой nginx<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl reload nginx<\/code><\/pre><p>редактируем поти к сертификатам, самоподписанные меняем на let’s encrypt<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo mcedit \/etc\/nginx\/templates\/ssl.tmpl<\/code><\/pre><p>находим<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">ssl_certificate \/etc\/ssl\/certs\/iRedMail.crt;\nssl_certificate_key \/etc\/ssl\/private\/iRedMail.key;<\/code><\/pre><p>меняем на это<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">ssl_certificate \/etc\/letsencrypt\/live\/mail.{domain}.ru\/fullchain.pem;\nssl_certificate_key \/etc\/letsencrypt\/live\/mail.{domain}.ru\/privkey.pem;<\/code><\/pre><p>проверяем правильность конфига<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo nginx -t<\/code><\/pre><p>перечитываем изменения службой nginx<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl reload nginx<\/code><\/pre><p>правим кофиг postfix<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo mcedit \/etc\/postfix\/main.cf<\/code><\/pre><p>находим<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">smtpd_tls_key_file = \/etc\/ssl\/private\/iRedMail.key\nsmtpd_tls_cert_file = \/etc\/ssl\/certs\/iRedMail.crt\nsmtpd_tls_CAfile = \/etc\/ssl\/certs\/iRedMail.crt<\/code><\/pre><p>заменяем<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">smtpd_tls_key_file = \/etc\/letsencrypt\/live\/mail.{domain}.ru\/privkey.pem\nsmtpd_tls_cert_file = \/etc\/letsencrypt\/live\/mail.{domain}.ru\/cert.pem\nsmtpd_tls_CAfile = \/etc\/letsencrypt\/live\/mail.{domain}.ru\/chain.pem<\/code><\/pre><p>перечитываем изменения службой postfix<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl reload postfix<\/code><\/pre><p>правим другой кофиг postfix, указываем на необходимость использования tls<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo mcedit \/etc\/postfix\/master.cf<\/code><\/pre><p>добавляем<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">465     inet  n       -       n       -       -       smtpd\n  -o syslog_name=postfix\/smtps\n  -o smtpd_tls_wrappermode=yes\n  -o smtpd_sasl_auth_enable=yes\n  -o smtpd_client_restrictions=permit_sasl_authenticated,reject\n  -o content_filter=smtp-amavis:[127.0.0.1]:10026<\/code><\/pre><p>перечитываем изменения службой postfix<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl reload postfix<\/code><\/pre><p>правим конфиг dovecot<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo mcedit \/etc\/dovecot\/dovecot.conf<\/code><\/pre><p>находим<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">ssl_cert = &lt;\/etc\/ssl\/certs\/iRedMail.crt\nssl_key = &lt;\/etc\/ssl\/private\/iRedMail.key<\/code><\/pre><p>заменяем<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">ssl_cert = &lt;\/etc\/letsencrypt\/live\/mail.{domain}.ru\/fullchain.pem\nssl_key = &lt;\/etc\/letsencrypt\/live\/mail.{domain}.ru\/privkey.pem<\/code><\/pre><p>перечитываем изменения службой dovecot<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo systemctl reload dovecot<\/code><\/pre><p>осталось добавить в ротацию перевыпуск сертификата, для этого редактируем crontab<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo crontab -e<\/code><\/pre><p>add<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># перевыпуск сертификатов Let&#039;s Encrypt\n43 3 9 * * \/usr\/bin\/certbot renew --post-hook &quot;\/usr\/bin\/systemctl reload nginx; \/usr\/bin\/systemctl reload dovecot; \/usr\/bin\/systemctl reload postfix&quot;\n45 3 9 * * \/usr\/sbin\/service nginx reload\n46 3 9 * * \/usr\/sbin\/service postfix reload\n47 3 9 * * \/usr\/sbin\/service dovecot reload<\/code><\/pre><p>не забудьте оставить пустую строку в конце (такие требования синтаксиса crontab)<\/p>\n",
            "date_published": "2023-05-03T13:16:05+03:00",
            "date_modified": "2023-05-03T13:15:52+03:00",
            "tags": [
                "certbot",
                "iRedMail",
                "Let’s encrypt"
            ],
            "_date_published_rfc2822": "Wed, 03 May 2023 13:16:05 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "42",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "41",
            "url": "https:\/\/voronin.one\/all\/otklyuchaem-protokol-pop3-iredmail\/",
            "title": "Отключаем протокол pop3 iRedMail",
            "content_html": "<p>Редактируем конфиг dovecot<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo mcedit \/etc\/dovecot\/dovecot.conf<\/code><\/pre><p>меняем<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># Enabled mail protocols.\nprotocols = pop3 imap sieve lmtp<\/code><\/pre><p>на<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># Enabled mail protocols.\nprotocols = imap sieve lmtp<\/code><\/pre><p>перезапускаем dovecot<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo service dovecot restart<\/code><\/pre>",
            "date_published": "2023-05-03T13:13:34+03:00",
            "date_modified": "2023-05-03T13:13:30+03:00",
            "tags": [
                "dovecot",
                "iRedMail",
                "pop3"
            ],
            "_date_published_rfc2822": "Wed, 03 May 2023 13:13:34 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "41",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "40",
            "url": "https:\/\/voronin.one\/all\/cistema-indeksacii-lucene-dlya-dovecot-debian\/",
            "title": "Cистема индексации lucene для Dovecot (debian)",
            "content_html": "<p>Крайне рекомендую установить систему индексации lucene, когда ваших писем перевалит за 10 тыс., вы вспомните меня добрым словом 😉<\/p>\n<p>установим из репозиториев<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo apt update\nsudo apt install dovecot-lucene<\/code><\/pre><p>теперь редактируем конфиг dovecot<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo mcedit \/etc\/dovecot\/dovecot.conf<\/code><\/pre><p>ищем<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">mail_plugins = quota mailbox_alias acl mail_log notify<\/code><\/pre><p>меняем на<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">mail_plugins = quota mailbox_alias acl mail_log notify fts fts_lucene<\/code><\/pre><p>ищем<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">plugin {\n    # Quota configuration.\n    # Reference: http:\/\/wiki2.dovecot.org\/Quota\/Configuration\n    quota = dict:user::proxy::quotadict<\/code><\/pre><p>меняем на<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">plugin {\n    fts = lucene\n    fts_lucene = whitespace_chars=@. normalize default_language=russian\n    fts_autoindex = yes\n\n    # Quota configuration.\n    # Reference: http:\/\/wiki2.dovecot.org\/Quota\/Configuration\n    quota = dict:user::proxy::quotadict<\/code><\/pre><p>осталось только перезапустить dovecot<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo service dovecot restart<\/code><\/pre>",
            "date_published": "2023-05-03T13:10:17+03:00",
            "date_modified": "2023-05-03T17:58:18+03:00",
            "tags": [
                "Debian",
                "dovecot",
                "iRedMail",
                "lucene"
            ],
            "_date_published_rfc2822": "Wed, 03 May 2023 13:10:17 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "40",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 4171,
    "_e2_ua_string": "Aegea 11.4 (v4171)"
}