<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Postgresql on DevOps-инженер &amp; CloudAdmin</title><link>https://ru-admin.github.io/ru/tags/postgresql/</link><description>Recent content in Postgresql on DevOps-инженер &amp; CloudAdmin</description><generator>Hugo -- gohugo.io</generator><language>ru-RU</language><atom:link href="https://ru-admin.github.io/ru/tags/postgresql/index.xml" rel="self" type="application/rss+xml"/><item><title>CI/CD и инфраструктура для Dating-сервиса</title><link>https://ru-admin.github.io/ru/posts/cicd/ci-cd-dating/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ru-admin.github.io/ru/posts/cicd/ci-cd-dating/</guid><description>&lt;h2 id="инфраструктура-и-cicd-для-продакшен-запуска-dating-сервиса"&gt;Инфраструктура и CI/CD для продакшен запуска Dating-сервиса&lt;/h2&gt;
&lt;hr&gt;
&lt;h4 id="клиент"&gt;Клиент&lt;/h4&gt;
&lt;p&gt;Dating-сервис Puzzle Master&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="задача"&gt;Задача&lt;/h4&gt;
&lt;p&gt;Стартап разработал бэкенд на Nest.js + фронтенд на Angular и был готов к запуску, но не имел никакой инфраструктуры: деплой был ручным, не было CI/CD, мониторинга, бэкапов и разделения dev/prod окружений. Требовалось выстроить полный DevOps-стек с нуля под продакшен.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="решение"&gt;Решение&lt;/h4&gt;
&lt;h6 id="1-контейнеризация-приложения"&gt;1. Контейнеризация приложения&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Multi-stage Dockerfile для backend (Nest.js + Prisma, non-root пользователь)&lt;/li&gt;
&lt;li&gt;Multi-stage Dockerfile для frontend (Angular 12, legacy OpenSSL, Nginx для статики)&lt;/li&gt;
&lt;li&gt;Docker Compose с полным стеком: PostgreSQL 15, Redis 7, imgproxy, Nginx&lt;/li&gt;
&lt;li&gt;Healthchecks и &lt;code&gt;depends_on&lt;/code&gt; для правильного порядка запуска&lt;/li&gt;
&lt;li&gt;Раздельные окружения dev и prod в &lt;code&gt;/opt/dev&lt;/code&gt; и &lt;code&gt;/opt/prod&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="2-gitlab-cicd"&gt;2. GitLab CI/CD&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Миграция репозиториев с Bitbucket на GitLab&lt;/li&gt;
&lt;li&gt;Пайплайны для backend и frontend: build → push → deploy&lt;/li&gt;
&lt;li&gt;GitLab Container Registry для хранения Docker образов&lt;/li&gt;
&lt;li&gt;Автоматический деплой в dev, ручной trigger для prod&lt;/li&gt;
&lt;li&gt;SSH деплой на VPS через &lt;code&gt;SSH_PRIVATE_KEY&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="3-nginx-reverse-proxy"&gt;3. Nginx Reverse Proxy&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Универсальный конфиг через &lt;code&gt;envsubst&lt;/code&gt; для dev/prod&lt;/li&gt;
&lt;li&gt;SSL/TLS (TLSv1.2, TLSv1.3) с сертификатами Cloudflare&lt;/li&gt;
&lt;li&gt;Проксирование &lt;code&gt;/api/*&lt;/code&gt; → backend:4000, &lt;code&gt;/*&lt;/code&gt; → frontend:80&lt;/li&gt;
&lt;li&gt;Редирект www → основной домен (301)&lt;/li&gt;
&lt;li&gt;Отдельный стек imgproxy с SSL терминацией&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="4-безопасность-ansible"&gt;4. Безопасность (Ansible)&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Настройка сервера через Ansible: SSH только по ключам, отключён root&lt;/li&gt;
&lt;li&gt;UFW Firewall: открыты только порты 80, 443, кастомный SSH&lt;/li&gt;
&lt;li&gt;Доступ к БД только через SSH Tunnel (Beekeeper Studio)&lt;/li&gt;
&lt;li&gt;Секреты в переменных GitLab CI/CD&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="5-мониторинг"&gt;5. Мониторинг&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Prometheus + Grafana с автоматическим провижинингом дашбордов&lt;/li&gt;
&lt;li&gt;Exporters: Node, cAdvisor, Postgres, Redis, Nginx, Blackbox&lt;/li&gt;
&lt;li&gt;5 Grafana дашбордов: сервер, Docker контейнеры, PostgreSQL, Redis, Nginx&lt;/li&gt;
&lt;li&gt;Alertmanager с интеграцией в Telegram, алерты на CPU/RAM/Disk/API/SSL&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="6-бэкапы-бд"&gt;6. Бэкапы БД&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Автоматический &lt;code&gt;pg_dump&lt;/code&gt; каждый час&lt;/li&gt;
&lt;li&gt;Сжатие gzip и загрузка в Cloudflare R2 (S3-compatible)&lt;/li&gt;
&lt;li&gt;Prometheus метрики бэкапов: успех, размер, timestamp&lt;/li&gt;
&lt;li&gt;Алерты: &lt;code&gt;DatabaseBackupMissing&lt;/code&gt;, &lt;code&gt;DatabaseBackupFailed&lt;/code&gt;, DatabaseBackupSize`Anomaly&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="технологии"&gt;Технологии&lt;/h4&gt;
&lt;div class="row"&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/gitlab-original.svg" alt="GitLab"&gt;&lt;div&gt;GitLab CI&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/docker-original.svg" alt="Docker"&gt;&lt;div&gt;Docker&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/ansible-original.svg" alt="Ansible"&gt;&lt;div&gt;Ansible&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/prometheus-original.svg" alt="Prometheus"&gt;&lt;div&gt;Prometheus&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/nginx.svg" alt="Nginx"&gt;&lt;div&gt;Nginx&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/postgresql.svg" alt="PostgreSQL"&gt;&lt;div&gt;PostgreSQL&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h4 id="результаты"&gt;Результаты&lt;/h4&gt;
&lt;p&gt;✅ &lt;strong&gt;Деплой:&lt;/strong&gt; git push в main → автоматическая сборка и деплой на сервер&lt;br&gt;
✅ &lt;strong&gt;Окружения:&lt;/strong&gt; полное разделение dev и prod на одном VPS&lt;br&gt;
✅ &lt;strong&gt;Мониторинг:&lt;/strong&gt; 5 дашбордов, алерты в Telegram по 6 категориям&lt;br&gt;
✅ &lt;strong&gt;Бэкапы:&lt;/strong&gt; автоматический &lt;code&gt;pg_dump&lt;/code&gt; каждый час в Cloudflare R2&lt;br&gt;
✅ &lt;strong&gt;Безопасность:&lt;/strong&gt; UFW, SSH по ключам, БД закрыта извне&lt;br&gt;
✅ &lt;strong&gt;Масштабируемость:&lt;/strong&gt; архитектура готова к выносу БД на отдельный сервер&lt;/p&gt;</description></item><item><title>Self-Hosted проект-менеджмент Plane.so</title><link>https://ru-admin.github.io/ru/posts/self-hosted/plane-so/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ru-admin.github.io/ru/posts/self-hosted/plane-so/</guid><description>&lt;h2 id="self-hosted-проект-менеджмент-planeso"&gt;Self-Hosted проект-менеджмент Plane.so&lt;/h2&gt;
&lt;hr&gt;
&lt;h4 id="клиент"&gt;Клиент&lt;/h4&gt;
&lt;p&gt;Компания с потребностью в собственном инструменте управления проектами, размещённом на офисной инфраструктуре&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="задача"&gt;Задача&lt;/h4&gt;
&lt;p&gt;Клиент хотел получить open-source альтернативу Jira/Linear для управления проектами и задачами, развёрнутую на собственном сервере в существующем окружении Coolify. Требовалось: установить последнюю версию Plane.so CE, обеспечить корректную работу за Traefik reverse proxy, вынести базу данных как отдельный сервис Coolify для удобного архивирования, а также настроить регулярные бэкапы всех данных.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="решение"&gt;Решение&lt;/h4&gt;
&lt;h6 id="1-подготовка-инфраструктуры"&gt;1. Подготовка инфраструктуры&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Анализ существующего окружения &lt;strong&gt;Coolify&lt;/strong&gt; и конфигурации &lt;strong&gt;Traefik&lt;/strong&gt; на сервере клиента&lt;/li&gt;
&lt;li&gt;Выбор последней open-source версии &lt;strong&gt;Plane.so CE&lt;/strong&gt; из &lt;a href="https://github.com/makeplane/plane" target="_blank" rel="noopener"&gt;официального репозитория&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Изучение &lt;a href="https://developers.plane.so/self-hosting/methods/docker-compose" target="_blank" rel="noopener"&gt;документации по self-hosting&lt;/a&gt; для формирования базовой конфигурации&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="2-кастомный-docker-compose"&gt;2. Кастомный Docker Compose&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;На основе официального docker-compose создан &lt;strong&gt;уникальный Docker Compose&lt;/strong&gt;, адаптированный под Coolify&lt;/li&gt;
&lt;li&gt;Сервисы Plane (web, space, api, worker, beat-worker) настроены для работы за &lt;strong&gt;Traefik&lt;/strong&gt; — корректные labels, сети и маршрутизация&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt; вынесен как отдельный сервис Coolify — это позволяет управлять базой данных независимо и использовать встроенный механизм архивирования Coolify&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redis&lt;/strong&gt; для кэширования и очередей задач&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MinIO&lt;/strong&gt; как S3-совместимое объектное хранилище для вложений и ассетов&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="3-интеграция-с-traefik"&gt;3. Интеграция с Traefik&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Настроены &lt;strong&gt;Traefik labels&lt;/strong&gt; для автоматической маршрутизации трафика к сервисам Plane&lt;/li&gt;
&lt;li&gt;Автоматическое получение и обновление &lt;strong&gt;SSL/TLS&lt;/strong&gt; сертификатов через Traefik&lt;/li&gt;
&lt;li&gt;Корректная проброска заголовков (X-Forwarded-For, Host) для правильной работы приложения за reverse proxy&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="4-резервное-копирование"&gt;4. Резервное копирование&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt; — регулярные бэкапы средствами Coolify с выгрузкой на &lt;strong&gt;AWS S3&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MinIO&lt;/strong&gt; — регулярная синхронизация объектного хранилища на отдельный бакет &lt;strong&gt;AWS S3&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Все бэкапы выполняются автоматически по расписанию без вмешательства&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="технологии"&gt;Технологии&lt;/h4&gt;
&lt;div class="row"&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/docker-original.svg" alt="Docker"&gt;&lt;div&gt;Docker&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/postgresql.svg" alt="PostgreSQL"&gt;&lt;div&gt;PostgreSQL&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/aws.svg" alt="AWS S3"&gt;&lt;div&gt;AWS S3&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/linux-original.svg" alt="Linux"&gt;&lt;div&gt;Linux&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/bash.svg" alt="Bash"&gt;&lt;div&gt;Bash&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h4 id="результаты"&gt;Результаты&lt;/h4&gt;
&lt;p&gt;✅ &lt;strong&gt;Проект-менеджмент:&lt;/strong&gt; мощный self-hosted инструмент управления проектами, не уступающий коммерческим аналогам&lt;br&gt;
✅ &lt;strong&gt;Интеграция:&lt;/strong&gt; Plane надёжно интегрирован в Coolify и работает за Traefik без конфликтов&lt;br&gt;
✅ &lt;strong&gt;Независимость БД:&lt;/strong&gt; PostgreSQL как отдельный сервис Coolify — удобное управление и архивирование&lt;br&gt;
✅ &lt;strong&gt;Бэкапы:&lt;/strong&gt; все данные (БД + MinIO) регулярно копируются на AWS S3 автоматически&lt;br&gt;
✅ &lt;strong&gt;Контроль данных:&lt;/strong&gt; все данные проектов хранятся на собственном сервере клиента&lt;/p&gt;</description></item><item><title>Корпоративное облачное хранилище Nextcloud</title><link>https://ru-admin.github.io/ru/posts/self-hosted/nextcloud/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ru-admin.github.io/ru/posts/self-hosted/nextcloud/</guid><description>&lt;h2 id="self-hosted-корпоративное-облако"&gt;Self-Hosted корпоративное облако&lt;/h2&gt;
&lt;hr&gt;
&lt;h4 id="клиент"&gt;Клиент&lt;/h4&gt;
&lt;p&gt;Средний бизнес с требованиями к конфиденциальности и хранению данных внутри компании&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="задача"&gt;Задача&lt;/h4&gt;
&lt;p&gt;Компания использовала сторонние облачные сервисы для хранения рабочих файлов, что создавало риски утечки данных и зависимость от внешних провайдеров. Требовалось self-hosted решение с возможностью редактирования офисных документов прямо в браузере, корзиной удалённых файлов, историей правок и дополнительными инструментами для совместной работы: календарём, заметками и почтой.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="решение"&gt;Решение&lt;/h4&gt;
&lt;h6 id="1-развёртывание-nextcloud-aio"&gt;1. Развёртывание Nextcloud AIO&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nextcloud All-in-One&lt;/strong&gt; — официальный Docker-образ с полным стеком из коробки&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt; для хранения данных приложения&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redis&lt;/strong&gt; для кэширования и очередей фоновых задач&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nginx&lt;/strong&gt; как reverse proxy с автоматическим SSL/TLS&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="2-редактирование-документов-в-браузере"&gt;2. Редактирование документов в браузере&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nextcloud Office&lt;/strong&gt; (Collabora Online) — встроенный офисный редактор&lt;/li&gt;
&lt;li&gt;Поддержка форматов .docx, .xlsx, .pptx и ODF&lt;/li&gt;
&lt;li&gt;Совместное редактирование в реальном времени&lt;/li&gt;
&lt;li&gt;Без необходимости устанавливать локальное ПО&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="3-управление-файлами"&gt;3. Управление файлами&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Корзина удалённых файлов с настраиваемым сроком хранения&lt;/li&gt;
&lt;li&gt;История версий файлов — возможность откатиться к любой правке&lt;/li&gt;
&lt;li&gt;Гранулированный контроль доступа: папки, ссылки, пароли&lt;/li&gt;
&lt;li&gt;Мобильные и десктопные клиенты для синхронизации&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="4-дополнительные-инструменты"&gt;4. Дополнительные инструменты&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Календарь&lt;/strong&gt; (CalDAV) — корпоративное расписание и события&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Заметки&lt;/strong&gt; — личные и командные заметки с поддержкой Markdown&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Почта&lt;/strong&gt; — встроенный веб-клиент для корпоративной почты (IMAP/SMTP)&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="5-резервное-копирование"&gt;5. Резервное копирование&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Borg Backup&lt;/strong&gt; — встроенный в Nextcloud AIO инкрементальный бэкап&lt;/li&gt;
&lt;li&gt;Дедупликация и сжатие данных&lt;/li&gt;
&lt;li&gt;Автоматический запуск по расписанию&lt;/li&gt;
&lt;li&gt;Хранение бэкапов на удалённом хранилище (S3-compatible / SFTP)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="технологии"&gt;Технологии&lt;/h4&gt;
&lt;div class="row"&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/nextcloud.svg" alt="Nextcloud"&gt;&lt;div&gt;Nextcloud&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/docker-original.svg" alt="Docker"&gt;&lt;div&gt;Docker&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/postgresql.svg" alt="PostgreSQL"&gt;&lt;div&gt;PostgreSQL&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/nginx.svg" alt="Nginx"&gt;&lt;div&gt;Nginx&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/linux-original.svg" alt="Linux"&gt;&lt;div&gt;Linux&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h4 id="результаты"&gt;Результаты&lt;/h4&gt;
&lt;p&gt;✅ &lt;strong&gt;Независимость:&lt;/strong&gt; данные хранятся на серверах компании, без сторонних провайдеров&lt;br&gt;
✅ &lt;strong&gt;Редактирование:&lt;/strong&gt; офисные документы открываются и редактируются прямо в браузере&lt;br&gt;
✅ &lt;strong&gt;Безопасность:&lt;/strong&gt; история версий и корзина защищают от случайной потери данных&lt;br&gt;
✅ &lt;strong&gt;Инструменты:&lt;/strong&gt; единая платформа для файлов, календаря, заметок и почты&lt;br&gt;
✅ &lt;strong&gt;Бэкапы:&lt;/strong&gt; автоматическое инкрементальное резервное копирование через Borg Backup&lt;/p&gt;</description></item><item><title>Корпоративный мессенджер Matrix</title><link>https://ru-admin.github.io/ru/posts/self-hosted/matrix-messenger/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ru-admin.github.io/ru/posts/self-hosted/matrix-messenger/</guid><description>&lt;h2 id="альтернатива-telegram-для-корпоративных-коммуникаций"&gt;Альтернатива Telegram для корпоративных коммуникаций&lt;/h2&gt;
&lt;hr&gt;
&lt;h4 id="клиент"&gt;Клиент&lt;/h4&gt;
&lt;p&gt;Средний бизнес с требованиями к безопасности данных&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="задача"&gt;Задача&lt;/h4&gt;
&lt;p&gt;Компания нуждалась в собственном защищенном мессенджере из-за требований безопасности и необходимости полного контроля над корпоративными коммуникациями. Требовалось решение с шифрованием, видеозвонками и интеграцией с корпоративной инфраструктурой.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="решение"&gt;Решение&lt;/h4&gt;
&lt;h6 id="1-серверная-часть"&gt;1. Серверная часть&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Matrix Synapse&lt;/strong&gt; как основной сервер&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PostgreSQL 16&lt;/strong&gt; для хранения данных&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Caddy&lt;/strong&gt; как reverse proxy с автоматическим SSL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker Compose&lt;/strong&gt; для оркестрации всех сервисов&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="2-клиентские-приложения"&gt;2. Клиентские приложения&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Element Web&lt;/strong&gt; для браузера&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Element Desktop&lt;/strong&gt; для Windows/macOS/Linux&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Element Mobile&lt;/strong&gt; для iOS/Android&lt;/li&gt;
&lt;li&gt;Единый интерфейс на всех платформах&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="3-видеозвонки"&gt;3. Видеозвонки&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Coturn&lt;/strong&gt; (TURN/STUN сервер) для NAT traversal&lt;/li&gt;
&lt;li&gt;Поддержка групповых видеозвонков&lt;/li&gt;
&lt;li&gt;UDP порты 49160-49200 для медиа-трафика&lt;/li&gt;
&lt;li&gt;Автоматическая конфигурация через переменные окружения&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="4-администрирование"&gt;4. Администрирование&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Synapse Admin&lt;/strong&gt; - веб-интерфейс управления&lt;/li&gt;
&lt;li&gt;Управление пользователями и комнатами&lt;/li&gt;
&lt;li&gt;Статистика и мониторинг&lt;/li&gt;
&lt;li&gt;Доступ через отдельный порт 8888&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="5-безопасность"&gt;5. Безопасность&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;End-to-end шифрование сообщений&lt;/li&gt;
&lt;li&gt;Автоматические SSL/TLS сертификаты через Caddy&lt;/li&gt;
&lt;li&gt;Отключена публичная регистрация&lt;/li&gt;
&lt;li&gt;Федерация с другими Matrix серверами&lt;/li&gt;
&lt;li&gt;Healthcheck для всех сервисов&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="6-автоматизация"&gt;6. Автоматизация&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Bash скрипт для полной инициализации&lt;/li&gt;
&lt;li&gt;Автоматическая генерация конфигурации Synapse&lt;/li&gt;
&lt;li&gt;Автоматическое создание admin пользователя через expect&lt;/li&gt;
&lt;li&gt;Docker Compose с зависимостями и healthchecks&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="технологии"&gt;Технологии&lt;/h4&gt;
&lt;div class="row"&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/docker-original.svg" alt="Docker"&gt;&lt;div&gt;Docker&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/postgresql.svg" alt="PostgreSQL"&gt;&lt;div&gt;PostgreSQL&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/caddy.svg" alt="Caddy"&gt;&lt;div&gt;Caddy&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/bash.svg" alt="Bash"&gt;&lt;div&gt;Bash&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/linux-original.svg" alt="Linux"&gt;&lt;div&gt;Linux&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ru-admin.github.io/icons/element.svg" alt="Element"&gt;&lt;div&gt;Element + Matrix + Synapse&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h4 id="результаты"&gt;Результаты&lt;/h4&gt;
&lt;p&gt;✅ &lt;strong&gt;Независимость:&lt;/strong&gt; полный контроль над данными и коммуникациями&lt;br&gt;
✅ &lt;strong&gt;Масштаб:&lt;/strong&gt; 100+ пользователей одновременно&lt;br&gt;
✅ &lt;strong&gt;Функциональность:&lt;/strong&gt; текст, голос, видео, файлы до 1.5GB, шифрование&lt;br&gt;
✅ &lt;strong&gt;Скорость:&lt;/strong&gt; развертывание за 5 минут одним скриптом&lt;br&gt;
✅ &lt;strong&gt;Надежность:&lt;/strong&gt; автоматические SSL сертификаты, healthchecks, auto-restart&lt;/p&gt;</description></item></channel></rss>