<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Воронин: заметки с тегом docker</title>
<link>https://voronin.one/tags/docker/</link>
<description>воронин, voronin, it</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.4 (v4171)</generator>

<itunes:subtitle>воронин, voronin, it</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>MatrixRTC сервер на базе Synology</title>
<guid isPermaLink="false">60</guid>
<link>https://voronin.one/all/matrixrtc-server-na-baze-synology/</link>
<pubDate>Mon, 30 Mar 2026 16:33:28 +0300</pubDate>
<author></author>
<comments>https://voronin.one/all/matrixrtc-server-na-baze-synology/</comments>
<description>
&lt;p&gt;развернём свой matrix сервер используя средства synology&lt;/p&gt;
&lt;p&gt;для начала подготовим папки, где будят хранится настройки сервера и база PostgreSQL&lt;br /&gt;
в каталоге &lt;b&gt;docker&lt;/b&gt; создал папку &lt;b&gt;matrix&lt;/b&gt; а в ней уже &lt;b&gt;data&lt;/b&gt; и &lt;b&gt;db&lt;/b&gt; соответственно&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-97.png" width="800" height="298.67947178872" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;так же нам нужно получить id пользователя и группы, &lt;a href="https://voronin.one/all/kak-poluchit-id-polzovatelya-i-gruppy-v-synology/"&gt;uid и gid&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;затем идём в «Панель управления» -&gt; «Планировщик задач» -&gt; «Создать» -&gt; «Запланированная задача» -&gt; «Скрипт, созданный пользователем»&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-98.png" width="800" height="472.72727272727" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;создаём задачу «MATRIX», указываем пользователя «root» и обязательно отключаем&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-99.png" width="532" height="581" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;в расписание обязательно «не повторять»&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-100.png" width="532" height="581" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;и пишем скрипт для запуска, нам нужно запустить его один раз для создания структуры&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-101.png" width="531" height="582" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;сам скрипт:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash
docker run --rm \
--user 1026:100 \
-v /volume1/docker/matrix/data:/data \
-e SYNAPSE_CONFIG_PATH=/data/homeserver.yaml \
-e SYNAPSE_SERVER_NAME=matrixchat \
-e SYNAPSE_REPORT_STATS=yes \&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;в скрипт подставляем «user 1026:100» uid и gid &lt;a href="https://voronin.one/all/kak-poluchit-id-polzovatelya-i-gruppy-v-synology/"&gt;полученные выше&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;после того как создали задачу, выбираем её в списке и жмём «выполнить», вам потребуется указать пароль текущего пользователя и он должен быть с правами администратора&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-111.png" width="590" height="152" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;теперь готовим файл &lt;b&gt;compose.yaml&lt;/b&gt; следующего содержимого&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;services:
  synapse-db:
    image: postgres:16
    container_name: Synapse-DB
    hostname: synapse-db
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: [&amp;quot;CMD&amp;quot;, &amp;quot;pg_isready&amp;quot;, &amp;quot;-q&amp;quot;, &amp;quot;-d&amp;quot;, &amp;quot;synapsedb&amp;quot;, &amp;quot;-U&amp;quot;, &amp;quot;synapseuser&amp;quot;]
      timeout: 45s
      interval: 10s
      retries: 10
    volumes:
      - /volume1/docker/matrix/db:/var/lib/postgresql/data:rw
    environment:
      - POSTGRES_DB=synapsedb
      - POSTGRES_USER=synapseuser
      - POSTGRES_PASSWORD=synapsepass
      - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C
    restart: on-failure:5

  synapse:
    image: matrixdotorg/synapse:latest
    container_name: Synapse
    hostname: synapse
    security_opt:
      - no-new-privileges:true
    user: 1026:100
    environment:
      - TZ=Europe/Moscow
      - SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
    volumes:
      - /volume1/docker/matrix/data:/data:rw
    ports:
      - 8450:8008/tcp
    restart: on-failure:5
    depends_on:
      synapse-db:
        condition: service_started&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;обратите внимание, что пусти &lt;b&gt;/volume1/docker/matrix/db&lt;/b&gt; и &lt;b&gt;/volume1/docker/matrix/data&lt;/b&gt; должны вести на папки, созданные выше&lt;/p&gt;
&lt;p&gt;идём в &lt;b&gt;Container manager&lt;/b&gt;, &lt;b&gt;Проект&lt;/b&gt; и жмём «создать»&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-113.png" width="800" height="333.26063249727" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;даём название проекту, указываем путь к нашей папке &lt;b&gt;matrix&lt;/b&gt; и выбираем с компьютера файл &lt;b&gt;compose.yaml&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;настройки web портала не трогаем, мы будем настраивать обратный прокси&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-114.png" width="740" height="578" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;запускаем&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-115.png" width="741" height="578" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;ждём старта проекта&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-116.png" width="800" height="503" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;теперь надо остановить проект и отредактировать файл конфигурации нашего сервера&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-112.png" width="800" height="333.22314049587" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;добавляем следующие параметры после названия сервера&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;enable_registration: true
enable_registration_without_verification: true
enable_group_creation: true&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-119.png" width="797" height="454" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;теперь меняем параметры базы данных, заменим следующие строчки&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;database:
  name: sqlite3
  args:
    database: /data/homeserver.db&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-120.png" width="417" height="88" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;на&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;database:
  name: psycopg2
  args:
    user: synapseuser
    password: synapsepass
    database: synapsedb
    host: synapse-db
    cp_min: 5
    cp_max: 10&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-121.png" width="521" height="165" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;при редактировании файла конфигурации важно не ошибиться в отступах&lt;/p&gt;
&lt;p&gt;настраиваем обратный прокси&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-122.png" width="689" height="442" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;создаём новую запись, указываем имя нашего сервера, например «im.server.ru», порт 443, обязательно включаем HSTS и порт нашего контейнера 8450&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-123.png" width="604" height="563" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;создаём заголовки под websocket&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-124.png" width="603" height="561" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;выпускаем сертификат для нашего сервера&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-125.png" width="800" height="312.59418729817" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="652" data-ratio="1.1790235081374"&gt;
&lt;img src="https://voronin.one/pictures/image-126.png" width="652" height="553" alt="" /&gt;
&lt;img src="https://voronin.one/pictures/image-127.png" width="650" height="552" alt="" /&gt;
&lt;img src="https://voronin.one/pictures/image-128.png" width="653" height="550" alt="" /&gt;
&lt;img src="https://voronin.one/pictures/image-129.png" width="650" height="550" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;идём в настройки и назначаем сертификат домену&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-130.png" width="795" height="342" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-131.png" width="600" height="419" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;осталось скачать клиент и подключиться к серверу&lt;br /&gt;
&lt;a href="https://element.io/download"&gt;https://element.io/download&lt;/a&gt;&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-132.png" width="800" height="619.53125" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;жмём «редактировать» чтобы сменить сервер на наш&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-133.png" width="800" height="625.54027504912" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-134.png" width="800" height="621.7008797654" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;создаём новую учётную запись&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-137.png" width="800" height="617.25490196078" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;мы вошли&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-136.png" width="800" height="622.48289345064" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;поздравляю&lt;/p&gt;
</description>
</item>

<item>
<title>traccar на synology</title>
<guid isPermaLink="false">56</guid>
<link>https://voronin.one/all/traccar-na-synology/</link>
<pubDate>Thu, 06 Jun 2024 18:16:21 +0300</pubDate>
<author></author>
<comments>https://voronin.one/all/traccar-na-synology/</comments>
<description>
&lt;p&gt;развернём систему &lt;a href="https://www.traccar.org/"&gt;traccar&lt;/a&gt; в Docker Synology&lt;/p&gt;
&lt;p&gt;для начала создадим базу данных&lt;br /&gt;
для простоты воспользуемся двумя пакетами MariaDB и phpMyAdmin&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="135" data-ratio="0.98540145985401"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology.png" width="135" height="137" alt="" /&gt;
&lt;img src="https://voronin.one/pictures/image-82.png" width="142" height="137" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;открываем phpMyAdmin и задаём нового пользователя&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-1.png" width="800" height="550.42735042735" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Заполните поля, имя пользователя лучше сделать уникальным, так будет сложнее взломать сервер. И обязательно поставьте галочку, чтобы создалась база с тем же именем&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-15.png" width="674" height="532" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;отлично, дальше создаём структуру для хранения изменяемых данных&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-4.png" width="530" height="220" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;основную папку&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-3.png" width="670" height="181" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;и подпапки&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-6.png" width="225" height="310" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;не забудьте на основной папке отключить наследование&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-7.png" width="330" height="148" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;и дать права на запись всем&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-8.png" width="736" height="292" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;скачайте с git файл конфигурации &lt;a href="https://github.com/traccar/traccar/blob/master/setup/traccar.xml"&gt;https://github.com/traccar/traccar/blob/master/setup/traccar.xml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;и отредактируйте конфигурацию подключения к базе данных&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-2.png" width="800" height="264.1056422569" alt="" /&gt;
&lt;/div&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;!DOCTYPE properties SYSTEM &amp;#039;http://java.sun.com/dtd/properties.dtd&amp;#039;&amp;gt;
&amp;lt;properties&amp;gt;

    &amp;lt;!-- Documentation: https://www.traccar.org/configuration-file/ --&amp;gt;

    &amp;lt;entry key=&amp;#039;database.driver&amp;#039;&amp;gt;com.mysql.cj.jdbc.Driver&amp;lt;/entry&amp;gt;
    &amp;lt;entry key=&amp;#039;database.url&amp;#039;&amp;gt;jdbc:mysql://ip_of_synology:3306/traccar_db?serverTimezone=UTC&amp;amp;amp;useSSL=false&amp;amp;amp;allowMultiQueries=true&amp;amp;amp;autoReconnect=true&amp;amp;amp;useUnicode=yes&amp;amp;amp;characterEncoding=UTF-8&amp;amp;amp;sessionVariables=sql_mode=&amp;#039;&amp;#039;&amp;lt;/entry&amp;gt;
    &amp;lt;entry key=&amp;#039;database.user&amp;#039;&amp;gt;traccar_db&amp;lt;/entry&amp;gt;
    &amp;lt;entry key=&amp;#039;database.password&amp;#039;&amp;gt;password&amp;lt;/entry&amp;gt;

&amp;lt;/properties&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;файл загрузите на сервер synology в папку /docker/traccar/conf&lt;/p&gt;
&lt;p&gt;дальше идём в Docker synology и жмём создать проект&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-10.png" width="800" height="325.05263157895" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;заполняем поля&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-11.png" width="745" height="584" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;пишем следующий compose.yaml&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;version: &amp;#039;3&amp;#039;
services:
  traccar:
    container_name: traccar_latest
    image: traccar/traccar:debian
    volumes:
      - /volume1/docker/traccar/conf/traccar.xml:/opt/traccar/conf/traccar.xml:rw
      - /volume1/docker/traccar/logs:/opt/traccar/logs:rw
    network_mode: &amp;#039;host&amp;#039;
    restart: always&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;жмём далее и тут можно было бы сразу создать свой web портал, но приложение использует в работе web интерфейса протокол websocket, а его можно настроить только в «Обратном прокси»&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-12.png" width="747" height="587" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;создаём и запускаем&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-13.png" width="749" height="590" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-14.png" width="659" height="424" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;в случае проблем запуска контейнера — смотрите логи docker/traccar/logs/tracker-server.log&lt;/p&gt;
&lt;p&gt;дальше осталось настроить «Обратный прокси» и выпустить сертификат&lt;/p&gt;
&lt;p&gt;я думаю, вы уже зарегистрировали домен для вашего сервиса&lt;/p&gt;
&lt;p&gt;открываем «Панель управления» -&gt; «Дополнительно» -&gt; «Обратный прокси»&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-9.png" width="710" height="717" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;создаём правило для вашего домена&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-16.png" width="600" height="565" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;не забудем включить поддержку Websocket&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-17.png" width="605" height="564" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;так же опционально сделаем подключение через ssl&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-18.png" width="606" height="566" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;и Websocket не забываем&lt;/p&gt;
&lt;p&gt;остался последний штрих — выпустить Let’s Ecnrypt сертификат&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-19.png" width="800" height="628.36710369487" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="652" data-ratio="1.1833030852995"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-20.png" width="652" height="551" alt="" /&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-21.png" width="655" height="558" alt="" /&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-22.png" width="656" height="556" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;там же идём в настройки&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-23.png" width="800" height="432.18390804598" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;и назначаем сертификат нашему домену&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/traccar-na-synology-24.png" width="603" height="423" alt="" /&gt;
&lt;/div&gt;
</description>
</item>

<item>
<title>RustDesk на Synology</title>
<guid isPermaLink="false">54</guid>
<link>https://voronin.one/all/rustdesk-na-synology/</link>
<pubDate>Tue, 03 Oct 2023 13:07:38 +0300</pubDate>
<author></author>
<comments>https://voronin.one/all/rustdesk-na-synology/</comments>
<description>
&lt;p&gt;запустим свой сервер ретрансляции для RustDesk на Synology&lt;/p&gt;
&lt;p&gt;за основу взял статью на официальном сайте: &lt;a href="https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/docker/"&gt;https://rustdesk.com/docs/en/self-host/rustdesk-server-oss/docker/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;нам потребуется создать на компьютере файл &lt;b&gt;docker-compose.yml&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;version: &amp;#039;3&amp;#039;

services:
  hbbs:
    container_name: hbbs
    image: rustdesk/rustdesk-server:latest
    command: hbbs
    volumes:
      - ./data:/root
    network_mode: &amp;quot;host&amp;quot;

    depends_on:
      - hbbr
    restart: unless-stopped


  hbbr:
    container_name: hbbr
    image: rustdesk/rustdesk-server:latest
    command: hbbr
    volumes:
      - ./data:/root
    network_mode: &amp;quot;host&amp;quot;
    restart: unless-stopped&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;на Synology создайте папку &lt;b&gt;RustDesk&lt;/b&gt; в структуре &lt;b&gt;/volume1/docker&lt;/b&gt;&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-65.png" width="777" height="411" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;далее в папке &lt;b&gt;RustDesk&lt;/b&gt; создайте папку &lt;b&gt;data&lt;/b&gt;&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-66.png" width="702" height="324" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;и дайте на неё полные права для записи&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-67.png" width="645" height="260" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;теперь откройте &lt;b&gt;Container Manager&lt;/b&gt; и нажмите кнопку создать&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-68.png" width="800" height="439.31623931624" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;заполните соответствующие поля и укажите путь к файлу &lt;b&gt;docker-compose.yml&lt;/b&gt; на компьютере&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-69.png" width="734" height="575" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;настройки веб-портала я пропустил&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-70.png" width="731" height="364" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;создаём и запускаем&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-71.png" width="726" height="568" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;ждём когда скачаются соответствующие образы и сформируются контейнеры&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-72.png" width="636" height="406" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;всё готово и наш проект запустился&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-73.png" width="800" height="291.05058365759" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;внутри него два зависимых контейнера&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-74.png" width="800" height="234.03185247276" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;можно смотреть их свойства, например, журнал сервера&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-75.png" width="800" height="423.09623430962" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;а в папке &lt;b&gt;/volume1/docker/RustDesk&lt;/b&gt; появился файл &lt;b&gt;compose.yaml&lt;/b&gt;&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-76.png" width="800" height="318.81918819188" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;в папке &lt;b&gt;data&lt;/b&gt; структура файлов и нужный нам для подключения публичный ключ&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-77.png" width="800" height="343.99008674102" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;готово&lt;/p&gt;
&lt;p&gt;PS не забудьте дать доступ к портам вашего synology&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TCP (21115, 21116, 21117, 21118, 21119)&lt;/li&gt;
&lt;li&gt;UDP (21116)&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>

<item>
<title>Ставим Rustdesk на synology</title>
<guid isPermaLink="false">53</guid>
<link>https://voronin.one/all/stavim-rustdesk-na-synology/</link>
<pubDate>Wed, 09 Aug 2023 14:19:05 +0300</pubDate>
<author></author>
<comments>https://voronin.one/all/stavim-rustdesk-na-synology/</comments>
<description>
&lt;p&gt;Воспользуемся пакетом «Container manager»&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-61.png" width="130" height="106" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Для вашей простоты я уже подготовил рабочие конфигурации, вам лишь осталось немного подготовить сервер, для этого создайте папку общего доступа &lt;b&gt;RustDesk&lt;/b&gt;. Все настройки безопасности по-умолчанию.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-62.png" width="605" height="447" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;внутри папки общего доступа создадим подпапки, в них будут храниться настройки сервиса&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-63.png" width="156" height="89" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Затем в «Container manager» найдите и загрузите образ &lt;b&gt;rustdesk/rustdesk-server&lt;/b&gt;&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-64.png" width="800" height="288.84688090737" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;ну, а теперь самое простое, ниже выкладываю листинги настроенных конфигураций контейнеров&lt;/p&gt;
&lt;p&gt;сохраните этот в файл с именем &lt;b&gt;hbbr.json&lt;/b&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;{
   &amp;quot;CapAdd&amp;quot; : null,
   &amp;quot;CapDrop&amp;quot; : null,
   &amp;quot;cmd&amp;quot; : &amp;quot;hbbr&amp;quot;,
   &amp;quot;cpu_priority&amp;quot; : 50,
   &amp;quot;enable_publish_all_ports&amp;quot; : false,
   &amp;quot;enable_restart_policy&amp;quot; : false,
   &amp;quot;enable_service_portal&amp;quot; : null,
   &amp;quot;enabled&amp;quot; : true,
   &amp;quot;env_variables&amp;quot; : [
      {
         &amp;quot;key&amp;quot; : &amp;quot;PATH&amp;quot;,
         &amp;quot;value&amp;quot; : &amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;
      }
   ],
   &amp;quot;exporting&amp;quot; : false,
   &amp;quot;id&amp;quot; : &amp;quot;79ece58ece789b007f88a1940cc2a93737b47eca9de138e4a99d46efa4fa274e&amp;quot;,
   &amp;quot;image&amp;quot; : &amp;quot;rustdesk/rustdesk-server:latest&amp;quot;,
   &amp;quot;is_ddsm&amp;quot; : false,
   &amp;quot;is_package&amp;quot; : false,
   &amp;quot;labels&amp;quot; : {
      &amp;quot;org.opencontainers.image.created&amp;quot; : &amp;quot;2022-09-02T10:46:15.873Z&amp;quot;,
      &amp;quot;org.opencontainers.image.description&amp;quot; : &amp;quot;RustDesk Server Program&amp;quot;,
      &amp;quot;org.opencontainers.image.licenses&amp;quot; : &amp;quot;AGPL-3.0&amp;quot;,
      &amp;quot;org.opencontainers.image.revision&amp;quot; : &amp;quot;4bdc205fca189e2d3e8207d2a68c0dd9c166429d&amp;quot;,
      &amp;quot;org.opencontainers.image.source&amp;quot; : &amp;quot;https://github.com/rustdesk/rustdesk-server&amp;quot;,
      &amp;quot;org.opencontainers.image.title&amp;quot; : &amp;quot;rustdesk-server&amp;quot;,
      &amp;quot;org.opencontainers.image.url&amp;quot; : &amp;quot;https://github.com/rustdesk/rustdesk-server&amp;quot;,
      &amp;quot;org.opencontainers.image.version&amp;quot; : &amp;quot;1.1.6-1&amp;quot;
   },
   &amp;quot;links&amp;quot; : [],
   &amp;quot;memory_limit&amp;quot; : 0,
   &amp;quot;name&amp;quot; : &amp;quot;hbbr&amp;quot;,
   &amp;quot;network&amp;quot; : [
      {
         &amp;quot;driver&amp;quot; : &amp;quot;host&amp;quot;,
         &amp;quot;name&amp;quot; : &amp;quot;host&amp;quot;
      }
   ],
   &amp;quot;network_mode&amp;quot; : &amp;quot;host&amp;quot;,
   &amp;quot;port_bindings&amp;quot; : [],
   &amp;quot;privileged&amp;quot; : false,
   &amp;quot;services&amp;quot; : null,
   &amp;quot;shortcut&amp;quot; : {
      &amp;quot;enable_shortcut&amp;quot; : false,
      &amp;quot;enable_status_page&amp;quot; : false,
      &amp;quot;enable_web_page&amp;quot; : false,
      &amp;quot;web_page_url&amp;quot; : &amp;quot;&amp;quot;
   },
   &amp;quot;use_host_network&amp;quot; : true,
   &amp;quot;version&amp;quot; : 2,
   &amp;quot;volume_bindings&amp;quot; : [
      {
         &amp;quot;host_volume_file&amp;quot; : &amp;quot;/RustDesk/hbbr&amp;quot;,
         &amp;quot;is_directory&amp;quot; : true,
         &amp;quot;mount_point&amp;quot; : &amp;quot;/root&amp;quot;,
         &amp;quot;type&amp;quot; : &amp;quot;rw&amp;quot;
      }
   ]
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;и второй файл сохраните с именем &lt;b&gt;hbbs.json&lt;/b&gt; и обязательно отредактируйте, заменив &lt;b&gt;SYNOLOGY_IP&lt;/b&gt; на ip вашего сервера&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;{
   &amp;quot;CapAdd&amp;quot; : null,
   &amp;quot;CapDrop&amp;quot; : null,
   &amp;quot;cmd&amp;quot; : &amp;quot;hbbs -r SYNOLOGY_IP&amp;quot;,
   &amp;quot;cpu_priority&amp;quot; : 50,
   &amp;quot;enable_publish_all_ports&amp;quot; : false,
   &amp;quot;enable_restart_policy&amp;quot; : false,
   &amp;quot;enable_service_portal&amp;quot; : null,
   &amp;quot;enabled&amp;quot; : true,
   &amp;quot;env_variables&amp;quot; : [
      {
         &amp;quot;key&amp;quot; : &amp;quot;PATH&amp;quot;,
         &amp;quot;value&amp;quot; : &amp;quot;/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;quot;
      }
   ],
   &amp;quot;exporting&amp;quot; : false,
   &amp;quot;id&amp;quot; : &amp;quot;5072e615b973f22d24e46b3517cd999ee1a04d317d3dad8c6cc47fb074e16953&amp;quot;,
   &amp;quot;image&amp;quot; : &amp;quot;rustdesk/rustdesk-server:latest&amp;quot;,
   &amp;quot;is_ddsm&amp;quot; : false,
   &amp;quot;is_package&amp;quot; : false,
   &amp;quot;labels&amp;quot; : {
      &amp;quot;org.opencontainers.image.created&amp;quot; : &amp;quot;2022-09-02T10:46:15.873Z&amp;quot;,
      &amp;quot;org.opencontainers.image.description&amp;quot; : &amp;quot;RustDesk Server Program&amp;quot;,
      &amp;quot;org.opencontainers.image.licenses&amp;quot; : &amp;quot;AGPL-3.0&amp;quot;,
      &amp;quot;org.opencontainers.image.revision&amp;quot; : &amp;quot;4bdc205fca189e2d3e8207d2a68c0dd9c166429d&amp;quot;,
      &amp;quot;org.opencontainers.image.source&amp;quot; : &amp;quot;https://github.com/rustdesk/rustdesk-server&amp;quot;,
      &amp;quot;org.opencontainers.image.title&amp;quot; : &amp;quot;rustdesk-server&amp;quot;,
      &amp;quot;org.opencontainers.image.url&amp;quot; : &amp;quot;https://github.com/rustdesk/rustdesk-server&amp;quot;,
      &amp;quot;org.opencontainers.image.version&amp;quot; : &amp;quot;1.1.6-1&amp;quot;
   },
   &amp;quot;links&amp;quot; : [],
   &amp;quot;memory_limit&amp;quot; : 0,
   &amp;quot;name&amp;quot; : &amp;quot;hbbs&amp;quot;,
   &amp;quot;network&amp;quot; : [
      {
         &amp;quot;driver&amp;quot; : &amp;quot;host&amp;quot;,
         &amp;quot;name&amp;quot; : &amp;quot;host&amp;quot;
      }
   ],
   &amp;quot;network_mode&amp;quot; : &amp;quot;host&amp;quot;,
   &amp;quot;port_bindings&amp;quot; : [],
   &amp;quot;privileged&amp;quot; : false,
   &amp;quot;services&amp;quot; : null,
   &amp;quot;shortcut&amp;quot; : {
      &amp;quot;enable_shortcut&amp;quot; : false,
      &amp;quot;enable_status_page&amp;quot; : false,
      &amp;quot;enable_web_page&amp;quot; : false,
      &amp;quot;web_page_url&amp;quot; : &amp;quot;&amp;quot;
   },
   &amp;quot;use_host_network&amp;quot; : true,
   &amp;quot;version&amp;quot; : 2,
   &amp;quot;volume_bindings&amp;quot; : [
      {
         &amp;quot;host_volume_file&amp;quot; : &amp;quot;/RustDesk/hbbs&amp;quot;,
         &amp;quot;is_directory&amp;quot; : true,
         &amp;quot;mount_point&amp;quot; : &amp;quot;/root&amp;quot;,
         &amp;quot;type&amp;quot; : &amp;quot;rw&amp;quot;
      }
   ]
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;далее идём в «Container manager» -&gt; Контейнер -&gt; Импорт -&gt; С локального устройства&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/stavim-rustdesk-na-synology.png" width="800" height="383.38945005612" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;и выбираем по очереди наши json файлы&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/stavim-rustdesk-na-synology-1.png" width="636" height="199" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;после того, как мы их импортировали — можно запускать «Действие» -&gt; «Пуск»&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/stavim-rustdesk-na-synology-2.png" width="475" height="163" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;теперь идём в Журнал контейнера hbbs и ищем запись, куда сохранён публичный ключ&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/stavim-rustdesk-na-synology-3.png" width="800" height="356.74769488684" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;файл лежит в папке, которую мы делали выше&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/stavim-rustdesk-na-synology-4.png" width="800" height="242.61555806088" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;готово! все молодцы.&lt;/p&gt;
</description>
</item>

<item>
<title>Своё хранилище паролей</title>
<guid isPermaLink="false">34</guid>
<link>https://voronin.one/all/svoyo-hranilische-paroley/</link>
<pubDate>Tue, 15 Nov 2022 13:26:27 +0300</pubDate>
<author></author>
<comments>https://voronin.one/all/svoyo-hranilische-paroley/</comments>
<description>
&lt;p&gt;Многие из нас хранят свои пароли в браузерах, android-устройствах и т. д. Но, насколько это удобно? переключаясь между девайсами вым приходится вспоминать логины/пароли от разных ресурсов, программ и т. д. А хранимые пароли достигают в количестве сотни штук. Как же всё упорядочить и при этом хранить в надёжном месте?&lt;/p&gt;
&lt;p&gt;Для меня самое надёжное — это личный сервер. Да, я доверяю только себе.&lt;/p&gt;
&lt;p&gt;Итак, в текущих реалиях не так много вариантов для централизованного хранения, и, на мой взгляд, самым лучшим и удобным является &lt;a href="https://github.com/dani-garcia/vaultwarden"&gt;Bitwarden_RS&lt;/a&gt;, это форк коммерческого решения Bitwarden.&lt;/p&gt;
&lt;p&gt;Инструкция по установке простейшая, используем Docker.&lt;/p&gt;
&lt;p&gt;Я буду устанавливать в свой Synology, установка занимает не более 10 минут&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/svoyo-hranilische-paroley.png" width="800" height="109.76744186047" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;находим нужный образ в репозитории&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/image-24.png" width="800" height="256.58914728682" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;я использовал отдельную папку для хранения внешних данных образа&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;далее настраиваем проброс TCP портов и папки для данных&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/svoyo-hranilische-paroley-1.png" width="627" height="251" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;80 порт я транслировал в 8080 (т. к. у synology 80 занят), а 3012 websocket в 3012&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/svoyo-hranilische-paroley-2.png" width="624" height="202" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;ну а папку data в локальную папку&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;после создания и запуска в Журнале увидите что-то подобное:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/svoyo-hranilische-paroley-3.png" width="735" height="371" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Теперь не забудем создать свой домен, выпустить ssl сертификат для этого домена и настроить обратный прокси.&lt;/p&gt;
&lt;p&gt;после регистрации домена, например key.domain.ru идём в Панель управления и настраиваем обратный прокси&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/svoyo-hranilische-paroley-4.png" width="560" height="409" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="574" data-ratio="1.1810699588477"&gt;
&lt;img src="https://voronin.one/pictures/svoyo-hranilische-paroley-5.png" width="574" height="486" alt="" /&gt;
&lt;img src="https://voronin.one/pictures/image-26.png" width="574" height="486" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-caption"&gt;правило для подключения с ssl и без него&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Теперь создаём сертификат, идём в панель управления и создаем новый сертификат&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/svoyo-hranilische-paroley-7.png" width="800" height="212.12121212121" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;затем идём в настройки и назначаем выпущенный сертификат нашему обратному прокси&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/svoyo-hranilische-paroley-6.png" width="667" height="572" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;теперь можно подключаться к web-интерфейсу сервера через интернет по протоколу https&lt;/p&gt;
&lt;p&gt;регистрируем свой первый аккаунт и пользуемся&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/svoyo-hranilische-paroley-8.png" width="442" height="636" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Так же рекомендую использовать приложения/плагины для браузера, которые доступны тут: &lt;a href="https://bitwarden.com/download/"&gt;https://bitwarden.com/download/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;после установки плагина или приложения, не забудьте зайти в настройки и указать свой сервер, на примере плагина для firefox&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/svoyo-hranilische-paroley-9.png" width="368" height="424" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/svoyo-hranilische-paroley-10.png" width="375" height="212" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/svoyo-hranilische-paroley-11.png" width="375" height="264" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;После установки и настройки приложения для Android не забудьте зайти в настройки системы и выбрать для автозаполнения Bitwarden&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="296" data-ratio="0.46177847113885"&gt;
&lt;img src="https://voronin.one/pictures/android_1.jpg" width="296" height="641" alt="" /&gt;
&lt;img src="https://voronin.one/pictures/android_2.jpg" width="296" height="641" alt="" /&gt;
&lt;img src="https://voronin.one/pictures/android_3.jpg" width="296" height="641" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Система удобная, но насколько надёжная?&lt;/p&gt;
&lt;p&gt;со стороны сервера данных хранятся в SQLite базе&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/svoyo-hranilische-paroley-12.png" width="770" height="292" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;посмотрим что внутри&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/svoyo-hranilische-paroley-13.png" width="800" height="292.48197734295" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;данные пользовательских учёток зашифрованы&lt;/div&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://voronin.one/pictures/svoyo-hranilische-paroley-14.png" width="800" height="285.59670781893" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;сохранённые пароли тоже зашифрованы&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;ну, а исходники утилиты вы сами можете проверить на github: &lt;a href="https://github.com/dani-garcia/vaultwarden"&gt;https://github.com/dani-garcia/vaultwarden&lt;/a&gt;&lt;/p&gt;
</description>
</item>


</channel>
</rss>