<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.ramba-art.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=192.168.1.1</id>
	<title>wiki.ramba-art.ru - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ramba-art.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=192.168.1.1"/>
	<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/192.168.1.1"/>
	<updated>2026-08-24T00:20:44Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=RAMBA_AI_Router&amp;diff=116</id>
		<title>RAMBA AI Router</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=RAMBA_AI_Router&amp;diff=116"/>
		<updated>2026-08-22T20:33:13Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:RAMBA AI Router}}&lt;br /&gt;
&lt;br /&gt;
= RAMBA AI Router =&lt;br /&gt;
&lt;br /&gt;
'''RAMBA AI Router''' — локальная система интеллектуальной маршрутизации запросов между несколькими языковыми моделями проекта [[RAMBA AI]].&lt;br /&gt;
&lt;br /&gt;
Router анализирует входящий запрос пользователя, определяет его тип и автоматически выбирает наиболее подходящую локальную LLM.&lt;br /&gt;
&lt;br /&gt;
Основная задача проекта — получить максимальное качество ответов при ограниченных вычислительных ресурсах, не используя одну большую модель для всех запросов.&lt;br /&gt;
&lt;br /&gt;
На текущем этапе система использует три специализированных «мозга»:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Роль&lt;br /&gt;
! Модель&lt;br /&gt;
! Назначение&lt;br /&gt;
|-&lt;br /&gt;
| '''FAST'''&lt;br /&gt;
| &amp;lt;code&amp;gt;gemma3:4b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Простые вопросы, работа с текстом, короткие ответы&lt;br /&gt;
|-&lt;br /&gt;
| '''INFRA'''&lt;br /&gt;
| &amp;lt;code&amp;gt;qwen3:8b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Linux, Proxmox, сети, серверы, виртуализация и инфраструктура&lt;br /&gt;
|-&lt;br /&gt;
| '''SMART'''&lt;br /&gt;
| &amp;lt;code&amp;gt;qwen3.5:9b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Логика, математика, анализ и сложные задачи&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Общая архитектура ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                    Пользователь&lt;br /&gt;
                         │&lt;br /&gt;
                         ▼&lt;br /&gt;
                ┌─────────────────┐&lt;br /&gt;
                │ RAMBA AI Router │&lt;br /&gt;
                └────────┬────────┘&lt;br /&gt;
                         │&lt;br /&gt;
            анализ и классификация&lt;br /&gt;
                         │&lt;br /&gt;
          ┌──────────────┼──────────────┐&lt;br /&gt;
          │              │              │&lt;br /&gt;
          ▼              ▼              ▼&lt;br /&gt;
       FAST           INFRA          SMART&lt;br /&gt;
    Gemma 3 4B       Qwen3 8B      Qwen3.5 9B&lt;br /&gt;
          │              │              │&lt;br /&gt;
          └──────────────┼──────────────┘&lt;br /&gt;
                         │&lt;br /&gt;
                         ▼&lt;br /&gt;
                       Ollama&lt;br /&gt;
                         │&lt;br /&gt;
                         ▼&lt;br /&gt;
                   NVIDIA GTX 1080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router работает как локальный API-сервис на базе '''FastAPI'''.&lt;br /&gt;
&lt;br /&gt;
В качестве backend для запуска языковых моделей используется '''Ollama'''.&lt;br /&gt;
&lt;br /&gt;
== Сервер ==&lt;br /&gt;
&lt;br /&gt;
RAMBA AI Router работает внутри виртуальной машины:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VMID: 501&lt;br /&gt;
Hostname: ramba-ai&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основной каталог проекта:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/artem/ramba-router/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основные файлы стабильной версии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
router.py&lt;br /&gt;
router-v3-perfect.py&lt;br /&gt;
test-router-v3.py&lt;br /&gt;
test-router-v3-perfect.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Контрольная резервная копия стабильной версии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/artem/ramba-router-v3-perfect.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Аппаратная платформа ==&lt;br /&gt;
&lt;br /&gt;
Для выполнения локальных моделей используется:&lt;br /&gt;
&lt;br /&gt;
* '''GPU:''' NVIDIA GeForce GTX 1080&lt;br /&gt;
* '''VRAM:''' 8 GB&lt;br /&gt;
* '''Inference backend:''' Ollama&lt;br /&gt;
* '''API Router:''' FastAPI / Uvicorn&lt;br /&gt;
&lt;br /&gt;
Из-за ограничения в 8 GB VRAM Router не пытается постоянно держать все основные модели в памяти видеокарты.&lt;br /&gt;
&lt;br /&gt;
Вместо этого необходимая модель загружается по требованию.&lt;br /&gt;
&lt;br /&gt;
== Выбор моделей ==&lt;br /&gt;
&lt;br /&gt;
До разработки Router было проведено тестирование нескольких локальных моделей.&lt;br /&gt;
&lt;br /&gt;
В ходе тестов оценивались:&lt;br /&gt;
&lt;br /&gt;
* русский язык;&lt;br /&gt;
* логическое мышление;&lt;br /&gt;
* задачи по Proxmox/Linux;&lt;br /&gt;
* программирование;&lt;br /&gt;
* понимание AI/VRAM;&lt;br /&gt;
* скорость генерации;&lt;br /&gt;
* стабильность ответов.&lt;br /&gt;
&lt;br /&gt;
В результате для Router были выбраны три основные модели.&lt;br /&gt;
&lt;br /&gt;
=== FAST — Gemma 3 4B ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gemma3:4b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Используется для относительно простых запросов.&lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
&lt;br /&gt;
* исправление текста;&lt;br /&gt;
* переформулирование;&lt;br /&gt;
* короткие объяснения;&lt;br /&gt;
* простые вопросы;&lt;br /&gt;
* задачи, не требующие глубокого анализа.&lt;br /&gt;
&lt;br /&gt;
Преимущество модели — высокая скорость.&lt;br /&gt;
&lt;br /&gt;
В тестах скорость генерации составляла примерно:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~59 tok/s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INFRA — Qwen3 8B ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qwen3:8b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная техническая модель RAMBA AI.&lt;br /&gt;
&lt;br /&gt;
Используется для вопросов, связанных с:&lt;br /&gt;
&lt;br /&gt;
* Proxmox VE;&lt;br /&gt;
* Linux;&lt;br /&gt;
* VFIO;&lt;br /&gt;
* IOMMU;&lt;br /&gt;
* PCI Passthrough;&lt;br /&gt;
* systemd;&lt;br /&gt;
* Docker;&lt;br /&gt;
* NFS;&lt;br /&gt;
* ZFS;&lt;br /&gt;
* сетями;&lt;br /&gt;
* виртуальными машинами;&lt;br /&gt;
* серверным администрированием.&lt;br /&gt;
&lt;br /&gt;
Типичная скорость:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~35 tok/s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SMART — Qwen3.5 9B ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qwen3.5:9b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее интеллектуально сильная из трёх основных моделей.&lt;br /&gt;
&lt;br /&gt;
Используется для:&lt;br /&gt;
&lt;br /&gt;
* математических задач;&lt;br /&gt;
* логики;&lt;br /&gt;
* анализа;&lt;br /&gt;
* сложных технических вопросов;&lt;br /&gt;
* многоэтапных рассуждений;&lt;br /&gt;
* задач с процентами и зависимостями.&lt;br /&gt;
&lt;br /&gt;
Типичная скорость:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~29-30 tok/s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Router v1 ==&lt;br /&gt;
&lt;br /&gt;
Первая версия RAMBA AI Router была proof-of-concept.&lt;br /&gt;
&lt;br /&gt;
Маршрутизация выполнялась преимущественно по ключевым словам.&lt;br /&gt;
&lt;br /&gt;
Упрощённо:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Proxmox / VFIO / Linux&lt;br /&gt;
        │&lt;br /&gt;
        ▼&lt;br /&gt;
     Qwen3 8B&lt;br /&gt;
&lt;br /&gt;
сложная задача&lt;br /&gt;
        │&lt;br /&gt;
        ▼&lt;br /&gt;
   Qwen3.5 9B&lt;br /&gt;
&lt;br /&gt;
остальные запросы&lt;br /&gt;
        │&lt;br /&gt;
        ▼&lt;br /&gt;
    Gemma 3 4B&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Версия доказала работоспособность основной концепции:&lt;br /&gt;
&lt;br /&gt;
'''одна точка входа → несколько специализированных локальных моделей.'''&lt;br /&gt;
&lt;br /&gt;
== Router v2 ==&lt;br /&gt;
&lt;br /&gt;
Во второй версии маршрутизатор стал значительно сложнее.&lt;br /&gt;
&lt;br /&gt;
Были добавлены:&lt;br /&gt;
&lt;br /&gt;
* score-based routing;&lt;br /&gt;
* определение загруженной Ollama-модели;&lt;br /&gt;
* session affinity;&lt;br /&gt;
* hysteresis;&lt;br /&gt;
* статистика;&lt;br /&gt;
* журналирование;&lt;br /&gt;
* контроль переключения моделей.&lt;br /&gt;
&lt;br /&gt;
Router начал использовать Ollama API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api/ps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
для определения модели, которая в данный момент находится в памяти.&lt;br /&gt;
&lt;br /&gt;
В API Router появились служебные endpoint'ы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/chat&lt;br /&gt;
/health&lt;br /&gt;
/stats&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Проблема Router v2 ===&lt;br /&gt;
&lt;br /&gt;
Во время тестирования была обнаружена важная ошибка классификации.&lt;br /&gt;
&lt;br /&gt;
Запрос:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Есть три сервера A, B и C.&lt;br /&gt;
A быстрее B на 20%.&lt;br /&gt;
B быстрее C на 25%.&lt;br /&gt;
Если C выполняет задачу за 100 секунд,&lt;br /&gt;
сколько времени потребуется A?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
является математической задачей.&lt;br /&gt;
&lt;br /&gt;
Однако Router воспринимал слово:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
сервер&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
как инфраструктурный признак и отправлял запрос в:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
INFRA → Qwen3 8B&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это показало недостаток простой маршрутизации по ключевым словам.&lt;br /&gt;
&lt;br /&gt;
== Router v3 ==&lt;br /&gt;
&lt;br /&gt;
В Router v3 алгоритм классификации был переработан.&lt;br /&gt;
&lt;br /&gt;
Основная идея — разные слова должны иметь '''разный вес'''.&lt;br /&gt;
&lt;br /&gt;
=== Слабые инфраструктурные признаки ===&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
сервер&lt;br /&gt;
Linux&lt;br /&gt;
Ubuntu&lt;br /&gt;
VM&lt;br /&gt;
NVIDIA&lt;br /&gt;
сеть&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сами по себе такие слова больше не должны гарантировать выбор INFRA.&lt;br /&gt;
&lt;br /&gt;
=== Сильные инфраструктурные признаки ===&lt;br /&gt;
&lt;br /&gt;
Больший вес получили специфические технические термины:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Proxmox&lt;br /&gt;
vfio-pci&lt;br /&gt;
IOMMU&lt;br /&gt;
lspci&lt;br /&gt;
hostpci&lt;br /&gt;
systemctl&lt;br /&gt;
journalctl&lt;br /&gt;
initramfs&lt;br /&gt;
ZFS&lt;br /&gt;
NFS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SMART-признаки ===&lt;br /&gt;
&lt;br /&gt;
Для определения аналитических задач используются признаки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
сколько&lt;br /&gt;
проценты&lt;br /&gt;
быстрее&lt;br /&gt;
медленнее&lt;br /&gt;
рассчитай&lt;br /&gt;
объясни расчёт&lt;br /&gt;
вероятность&lt;br /&gt;
логическая задача&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом Router вычисляет несколько независимых оценок:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST&lt;br /&gt;
INFRA&lt;br /&gt;
SMART&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и выбирает роль с максимальным результатом.&lt;br /&gt;
&lt;br /&gt;
== Пример работы Router v3 ==&lt;br /&gt;
&lt;br /&gt;
Для математической задачи с тремя серверами Router получил:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST  = 1&lt;br /&gt;
INFRA = 1&lt;br /&gt;
SMART = 16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
role: smart&lt;br /&gt;
model: qwen3.5:9b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель правильно решила задачу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C = 100 секунд&lt;br /&gt;
&lt;br /&gt;
B быстрее C на 25%:&lt;br /&gt;
100 / 1.25 = 80 секунд&lt;br /&gt;
&lt;br /&gt;
A быстрее B на 20%:&lt;br /&gt;
80 / 1.2 = 66.67 секунды&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A ≈ 66.67 секунды&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример инфраструктурного запроса ==&lt;br /&gt;
&lt;br /&gt;
Запрос:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
В Proxmox lspci показывает nouveau вместо vfio-pci.&lt;br /&gt;
Что проверить?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router определил:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST  = 1&lt;br /&gt;
INFRA = 23&lt;br /&gt;
SMART = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и выбрал:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
role: infra&lt;br /&gt;
model: qwen3:8b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
То есть специализированный инфраструктурный запрос был направлен технической модели.&lt;br /&gt;
&lt;br /&gt;
== Пример FAST-запроса ==&lt;br /&gt;
&lt;br /&gt;
Запрос:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Исправь текст:&lt;br /&gt;
я одел куртку и вышел на улицу&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router получил:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST  = 6&lt;br /&gt;
INFRA = 0&lt;br /&gt;
SMART = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и правильно выбрал:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
role: fast&lt;br /&gt;
model: gemma3:4b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Однако сама модель ответила:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Я одел куртку и вышел на улицу.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вместо:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Я надел куртку и вышел на улицу.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это продемонстрировало важное различие:&lt;br /&gt;
&lt;br /&gt;
'''правильная маршрутизация не гарантирует правильность ответа модели.'''&lt;br /&gt;
&lt;br /&gt;
В дальнейшем для решения подобных проблем планируется отдельный слой проверки ответов — '''Verifier'''.&lt;br /&gt;
&lt;br /&gt;
== Переключение моделей ==&lt;br /&gt;
&lt;br /&gt;
Router получает информацию о моделях, загруженных Ollama.&lt;br /&gt;
&lt;br /&gt;
Пример ответа &amp;lt;code&amp;gt;/health&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;router&amp;quot;: &amp;quot;ok&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;3&amp;quot;,&lt;br /&gt;
  &amp;quot;ollama_loaded_models&amp;quot;: [&lt;br /&gt;
    &amp;quot;gemma3:4b&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;sessions&amp;quot;: 3&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запросе другой категории Router может переключить модель.&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Gemma 3 4B&lt;br /&gt;
     │&lt;br /&gt;
     ▼&lt;br /&gt;
Qwen3 8B&lt;br /&gt;
     │&lt;br /&gt;
     ▼&lt;br /&gt;
Qwen3.5 9B&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В API-ответе отображаются диагностические данные:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
model&lt;br /&gt;
role&lt;br /&gt;
loaded_before&lt;br /&gt;
switch&lt;br /&gt;
scores&lt;br /&gt;
route_reason&lt;br /&gt;
elapsed&lt;br /&gt;
eval_count&lt;br /&gt;
eval_duration&lt;br /&gt;
load_duration&lt;br /&gt;
tok_s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это позволяет анализировать не только результат маршрутизации, но и производительность системы.&lt;br /&gt;
&lt;br /&gt;
== Стоимость переключения ==&lt;br /&gt;
&lt;br /&gt;
Загрузка другой модели в VRAM занимает заметное время.&lt;br /&gt;
&lt;br /&gt;
На используемой системе переключение обычно добавляет несколько секунд ожидания.&lt;br /&gt;
&lt;br /&gt;
Поэтому Router старается избегать ненужного переключения модели.&lt;br /&gt;
&lt;br /&gt;
Для этого используются механизмы:&lt;br /&gt;
&lt;br /&gt;
* session affinity;&lt;br /&gt;
* hysteresis;&lt;br /&gt;
* определение уже загруженной модели.&lt;br /&gt;
&lt;br /&gt;
В перспективе Router должен учитывать не только качество предполагаемого ответа, но и '''стоимость переключения модели'''.&lt;br /&gt;
&lt;br /&gt;
== Контрольный тест Router v3 ==&lt;br /&gt;
&lt;br /&gt;
Для проверки Router v3 был создан отдельный тест:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
test-router-v3.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Он содержит '''30 запросов''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Категория&lt;br /&gt;
! Количество&lt;br /&gt;
|-&lt;br /&gt;
| FAST&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| INFRA&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| SMART&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
! Всего&lt;br /&gt;
! 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Для каждого запроса заранее задаётся ожидаемая категория.&lt;br /&gt;
&lt;br /&gt;
Тест сравнивает:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EXPECTED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
с:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ACTUAL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Итог тестирования ===&lt;br /&gt;
&lt;br /&gt;
22 августа 2026 года Router v3 успешно прошёл полный контрольный тест.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RESULT: 30/30 = 100.0%&lt;br /&gt;
&lt;br /&gt;
PERFECT ROUTING — 30/30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Категория&lt;br /&gt;
! Результат&lt;br /&gt;
! Модель&lt;br /&gt;
|-&lt;br /&gt;
| FAST&lt;br /&gt;
| 10 / 10&lt;br /&gt;
| Gemma 3 4B&lt;br /&gt;
|-&lt;br /&gt;
| INFRA&lt;br /&gt;
| 10 / 10&lt;br /&gt;
| Qwen3 8B&lt;br /&gt;
|-&lt;br /&gt;
| SMART&lt;br /&gt;
| 10 / 10&lt;br /&gt;
| Qwen3.5 9B&lt;br /&gt;
|-&lt;br /&gt;
! Итого&lt;br /&gt;
! '''30 / 30 (100%)'''&lt;br /&gt;
! &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Таким образом Router v3 стал первой зафиксированной стабильной версией RAMBA AI Router.&lt;br /&gt;
&lt;br /&gt;
== Фиксация стабильной версии ==&lt;br /&gt;
&lt;br /&gt;
После успешного теста были сохранены контрольные копии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
router-v3-perfect.py&lt;br /&gt;
test-router-v3-perfect.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и создан архив:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/artem/ramba-router-v3-perfect.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Размер архива на момент создания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
6.4 KB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router v3 после этого считается '''стабильной контрольной точкой проекта'''.&lt;br /&gt;
&lt;br /&gt;
== Ограничения Router v3 ==&lt;br /&gt;
&lt;br /&gt;
Несмотря на успешный результат 30/30, версия v3 имеет ряд архитектурных ограничений.&lt;br /&gt;
&lt;br /&gt;
Главное из них — недостаточное понимание контекста разговора.&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Пользователь:&lt;br /&gt;
В Proxmox vfio-pci не захватывает GTX 1080.&lt;br /&gt;
&lt;br /&gt;
Router:&lt;br /&gt;
INFRA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующее сообщение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
А как это проверить?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
само по себе почти не содержит признаков INFRA.&lt;br /&gt;
&lt;br /&gt;
Человек понимает контекст предыдущего сообщения, однако Router v3 в основном анализирует текущий запрос.&lt;br /&gt;
&lt;br /&gt;
Именно эта проблема является основной целью следующей версии.&lt;br /&gt;
&lt;br /&gt;
= Router v4 =&lt;br /&gt;
&lt;br /&gt;
Следующий этап разработки — '''RAMBA AI Router v4'''.&lt;br /&gt;
&lt;br /&gt;
Главное изменение:&lt;br /&gt;
&lt;br /&gt;
'''контекстная маршрутизация.'''&lt;br /&gt;
&lt;br /&gt;
Router должен учитывать не только последнее сообщение, но и историю текущего диалога.&lt;br /&gt;
&lt;br /&gt;
Планируемая структура сессии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
session&lt;br /&gt;
 │&lt;br /&gt;
 ├── session_id&lt;br /&gt;
 ├── current_role&lt;br /&gt;
 ├── previous_model&lt;br /&gt;
 └── messages&lt;br /&gt;
       │&lt;br /&gt;
       ├── user&lt;br /&gt;
       ├── assistant&lt;br /&gt;
       ├── user&lt;br /&gt;
       ├── assistant&lt;br /&gt;
       └── ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Пользователь:&lt;br /&gt;
В Proxmox vfio-pci не захватывает GTX 1080.&lt;br /&gt;
&lt;br /&gt;
→ INFRA / Qwen3 8B&lt;br /&gt;
&lt;br /&gt;
Пользователь:&lt;br /&gt;
А как проверить?&lt;br /&gt;
&lt;br /&gt;
→ анализ контекста&lt;br /&gt;
→ сохранение роли INFRA&lt;br /&gt;
→ Qwen3 8B&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== План Router v4 ==&lt;br /&gt;
&lt;br /&gt;
Первый этап:&lt;br /&gt;
&lt;br /&gt;
# хранение истории диалога;&lt;br /&gt;
# передача контекста модели;&lt;br /&gt;
# ограничение размера истории;&lt;br /&gt;
# sticky routing;&lt;br /&gt;
# корректная обработка коротких follow-up сообщений.&lt;br /&gt;
&lt;br /&gt;
Второй этап:&lt;br /&gt;
&lt;br /&gt;
# отдельный system prompt для FAST;&lt;br /&gt;
# отдельный system prompt для INFRA;&lt;br /&gt;
# отдельный system prompt для SMART.&lt;br /&gt;
&lt;br /&gt;
Третий этап:&lt;br /&gt;
&lt;br /&gt;
# оценка уверенности Router;&lt;br /&gt;
# автоматическая эскалация FAST → SMART;&lt;br /&gt;
# обработка неоднозначных запросов;&lt;br /&gt;
# дополнительные контрольные тесты.&lt;br /&gt;
&lt;br /&gt;
== Дальнейшее развитие ==&lt;br /&gt;
&lt;br /&gt;
Перспективная архитектура RAMBA AI:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                     Пользователь&lt;br /&gt;
                          │&lt;br /&gt;
                          ▼&lt;br /&gt;
                  RAMBA AI Router&lt;br /&gt;
                          │&lt;br /&gt;
            ┌─────────────┼─────────────┐&lt;br /&gt;
            ▼             ▼             ▼&lt;br /&gt;
          FAST          INFRA         SMART&lt;br /&gt;
            │             │             │&lt;br /&gt;
            └─────────────┼─────────────┘&lt;br /&gt;
                          │&lt;br /&gt;
                          ▼&lt;br /&gt;
                       Verifier&lt;br /&gt;
                          │&lt;br /&gt;
                          ▼&lt;br /&gt;
                         RAG&lt;br /&gt;
                          │&lt;br /&gt;
                          ▼&lt;br /&gt;
                  Финальный ответ&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Планируется развитие следующих компонентов:&lt;br /&gt;
&lt;br /&gt;
* '''Context Memory''' — память текущего диалога;&lt;br /&gt;
* '''Verifier''' — проверка качества и корректности ответа;&lt;br /&gt;
* '''Escalation''' — передача сложного запроса более сильной модели;&lt;br /&gt;
* '''RAG''' — подключение собственной базы знаний RAMBA;&lt;br /&gt;
* '''Infrastructure Knowledge''' — информация о серверах и сервисах RAMBA;&lt;br /&gt;
* '''Tool Calling''' — выполнение разрешённых действий через инструменты;&lt;br /&gt;
* '''Metrics''' — статистика качества, скорости и маршрутизации.&lt;br /&gt;
&lt;br /&gt;
== Статус проекта ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Компонент&lt;br /&gt;
! Статус&lt;br /&gt;
|-&lt;br /&gt;
| Ollama&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| GPU inference&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| FAST model&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| INFRA model&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| SMART model&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| Router API&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| Score-based routing&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| Ollama model detection&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| Session affinity&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| Router v3 test&lt;br /&gt;
| '''30/30'''&lt;br /&gt;
|-&lt;br /&gt;
| Context-aware routing&lt;br /&gt;
| В разработке (v4)&lt;br /&gt;
|-&lt;br /&gt;
| Verifier&lt;br /&gt;
| Планируется&lt;br /&gt;
|-&lt;br /&gt;
| RAG&lt;br /&gt;
| Планируется&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Итог ==&lt;br /&gt;
&lt;br /&gt;
'''RAMBA AI Router v3''' подтвердил работоспособность архитектуры динамического выбора локальных языковых моделей.&lt;br /&gt;
&lt;br /&gt;
Контрольный тест показал:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
30 / 30&lt;br /&gt;
100%&lt;br /&gt;
PERFECT ROUTING&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вместо запуска одной универсальной модели RAMBA AI использует несколько специализированных моделей и выбирает подходящую в зависимости от характера задачи.&lt;br /&gt;
&lt;br /&gt;
Следующий этап проекта — '''Router v4''', который добавит память диалога и контекстную маршрутизацию.&lt;br /&gt;
&lt;br /&gt;
[[Категория:RAMBA]]&lt;br /&gt;
[[Категория:RAMBA AI]]&lt;br /&gt;
[[Категория:Искусственный интеллект]]&lt;br /&gt;
[[Категория:Серверы]]&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=RAMBA_AI_Router&amp;diff=115</id>
		<title>RAMBA AI Router</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=RAMBA_AI_Router&amp;diff=115"/>
		<updated>2026-08-22T20:32:20Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:RAMBA AI Router}}&lt;br /&gt;
&lt;br /&gt;
= RAMBA AI Router =&lt;br /&gt;
&lt;br /&gt;
'''RAMBA AI Router''' — локальная система интеллектуальной маршрутизации запросов между несколькими языковыми моделями проекта [[RAMBA AI]].&lt;br /&gt;
&lt;br /&gt;
Router анализирует входящий запрос пользователя, определяет его тип и автоматически выбирает наиболее подходящую локальную LLM.&lt;br /&gt;
&lt;br /&gt;
Основная задача проекта — получить максимальное качество ответов при ограниченных вычислительных ресурсах, не используя одну большую модель для всех запросов.&lt;br /&gt;
&lt;br /&gt;
На текущем этапе система использует три специализированных «мозга»:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Роль&lt;br /&gt;
! Модель&lt;br /&gt;
! Назначение&lt;br /&gt;
|-&lt;br /&gt;
| '''FAST'''&lt;br /&gt;
| &amp;lt;code&amp;gt;gemma3:4b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Простые вопросы, работа с текстом, короткие ответы&lt;br /&gt;
|-&lt;br /&gt;
| '''INFRA'''&lt;br /&gt;
| &amp;lt;code&amp;gt;qwen3:8b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Linux, Proxmox, сети, серверы, виртуализация и инфраструктура&lt;br /&gt;
|-&lt;br /&gt;
| '''SMART'''&lt;br /&gt;
| &amp;lt;code&amp;gt;qwen3.5:9b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Логика, математика, анализ и сложные задачи&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Общая архитектура ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                    Пользователь&lt;br /&gt;
                         │&lt;br /&gt;
                         ▼&lt;br /&gt;
                ┌─────────────────┐&lt;br /&gt;
                │ RAMBA AI Router │&lt;br /&gt;
                └────────┬────────┘&lt;br /&gt;
                         │&lt;br /&gt;
            анализ и классификация&lt;br /&gt;
                         │&lt;br /&gt;
          ┌──────────────┼──────────────┐&lt;br /&gt;
          │              │              │&lt;br /&gt;
          ▼              ▼              ▼&lt;br /&gt;
       FAST           INFRA          SMART&lt;br /&gt;
    Gemma 3 4B       Qwen3 8B      Qwen3.5 9B&lt;br /&gt;
          │              │              │&lt;br /&gt;
          └──────────────┼──────────────┘&lt;br /&gt;
                         │&lt;br /&gt;
                         ▼&lt;br /&gt;
                       Ollama&lt;br /&gt;
                         │&lt;br /&gt;
                         ▼&lt;br /&gt;
                   NVIDIA GTX 1080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router работает как локальный API-сервис на базе '''FastAPI'''.&lt;br /&gt;
&lt;br /&gt;
В качестве backend для запуска языковых моделей используется '''Ollama'''.&lt;br /&gt;
&lt;br /&gt;
== Сервер ==&lt;br /&gt;
&lt;br /&gt;
RAMBA AI Router работает внутри виртуальной машины:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VMID: 501&lt;br /&gt;
Hostname: ramba-ai&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основной каталог проекта:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/artem/ramba-router/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основные файлы стабильной версии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
router.py&lt;br /&gt;
router-v3-perfect.py&lt;br /&gt;
test-router-v3.py&lt;br /&gt;
test-router-v3-perfect.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Контрольная резервная копия стабильной версии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/artem/ramba-router-v3-perfect.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Аппаратная платформа ==&lt;br /&gt;
&lt;br /&gt;
Для выполнения локальных моделей используется:&lt;br /&gt;
&lt;br /&gt;
* '''GPU:''' NVIDIA GeForce GTX 1080&lt;br /&gt;
* '''VRAM:''' 8 GB&lt;br /&gt;
* '''Inference backend:''' Ollama&lt;br /&gt;
* '''API Router:''' FastAPI / Uvicorn&lt;br /&gt;
&lt;br /&gt;
Из-за ограничения в 8 GB VRAM Router не пытается постоянно держать все основные модели в памяти видеокарты.&lt;br /&gt;
&lt;br /&gt;
Вместо этого необходимая модель загружается по требованию.&lt;br /&gt;
&lt;br /&gt;
== Выбор моделей ==&lt;br /&gt;
&lt;br /&gt;
До разработки Router было проведено тестирование нескольких локальных моделей.&lt;br /&gt;
&lt;br /&gt;
В ходе тестов оценивались:&lt;br /&gt;
&lt;br /&gt;
* русский язык;&lt;br /&gt;
* логическое мышление;&lt;br /&gt;
* задачи по Proxmox/Linux;&lt;br /&gt;
* программирование;&lt;br /&gt;
* понимание AI/VRAM;&lt;br /&gt;
* скорость генерации;&lt;br /&gt;
* стабильность ответов.&lt;br /&gt;
&lt;br /&gt;
В результате для Router были выбраны три основные модели.&lt;br /&gt;
&lt;br /&gt;
=== FAST — Gemma 3 4B ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gemma3:4b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Используется для относительно простых запросов.&lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
&lt;br /&gt;
* исправление текста;&lt;br /&gt;
* переформулирование;&lt;br /&gt;
* короткие объяснения;&lt;br /&gt;
* простые вопросы;&lt;br /&gt;
* задачи, не требующие глубокого анализа.&lt;br /&gt;
&lt;br /&gt;
Преимущество модели — высокая скорость.&lt;br /&gt;
&lt;br /&gt;
В тестах скорость генерации составляла примерно:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~59 tok/s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INFRA — Qwen3 8B ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qwen3:8b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная техническая модель RAMBA AI.&lt;br /&gt;
&lt;br /&gt;
Используется для вопросов, связанных с:&lt;br /&gt;
&lt;br /&gt;
* Proxmox VE;&lt;br /&gt;
* Linux;&lt;br /&gt;
* VFIO;&lt;br /&gt;
* IOMMU;&lt;br /&gt;
* PCI Passthrough;&lt;br /&gt;
* systemd;&lt;br /&gt;
* Docker;&lt;br /&gt;
* NFS;&lt;br /&gt;
* ZFS;&lt;br /&gt;
* сетями;&lt;br /&gt;
* виртуальными машинами;&lt;br /&gt;
* серверным администрированием.&lt;br /&gt;
&lt;br /&gt;
Типичная скорость:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~35 tok/s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SMART — Qwen3.5 9B ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qwen3.5:9b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее интеллектуально сильная из трёх основных моделей.&lt;br /&gt;
&lt;br /&gt;
Используется для:&lt;br /&gt;
&lt;br /&gt;
* математических задач;&lt;br /&gt;
* логики;&lt;br /&gt;
* анализа;&lt;br /&gt;
* сложных технических вопросов;&lt;br /&gt;
* многоэтапных рассуждений;&lt;br /&gt;
* задач с процентами и зависимостями.&lt;br /&gt;
&lt;br /&gt;
Типичная скорость:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~29-30 tok/s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Router v1 ==&lt;br /&gt;
&lt;br /&gt;
Первая версия RAMBA AI Router была proof-of-concept.&lt;br /&gt;
&lt;br /&gt;
Маршрутизация выполнялась преимущественно по ключевым словам.&lt;br /&gt;
&lt;br /&gt;
Упрощённо:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Proxmox / VFIO / Linux&lt;br /&gt;
        │&lt;br /&gt;
        ▼&lt;br /&gt;
     Qwen3 8B&lt;br /&gt;
&lt;br /&gt;
сложная задача&lt;br /&gt;
        │&lt;br /&gt;
        ▼&lt;br /&gt;
   Qwen3.5 9B&lt;br /&gt;
&lt;br /&gt;
остальные запросы&lt;br /&gt;
        │&lt;br /&gt;
        ▼&lt;br /&gt;
    Gemma 3 4B&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Версия доказала работоспособность основной концепции:&lt;br /&gt;
&lt;br /&gt;
'''одна точка входа → несколько специализированных локальных моделей.'''&lt;br /&gt;
&lt;br /&gt;
== Router v2 ==&lt;br /&gt;
&lt;br /&gt;
Во второй версии маршрутизатор стал значительно сложнее.&lt;br /&gt;
&lt;br /&gt;
Были добавлены:&lt;br /&gt;
&lt;br /&gt;
* score-based routing;&lt;br /&gt;
* определение загруженной Ollama-модели;&lt;br /&gt;
* session affinity;&lt;br /&gt;
* hysteresis;&lt;br /&gt;
* статистика;&lt;br /&gt;
* журналирование;&lt;br /&gt;
* контроль переключения моделей.&lt;br /&gt;
&lt;br /&gt;
Router начал использовать Ollama API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api/ps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
для определения модели, которая в данный момент находится в памяти.&lt;br /&gt;
&lt;br /&gt;
В API Router появились служебные endpoint'ы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/chat&lt;br /&gt;
/health&lt;br /&gt;
/stats&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Проблема Router v2 ===&lt;br /&gt;
&lt;br /&gt;
Во время тестирования была обнаружена важная ошибка классификации.&lt;br /&gt;
&lt;br /&gt;
Запрос:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Есть три сервера A, B и C.&lt;br /&gt;
A быстрее B на 20%.&lt;br /&gt;
B быстрее C на 25%.&lt;br /&gt;
Если C выполняет задачу за 100 секунд,&lt;br /&gt;
сколько времени потребуется A?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
является математической задачей.&lt;br /&gt;
&lt;br /&gt;
Однако Router воспринимал слово:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
сервер&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
как инфраструктурный признак и отправлял запрос в:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
INFRA → Qwen3 8B&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это показало недостаток простой маршрутизации по ключевым словам.&lt;br /&gt;
&lt;br /&gt;
== Router v3 ==&lt;br /&gt;
&lt;br /&gt;
В Router v3 алгоритм классификации был переработан.&lt;br /&gt;
&lt;br /&gt;
Основная идея — разные слова должны иметь '''разный вес'''.&lt;br /&gt;
&lt;br /&gt;
=== Слабые инфраструктурные признаки ===&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
сервер&lt;br /&gt;
Linux&lt;br /&gt;
Ubuntu&lt;br /&gt;
VM&lt;br /&gt;
NVIDIA&lt;br /&gt;
сеть&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сами по себе такие слова больше не должны гарантировать выбор INFRA.&lt;br /&gt;
&lt;br /&gt;
=== Сильные инфраструктурные признаки ===&lt;br /&gt;
&lt;br /&gt;
Больший вес получили специфические технические термины:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Proxmox&lt;br /&gt;
vfio-pci&lt;br /&gt;
IOMMU&lt;br /&gt;
lspci&lt;br /&gt;
hostpci&lt;br /&gt;
systemctl&lt;br /&gt;
journalctl&lt;br /&gt;
initramfs&lt;br /&gt;
ZFS&lt;br /&gt;
NFS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SMART-признаки ===&lt;br /&gt;
&lt;br /&gt;
Для определения аналитических задач используются признаки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
сколько&lt;br /&gt;
проценты&lt;br /&gt;
быстрее&lt;br /&gt;
медленнее&lt;br /&gt;
рассчитай&lt;br /&gt;
объясни расчёт&lt;br /&gt;
вероятность&lt;br /&gt;
логическая задача&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом Router вычисляет несколько независимых оценок:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST&lt;br /&gt;
INFRA&lt;br /&gt;
SMART&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и выбирает роль с максимальным результатом.&lt;br /&gt;
&lt;br /&gt;
== Пример работы Router v3 ==&lt;br /&gt;
&lt;br /&gt;
Для математической задачи с тремя серверами Router получил:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST  = 1&lt;br /&gt;
INFRA = 1&lt;br /&gt;
SMART = 16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
role: smart&lt;br /&gt;
model: qwen3.5:9b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель правильно решила задачу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C = 100 секунд&lt;br /&gt;
&lt;br /&gt;
B быстрее C на 25%:&lt;br /&gt;
100 / 1.25 = 80 секунд&lt;br /&gt;
&lt;br /&gt;
A быстрее B на 20%:&lt;br /&gt;
80 / 1.2 = 66.67 секунды&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A ≈ 66.67 секунды&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример инфраструктурного запроса ==&lt;br /&gt;
&lt;br /&gt;
Запрос:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
В Proxmox lspci показывает nouveau вместо vfio-pci.&lt;br /&gt;
Что проверить?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router определил:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST  = 1&lt;br /&gt;
INFRA = 23&lt;br /&gt;
SMART = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и выбрал:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
role: infra&lt;br /&gt;
model: qwen3:8b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
То есть специализированный инфраструктурный запрос был направлен технической модели.&lt;br /&gt;
&lt;br /&gt;
== Пример FAST-запроса ==&lt;br /&gt;
&lt;br /&gt;
Запрос:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Исправь текст:&lt;br /&gt;
я одел куртку и вышел на улицу&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router получил:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST  = 6&lt;br /&gt;
INFRA = 0&lt;br /&gt;
SMART = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и правильно выбрал:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
role: fast&lt;br /&gt;
model: gemma3:4b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Однако сама модель ответила:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Я одел куртку и вышел на улицу.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вместо:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Я надел куртку и вышел на улицу.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это продемонстрировало важное различие:&lt;br /&gt;
&lt;br /&gt;
'''правильная маршрутизация не гарантирует правильность ответа модели.'''&lt;br /&gt;
&lt;br /&gt;
В дальнейшем для решения подобных проблем планируется отдельный слой проверки ответов — '''Verifier'''.&lt;br /&gt;
&lt;br /&gt;
== Переключение моделей ==&lt;br /&gt;
&lt;br /&gt;
Router получает информацию о моделях, загруженных Ollama.&lt;br /&gt;
&lt;br /&gt;
Пример ответа &amp;lt;code&amp;gt;/health&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;router&amp;quot;: &amp;quot;ok&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;3&amp;quot;,&lt;br /&gt;
  &amp;quot;ollama_loaded_models&amp;quot;: [&lt;br /&gt;
    &amp;quot;gemma3:4b&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;sessions&amp;quot;: 3&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запросе другой категории Router может переключить модель.&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Gemma 3 4B&lt;br /&gt;
     │&lt;br /&gt;
     ▼&lt;br /&gt;
Qwen3 8B&lt;br /&gt;
     │&lt;br /&gt;
     ▼&lt;br /&gt;
Qwen3.5 9B&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В API-ответе отображаются диагностические данные:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
model&lt;br /&gt;
role&lt;br /&gt;
loaded_before&lt;br /&gt;
switch&lt;br /&gt;
scores&lt;br /&gt;
route_reason&lt;br /&gt;
elapsed&lt;br /&gt;
eval_count&lt;br /&gt;
eval_duration&lt;br /&gt;
load_duration&lt;br /&gt;
tok_s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это позволяет анализировать не только результат маршрутизации, но и производительность системы.&lt;br /&gt;
&lt;br /&gt;
== Стоимость переключения ==&lt;br /&gt;
&lt;br /&gt;
Загрузка другой модели в VRAM занимает заметное время.&lt;br /&gt;
&lt;br /&gt;
На используемой системе переключение обычно добавляет несколько секунд ожидания.&lt;br /&gt;
&lt;br /&gt;
Поэтому Router старается избегать ненужного переключения модели.&lt;br /&gt;
&lt;br /&gt;
Для этого используются механизмы:&lt;br /&gt;
&lt;br /&gt;
* session affinity;&lt;br /&gt;
* hysteresis;&lt;br /&gt;
* определение уже загруженной модели.&lt;br /&gt;
&lt;br /&gt;
В перспективе Router должен учитывать не только качество предполагаемого ответа, но и '''стоимость переключения модели'''.&lt;br /&gt;
&lt;br /&gt;
== Контрольный тест Router v3 ==&lt;br /&gt;
&lt;br /&gt;
Для проверки Router v3 был создан отдельный тест:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
test-router-v3.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Он содержит '''30 запросов''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Категория&lt;br /&gt;
! Количество&lt;br /&gt;
|-&lt;br /&gt;
| FAST&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| INFRA&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| SMART&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
! Всего&lt;br /&gt;
! 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Для каждого запроса заранее задаётся ожидаемая категория.&lt;br /&gt;
&lt;br /&gt;
Тест сравнивает:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EXPECTED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
с:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ACTUAL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Итог тестирования ===&lt;br /&gt;
&lt;br /&gt;
22 августа 2026 года Router v3 успешно прошёл полный контрольный тест.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RESULT: 30/30 = 100.0%&lt;br /&gt;
&lt;br /&gt;
PERFECT ROUTING — 30/30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Категория&lt;br /&gt;
! Результат&lt;br /&gt;
! Модель&lt;br /&gt;
|-&lt;br /&gt;
| FAST&lt;br /&gt;
| 10 / 10&lt;br /&gt;
| Gemma 3 4B&lt;br /&gt;
|-&lt;br /&gt;
| INFRA&lt;br /&gt;
| 10 / 10&lt;br /&gt;
| Qwen3 8B&lt;br /&gt;
|-&lt;br /&gt;
| SMART&lt;br /&gt;
| 10 / 10&lt;br /&gt;
| Qwen3.5 9B&lt;br /&gt;
|-&lt;br /&gt;
! Итого&lt;br /&gt;
! '''30 / 30 (100%)'''&lt;br /&gt;
! &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Таким образом Router v3 стал первой зафиксированной стабильной версией RAMBA AI Router.&lt;br /&gt;
&lt;br /&gt;
== Фиксация стабильной версии ==&lt;br /&gt;
&lt;br /&gt;
После успешного теста были сохранены контрольные копии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
router-v3-perfect.py&lt;br /&gt;
test-router-v3-perfect.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и создан архив:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/artem/ramba-router-v3-perfect.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Размер архива на момент создания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
6.4 KB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router v3 после этого считается '''стабильной контрольной точкой проекта'''.&lt;br /&gt;
&lt;br /&gt;
== Ограничения Router v3 ==&lt;br /&gt;
&lt;br /&gt;
Несмотря на успешный результат 30/30, версия v3 имеет ряд архитектурных ограничений.&lt;br /&gt;
&lt;br /&gt;
Главное из них — недостаточное понимание контекста разговора.&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Пользователь:&lt;br /&gt;
В Proxmox vfio-pci не захватывает GTX 1080.&lt;br /&gt;
&lt;br /&gt;
Router:&lt;br /&gt;
INFRA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующее сообщение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
А как это проверить?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
само по себе почти не содержит признаков INFRA.&lt;br /&gt;
&lt;br /&gt;
Человек понимает контекст предыдущего сообщения, однако Router v3 в основном анализирует текущий запрос.&lt;br /&gt;
&lt;br /&gt;
Именно эта проблема является основной целью следующей версии.&lt;br /&gt;
&lt;br /&gt;
= Router v4 =&lt;br /&gt;
&lt;br /&gt;
Следующий этап разработки — '''RAMBA AI Router v4'''.&lt;br /&gt;
&lt;br /&gt;
Главное изменение:&lt;br /&gt;
&lt;br /&gt;
'''контекстная маршрутизация.'''&lt;br /&gt;
&lt;br /&gt;
Router должен учитывать не только последнее сообщение, но и историю текущего диалога.&lt;br /&gt;
&lt;br /&gt;
Планируемая структура сессии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
session&lt;br /&gt;
 │&lt;br /&gt;
 ├── session_id&lt;br /&gt;
 ├── current_role&lt;br /&gt;
 ├── previous_model&lt;br /&gt;
 └── messages&lt;br /&gt;
       │&lt;br /&gt;
       ├── user&lt;br /&gt;
       ├── assistant&lt;br /&gt;
       ├── user&lt;br /&gt;
       ├── assistant&lt;br /&gt;
       └── ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Пользователь:&lt;br /&gt;
В Proxmox vfio-pci не захватывает GTX 1080.&lt;br /&gt;
&lt;br /&gt;
→ INFRA / Qwen3 8B&lt;br /&gt;
&lt;br /&gt;
Пользователь:&lt;br /&gt;
А как проверить?&lt;br /&gt;
&lt;br /&gt;
→ анализ контекста&lt;br /&gt;
→ сохранение роли INFRA&lt;br /&gt;
→ Qwen3 8B&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== План Router v4 ==&lt;br /&gt;
&lt;br /&gt;
Первый этап:&lt;br /&gt;
&lt;br /&gt;
# хранение истории диалога;&lt;br /&gt;
# передача контекста модели;&lt;br /&gt;
# ограничение размера истории;&lt;br /&gt;
# sticky routing;&lt;br /&gt;
# корректная обработка коротких follow-up сообщений.&lt;br /&gt;
&lt;br /&gt;
Второй этап:&lt;br /&gt;
&lt;br /&gt;
# отдельный system prompt для FAST;&lt;br /&gt;
# отдельный system prompt для INFRA;&lt;br /&gt;
# отдельный system prompt для SMART.&lt;br /&gt;
&lt;br /&gt;
Третий этап:&lt;br /&gt;
&lt;br /&gt;
# оценка уверенности Router;&lt;br /&gt;
# автоматическая эскалация FAST → SMART;&lt;br /&gt;
# обработка неоднозначных запросов;&lt;br /&gt;
# дополнительные контрольные тесты.&lt;br /&gt;
&lt;br /&gt;
== Дальнейшее развитие ==&lt;br /&gt;
&lt;br /&gt;
Перспективная архитектура RAMBA AI:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                     Пользователь&lt;br /&gt;
                          │&lt;br /&gt;
                          ▼&lt;br /&gt;
                  RAMBA AI Router&lt;br /&gt;
                          │&lt;br /&gt;
            ┌─────────────┼─────────────┐&lt;br /&gt;
            ▼             ▼             ▼&lt;br /&gt;
          FAST          INFRA         SMART&lt;br /&gt;
            │             │             │&lt;br /&gt;
            └─────────────┼─────────────┘&lt;br /&gt;
                          │&lt;br /&gt;
                          ▼&lt;br /&gt;
                       Verifier&lt;br /&gt;
                          │&lt;br /&gt;
                          ▼&lt;br /&gt;
                         RAG&lt;br /&gt;
                          │&lt;br /&gt;
                          ▼&lt;br /&gt;
                  Финальный ответ&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Планируется развитие следующих компонентов:&lt;br /&gt;
&lt;br /&gt;
* '''Context Memory''' — память текущего диалога;&lt;br /&gt;
* '''Verifier''' — проверка качества и корректности ответа;&lt;br /&gt;
* '''Escalation''' — передача сложного запроса более сильной модели;&lt;br /&gt;
* '''RAG''' — подключение собственной базы знаний RAMBA;&lt;br /&gt;
* '''Infrastructure Knowledge''' — информация о серверах и сервисах RAMBA;&lt;br /&gt;
* '''Tool Calling''' — выполнение разрешённых действий через инструменты;&lt;br /&gt;
* '''Metrics''' — статистика качества, скорости и маршрутизации.&lt;br /&gt;
&lt;br /&gt;
== Статус проекта ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Компонент&lt;br /&gt;
! Статус&lt;br /&gt;
|-&lt;br /&gt;
| Ollama&lt;br /&gt;
| ''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| GPU inference&lt;br /&gt;
| ''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| FAST model&lt;br /&gt;
| ''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| INFRA model&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| SMART model&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| Router API&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| Score-based routing&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| Ollama model detection&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| Session affinity&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| Router v3 test&lt;br /&gt;
| '''30/30'''&lt;br /&gt;
|-&lt;br /&gt;
| Context-aware routing&lt;br /&gt;
| В разработке (v4)&lt;br /&gt;
|-&lt;br /&gt;
| Verifier&lt;br /&gt;
| Планируется&lt;br /&gt;
|-&lt;br /&gt;
| RAG&lt;br /&gt;
| Планируется&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Итог ==&lt;br /&gt;
&lt;br /&gt;
'''RAMBA AI Router v3''' подтвердил работоспособность архитектуры динамического выбора локальных языковых моделей.&lt;br /&gt;
&lt;br /&gt;
Контрольный тест показал:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
30 / 30&lt;br /&gt;
100%&lt;br /&gt;
PERFECT ROUTING&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вместо запуска одной универсальной модели RAMBA AI использует несколько специализированных моделей и выбирает подходящую в зависимости от характера задачи.&lt;br /&gt;
&lt;br /&gt;
Следующий этап проекта — '''Router v4''', который добавит память диалога и контекстную маршрутизацию.&lt;br /&gt;
&lt;br /&gt;
[[Категория:RAMBA]]&lt;br /&gt;
[[Категория:RAMBA AI]]&lt;br /&gt;
[[Категория:Искусственный интеллект]]&lt;br /&gt;
[[Категория:Серверы]]&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=RAMBA_AI_Router&amp;diff=114</id>
		<title>RAMBA AI Router</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=RAMBA_AI_Router&amp;diff=114"/>
		<updated>2026-08-22T20:31:10Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: Новая страница: «{{DISPLAYTITLE:RAMBA AI Router}}  = RAMBA AI Router =  '''RAMBA AI Router''' — локальная система интеллектуальной маршрутизации запросов между несколькими языковыми моделями проекта RAMBA AI.  Router анализирует входящий запрос пользователя, определяет его тип и автоматически выбирает н...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:RAMBA AI Router}}&lt;br /&gt;
&lt;br /&gt;
= RAMBA AI Router =&lt;br /&gt;
&lt;br /&gt;
'''RAMBA AI Router''' — локальная система интеллектуальной маршрутизации запросов между несколькими языковыми моделями проекта [[RAMBA AI]].&lt;br /&gt;
&lt;br /&gt;
Router анализирует входящий запрос пользователя, определяет его тип и автоматически выбирает наиболее подходящую локальную LLM.&lt;br /&gt;
&lt;br /&gt;
Основная задача проекта — получить максимальное качество ответов при ограниченных вычислительных ресурсах, не используя одну большую модель для всех запросов.&lt;br /&gt;
&lt;br /&gt;
На текущем этапе система использует три специализированных «мозга»:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Роль&lt;br /&gt;
! Модель&lt;br /&gt;
! Назначение&lt;br /&gt;
|-&lt;br /&gt;
| '''FAST'''&lt;br /&gt;
| &amp;lt;code&amp;gt;gemma3:4b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Простые вопросы, работа с текстом, короткие ответы&lt;br /&gt;
|-&lt;br /&gt;
| '''INFRA'''&lt;br /&gt;
| &amp;lt;code&amp;gt;qwen3:8b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Linux, Proxmox, сети, серверы, виртуализация и инфраструктура&lt;br /&gt;
|-&lt;br /&gt;
| '''SMART'''&lt;br /&gt;
| &amp;lt;code&amp;gt;qwen3.5:9b&amp;lt;/code&amp;gt;&lt;br /&gt;
| Логика, математика, анализ и сложные задачи&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Общая архитектура ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                    Пользователь&lt;br /&gt;
                         │&lt;br /&gt;
                         ▼&lt;br /&gt;
                ┌─────────────────┐&lt;br /&gt;
                │ RAMBA AI Router │&lt;br /&gt;
                └────────┬────────┘&lt;br /&gt;
                         │&lt;br /&gt;
            анализ и классификация&lt;br /&gt;
                         │&lt;br /&gt;
          ┌──────────────┼──────────────┐&lt;br /&gt;
          │              │              │&lt;br /&gt;
          ▼              ▼              ▼&lt;br /&gt;
       FAST           INFRA          SMART&lt;br /&gt;
    Gemma 3 4B       Qwen3 8B      Qwen3.5 9B&lt;br /&gt;
          │              │              │&lt;br /&gt;
          └──────────────┼──────────────┘&lt;br /&gt;
                         │&lt;br /&gt;
                         ▼&lt;br /&gt;
                       Ollama&lt;br /&gt;
                         │&lt;br /&gt;
                         ▼&lt;br /&gt;
                   NVIDIA GTX 1080&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router работает как локальный API-сервис на базе '''FastAPI'''.&lt;br /&gt;
&lt;br /&gt;
В качестве backend для запуска языковых моделей используется '''Ollama'''.&lt;br /&gt;
&lt;br /&gt;
== Сервер ==&lt;br /&gt;
&lt;br /&gt;
RAMBA AI Router работает внутри виртуальной машины:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VMID: 501&lt;br /&gt;
Hostname: ramba-ai&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основной каталог проекта:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/artem/ramba-router/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основные файлы стабильной версии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
router.py&lt;br /&gt;
router-v3-perfect.py&lt;br /&gt;
test-router-v3.py&lt;br /&gt;
test-router-v3-perfect.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Контрольная резервная копия стабильной версии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/artem/ramba-router-v3-perfect.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Аппаратная платформа ==&lt;br /&gt;
&lt;br /&gt;
Для выполнения локальных моделей используется:&lt;br /&gt;
&lt;br /&gt;
* '''GPU:''' NVIDIA GeForce GTX 1080&lt;br /&gt;
* '''VRAM:''' 8 GB&lt;br /&gt;
* '''Inference backend:''' Ollama&lt;br /&gt;
* '''API Router:''' FastAPI / Uvicorn&lt;br /&gt;
&lt;br /&gt;
Из-за ограничения в 8 GB VRAM Router не пытается постоянно держать все основные модели в памяти видеокарты.&lt;br /&gt;
&lt;br /&gt;
Вместо этого необходимая модель загружается по требованию.&lt;br /&gt;
&lt;br /&gt;
== Выбор моделей ==&lt;br /&gt;
&lt;br /&gt;
До разработки Router было проведено тестирование нескольких локальных моделей.&lt;br /&gt;
&lt;br /&gt;
В ходе тестов оценивались:&lt;br /&gt;
&lt;br /&gt;
* русский язык;&lt;br /&gt;
* логическое мышление;&lt;br /&gt;
* задачи по Proxmox/Linux;&lt;br /&gt;
* программирование;&lt;br /&gt;
* понимание AI/VRAM;&lt;br /&gt;
* скорость генерации;&lt;br /&gt;
* стабильность ответов.&lt;br /&gt;
&lt;br /&gt;
В результате для Router были выбраны три основные модели.&lt;br /&gt;
&lt;br /&gt;
=== FAST — Gemma 3 4B ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gemma3:4b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Используется для относительно простых запросов.&lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
&lt;br /&gt;
* исправление текста;&lt;br /&gt;
* переформулирование;&lt;br /&gt;
* короткие объяснения;&lt;br /&gt;
* простые вопросы;&lt;br /&gt;
* задачи, не требующие глубокого анализа.&lt;br /&gt;
&lt;br /&gt;
Преимущество модели — высокая скорость.&lt;br /&gt;
&lt;br /&gt;
В тестах скорость генерации составляла примерно:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~59 tok/s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INFRA — Qwen3 8B ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qwen3:8b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основная техническая модель RAMBA AI.&lt;br /&gt;
&lt;br /&gt;
Используется для вопросов, связанных с:&lt;br /&gt;
&lt;br /&gt;
* Proxmox VE;&lt;br /&gt;
* Linux;&lt;br /&gt;
* VFIO;&lt;br /&gt;
* IOMMU;&lt;br /&gt;
* PCI Passthrough;&lt;br /&gt;
* systemd;&lt;br /&gt;
* Docker;&lt;br /&gt;
* NFS;&lt;br /&gt;
* ZFS;&lt;br /&gt;
* сетями;&lt;br /&gt;
* виртуальными машинами;&lt;br /&gt;
* серверным администрированием.&lt;br /&gt;
&lt;br /&gt;
Типичная скорость:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~35 tok/s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SMART — Qwen3.5 9B ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qwen3.5:9b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наиболее интеллектуально сильная из трёх основных моделей.&lt;br /&gt;
&lt;br /&gt;
Используется для:&lt;br /&gt;
&lt;br /&gt;
* математических задач;&lt;br /&gt;
* логики;&lt;br /&gt;
* анализа;&lt;br /&gt;
* сложных технических вопросов;&lt;br /&gt;
* многоэтапных рассуждений;&lt;br /&gt;
* задач с процентами и зависимостями.&lt;br /&gt;
&lt;br /&gt;
Типичная скорость:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~29-30 tok/s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Router v1 ==&lt;br /&gt;
&lt;br /&gt;
Первая версия RAMBA AI Router была proof-of-concept.&lt;br /&gt;
&lt;br /&gt;
Маршрутизация выполнялась преимущественно по ключевым словам.&lt;br /&gt;
&lt;br /&gt;
Упрощённо:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Proxmox / VFIO / Linux&lt;br /&gt;
        │&lt;br /&gt;
        ▼&lt;br /&gt;
     Qwen3 8B&lt;br /&gt;
&lt;br /&gt;
сложная задача&lt;br /&gt;
        │&lt;br /&gt;
        ▼&lt;br /&gt;
   Qwen3.5 9B&lt;br /&gt;
&lt;br /&gt;
остальные запросы&lt;br /&gt;
        │&lt;br /&gt;
        ▼&lt;br /&gt;
    Gemma 3 4B&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Версия доказала работоспособность основной концепции:&lt;br /&gt;
&lt;br /&gt;
'''одна точка входа → несколько специализированных локальных моделей.'''&lt;br /&gt;
&lt;br /&gt;
== Router v2 ==&lt;br /&gt;
&lt;br /&gt;
Во второй версии маршрутизатор стал значительно сложнее.&lt;br /&gt;
&lt;br /&gt;
Были добавлены:&lt;br /&gt;
&lt;br /&gt;
* score-based routing;&lt;br /&gt;
* определение загруженной Ollama-модели;&lt;br /&gt;
* session affinity;&lt;br /&gt;
* hysteresis;&lt;br /&gt;
* статистика;&lt;br /&gt;
* журналирование;&lt;br /&gt;
* контроль переключения моделей.&lt;br /&gt;
&lt;br /&gt;
Router начал использовать Ollama API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /api/ps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
для определения модели, которая в данный момент находится в памяти.&lt;br /&gt;
&lt;br /&gt;
В API Router появились служебные endpoint'ы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/chat&lt;br /&gt;
/health&lt;br /&gt;
/stats&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Проблема Router v2 ===&lt;br /&gt;
&lt;br /&gt;
Во время тестирования была обнаружена важная ошибка классификации.&lt;br /&gt;
&lt;br /&gt;
Запрос:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Есть три сервера A, B и C.&lt;br /&gt;
A быстрее B на 20%.&lt;br /&gt;
B быстрее C на 25%.&lt;br /&gt;
Если C выполняет задачу за 100 секунд,&lt;br /&gt;
сколько времени потребуется A?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
является математической задачей.&lt;br /&gt;
&lt;br /&gt;
Однако Router воспринимал слово:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
сервер&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
как инфраструктурный признак и отправлял запрос в:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
INFRA → Qwen3 8B&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это показало недостаток простой маршрутизации по ключевым словам.&lt;br /&gt;
&lt;br /&gt;
== Router v3 ==&lt;br /&gt;
&lt;br /&gt;
В Router v3 алгоритм классификации был переработан.&lt;br /&gt;
&lt;br /&gt;
Основная идея — разные слова должны иметь '''разный вес'''.&lt;br /&gt;
&lt;br /&gt;
=== Слабые инфраструктурные признаки ===&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
сервер&lt;br /&gt;
Linux&lt;br /&gt;
Ubuntu&lt;br /&gt;
VM&lt;br /&gt;
NVIDIA&lt;br /&gt;
сеть&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сами по себе такие слова больше не должны гарантировать выбор INFRA.&lt;br /&gt;
&lt;br /&gt;
=== Сильные инфраструктурные признаки ===&lt;br /&gt;
&lt;br /&gt;
Больший вес получили специфические технические термины:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Proxmox&lt;br /&gt;
vfio-pci&lt;br /&gt;
IOMMU&lt;br /&gt;
lspci&lt;br /&gt;
hostpci&lt;br /&gt;
systemctl&lt;br /&gt;
journalctl&lt;br /&gt;
initramfs&lt;br /&gt;
ZFS&lt;br /&gt;
NFS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SMART-признаки ===&lt;br /&gt;
&lt;br /&gt;
Для определения аналитических задач используются признаки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
сколько&lt;br /&gt;
проценты&lt;br /&gt;
быстрее&lt;br /&gt;
медленнее&lt;br /&gt;
рассчитай&lt;br /&gt;
объясни расчёт&lt;br /&gt;
вероятность&lt;br /&gt;
логическая задача&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом Router вычисляет несколько независимых оценок:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST&lt;br /&gt;
INFRA&lt;br /&gt;
SMART&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и выбирает роль с максимальным результатом.&lt;br /&gt;
&lt;br /&gt;
== Пример работы Router v3 ==&lt;br /&gt;
&lt;br /&gt;
Для математической задачи с тремя серверами Router получил:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST  = 1&lt;br /&gt;
INFRA = 1&lt;br /&gt;
SMART = 16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
role: smart&lt;br /&gt;
model: qwen3.5:9b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель правильно решила задачу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C = 100 секунд&lt;br /&gt;
&lt;br /&gt;
B быстрее C на 25%:&lt;br /&gt;
100 / 1.25 = 80 секунд&lt;br /&gt;
&lt;br /&gt;
A быстрее B на 20%:&lt;br /&gt;
80 / 1.2 = 66.67 секунды&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A ≈ 66.67 секунды&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Пример инфраструктурного запроса ==&lt;br /&gt;
&lt;br /&gt;
Запрос:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
В Proxmox lspci показывает nouveau вместо vfio-pci.&lt;br /&gt;
Что проверить?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router определил:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST  = 1&lt;br /&gt;
INFRA = 23&lt;br /&gt;
SMART = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и выбрал:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
role: infra&lt;br /&gt;
model: qwen3:8b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
То есть специализированный инфраструктурный запрос был направлен технической модели.&lt;br /&gt;
&lt;br /&gt;
== Пример FAST-запроса ==&lt;br /&gt;
&lt;br /&gt;
Запрос:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Исправь текст:&lt;br /&gt;
я одел куртку и вышел на улицу&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router получил:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FAST  = 6&lt;br /&gt;
INFRA = 0&lt;br /&gt;
SMART = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и правильно выбрал:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
role: fast&lt;br /&gt;
model: gemma3:4b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Однако сама модель ответила:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Я одел куртку и вышел на улицу.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
вместо:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Я надел куртку и вышел на улицу.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это продемонстрировало важное различие:&lt;br /&gt;
&lt;br /&gt;
'''правильная маршрутизация не гарантирует правильность ответа модели.'''&lt;br /&gt;
&lt;br /&gt;
В дальнейшем для решения подобных проблем планируется отдельный слой проверки ответов — '''Verifier'''.&lt;br /&gt;
&lt;br /&gt;
== Переключение моделей ==&lt;br /&gt;
&lt;br /&gt;
Router получает информацию о моделях, загруженных Ollama.&lt;br /&gt;
&lt;br /&gt;
Пример ответа &amp;lt;code&amp;gt;/health&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;router&amp;quot;: &amp;quot;ok&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;3&amp;quot;,&lt;br /&gt;
  &amp;quot;ollama_loaded_models&amp;quot;: [&lt;br /&gt;
    &amp;quot;gemma3:4b&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;sessions&amp;quot;: 3&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При запросе другой категории Router может переключить модель.&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Gemma 3 4B&lt;br /&gt;
     │&lt;br /&gt;
     ▼&lt;br /&gt;
Qwen3 8B&lt;br /&gt;
     │&lt;br /&gt;
     ▼&lt;br /&gt;
Qwen3.5 9B&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В API-ответе отображаются диагностические данные:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
model&lt;br /&gt;
role&lt;br /&gt;
loaded_before&lt;br /&gt;
switch&lt;br /&gt;
scores&lt;br /&gt;
route_reason&lt;br /&gt;
elapsed&lt;br /&gt;
eval_count&lt;br /&gt;
eval_duration&lt;br /&gt;
load_duration&lt;br /&gt;
tok_s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Это позволяет анализировать не только результат маршрутизации, но и производительность системы.&lt;br /&gt;
&lt;br /&gt;
== Стоимость переключения ==&lt;br /&gt;
&lt;br /&gt;
Загрузка другой модели в VRAM занимает заметное время.&lt;br /&gt;
&lt;br /&gt;
На используемой системе переключение обычно добавляет несколько секунд ожидания.&lt;br /&gt;
&lt;br /&gt;
Поэтому Router старается избегать ненужного переключения модели.&lt;br /&gt;
&lt;br /&gt;
Для этого используются механизмы:&lt;br /&gt;
&lt;br /&gt;
* session affinity;&lt;br /&gt;
* hysteresis;&lt;br /&gt;
* определение уже загруженной модели.&lt;br /&gt;
&lt;br /&gt;
В перспективе Router должен учитывать не только качество предполагаемого ответа, но и '''стоимость переключения модели'''.&lt;br /&gt;
&lt;br /&gt;
== Контрольный тест Router v3 ==&lt;br /&gt;
&lt;br /&gt;
Для проверки Router v3 был создан отдельный тест:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
test-router-v3.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Он содержит '''30 запросов''':&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Категория&lt;br /&gt;
! Количество&lt;br /&gt;
|-&lt;br /&gt;
| FAST&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| INFRA&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
| SMART&lt;br /&gt;
| 10&lt;br /&gt;
|-&lt;br /&gt;
! Всего&lt;br /&gt;
! 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Для каждого запроса заранее задаётся ожидаемая категория.&lt;br /&gt;
&lt;br /&gt;
Тест сравнивает:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EXPECTED&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
с:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ACTUAL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Итог тестирования ===&lt;br /&gt;
&lt;br /&gt;
22 августа 2026 года Router v3 успешно прошёл полный контрольный тест.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RESULT: 30/30 = 100.0%&lt;br /&gt;
&lt;br /&gt;
PERFECT ROUTING — 30/30&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Категория&lt;br /&gt;
! Результат&lt;br /&gt;
! Модель&lt;br /&gt;
|-&lt;br /&gt;
| FAST&lt;br /&gt;
| 10 / 10&lt;br /&gt;
| Gemma 3 4B&lt;br /&gt;
|-&lt;br /&gt;
| INFRA&lt;br /&gt;
| 10 / 10&lt;br /&gt;
| Qwen3 8B&lt;br /&gt;
|-&lt;br /&gt;
| SMART&lt;br /&gt;
| 10 / 10&lt;br /&gt;
| Qwen3.5 9B&lt;br /&gt;
|-&lt;br /&gt;
! Итого&lt;br /&gt;
! '''30 / 30 (100%)'''&lt;br /&gt;
! &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Таким образом Router v3 стал первой зафиксированной стабильной версией RAMBA AI Router.&lt;br /&gt;
&lt;br /&gt;
== Фиксация стабильной версии ==&lt;br /&gt;
&lt;br /&gt;
После успешного теста были сохранены контрольные копии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
router-v3-perfect.py&lt;br /&gt;
test-router-v3-perfect.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и создан архив:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/home/artem/ramba-router-v3-perfect.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Размер архива на момент создания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
6.4 KB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Router v3 после этого считается '''стабильной контрольной точкой проекта'''.&lt;br /&gt;
&lt;br /&gt;
== Ограничения Router v3 ==&lt;br /&gt;
&lt;br /&gt;
Несмотря на успешный результат 30/30, версия v3 имеет ряд архитектурных ограничений.&lt;br /&gt;
&lt;br /&gt;
Главное из них — недостаточное понимание контекста разговора.&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Пользователь:&lt;br /&gt;
В Proxmox vfio-pci не захватывает GTX 1080.&lt;br /&gt;
&lt;br /&gt;
Router:&lt;br /&gt;
INFRA&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующее сообщение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
А как это проверить?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
само по себе почти не содержит признаков INFRA.&lt;br /&gt;
&lt;br /&gt;
Человек понимает контекст предыдущего сообщения, однако Router v3 в основном анализирует текущий запрос.&lt;br /&gt;
&lt;br /&gt;
Именно эта проблема является основной целью следующей версии.&lt;br /&gt;
&lt;br /&gt;
= Router v4 =&lt;br /&gt;
&lt;br /&gt;
Следующий этап разработки — '''RAMBA AI Router v4'''.&lt;br /&gt;
&lt;br /&gt;
Главное изменение:&lt;br /&gt;
&lt;br /&gt;
'''контекстная маршрутизация.'''&lt;br /&gt;
&lt;br /&gt;
Router должен учитывать не только последнее сообщение, но и историю текущего диалога.&lt;br /&gt;
&lt;br /&gt;
Планируемая структура сессии:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
session&lt;br /&gt;
 │&lt;br /&gt;
 ├── session_id&lt;br /&gt;
 ├── current_role&lt;br /&gt;
 ├── previous_model&lt;br /&gt;
 └── messages&lt;br /&gt;
       │&lt;br /&gt;
       ├── user&lt;br /&gt;
       ├── assistant&lt;br /&gt;
       ├── user&lt;br /&gt;
       ├── assistant&lt;br /&gt;
       └── ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Пользователь:&lt;br /&gt;
В Proxmox vfio-pci не захватывает GTX 1080.&lt;br /&gt;
&lt;br /&gt;
→ INFRA / Qwen3 8B&lt;br /&gt;
&lt;br /&gt;
Пользователь:&lt;br /&gt;
А как проверить?&lt;br /&gt;
&lt;br /&gt;
→ анализ контекста&lt;br /&gt;
→ сохранение роли INFRA&lt;br /&gt;
→ Qwen3 8B&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== План Router v4 ==&lt;br /&gt;
&lt;br /&gt;
Первый этап:&lt;br /&gt;
&lt;br /&gt;
# хранение истории диалога;&lt;br /&gt;
# передача контекста модели;&lt;br /&gt;
# ограничение размера истории;&lt;br /&gt;
# sticky routing;&lt;br /&gt;
# корректная обработка коротких follow-up сообщений.&lt;br /&gt;
&lt;br /&gt;
Второй этап:&lt;br /&gt;
&lt;br /&gt;
# отдельный system prompt для FAST;&lt;br /&gt;
# отдельный system prompt для INFRA;&lt;br /&gt;
# отдельный system prompt для SMART.&lt;br /&gt;
&lt;br /&gt;
Третий этап:&lt;br /&gt;
&lt;br /&gt;
# оценка уверенности Router;&lt;br /&gt;
# автоматическая эскалация FAST → SMART;&lt;br /&gt;
# обработка неоднозначных запросов;&lt;br /&gt;
# дополнительные контрольные тесты.&lt;br /&gt;
&lt;br /&gt;
== Дальнейшее развитие ==&lt;br /&gt;
&lt;br /&gt;
Перспективная архитектура RAMBA AI:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                     Пользователь&lt;br /&gt;
                          │&lt;br /&gt;
                          ▼&lt;br /&gt;
                  RAMBA AI Router&lt;br /&gt;
                          │&lt;br /&gt;
            ┌─────────────┼─────────────┐&lt;br /&gt;
            ▼             ▼             ▼&lt;br /&gt;
          FAST          INFRA         SMART&lt;br /&gt;
            │             │             │&lt;br /&gt;
            └─────────────┼─────────────┘&lt;br /&gt;
                          │&lt;br /&gt;
                          ▼&lt;br /&gt;
                       Verifier&lt;br /&gt;
                          │&lt;br /&gt;
                          ▼&lt;br /&gt;
                         RAG&lt;br /&gt;
                          │&lt;br /&gt;
                          ▼&lt;br /&gt;
                  Финальный ответ&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Планируется развитие следующих компонентов:&lt;br /&gt;
&lt;br /&gt;
* '''Context Memory''' — память текущего диалога;&lt;br /&gt;
* '''Verifier''' — проверка качества и корректности ответа;&lt;br /&gt;
* '''Escalation''' — передача сложного запроса более сильной модели;&lt;br /&gt;
* '''RAG''' — подключение собственной базы знаний RAMBA;&lt;br /&gt;
* '''Infrastructure Knowledge''' — информация о серверах и сервисах RAMBA;&lt;br /&gt;
* '''Tool Calling''' — выполнение разрешённых действий через инструменты;&lt;br /&gt;
* '''Metrics''' — статистика качества, скорости и маршрутизации.&lt;br /&gt;
&lt;br /&gt;
== Статус проекта ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Компонент&lt;br /&gt;
! Статус&lt;br /&gt;
|-&lt;br /&gt;
| Ollama&lt;br /&gt;
| {{Да}}&lt;br /&gt;
|-&lt;br /&gt;
| GPU inference&lt;br /&gt;
| {{Да}}&lt;br /&gt;
|-&lt;br /&gt;
| FAST model&lt;br /&gt;
| {{Да}}&lt;br /&gt;
|-&lt;br /&gt;
| INFRA model&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| SMART model&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| Router API&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| Score-based routing&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| Ollama model detection&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| Session affinity&lt;br /&gt;
| '''Готово'''&lt;br /&gt;
|-&lt;br /&gt;
| Router v3 test&lt;br /&gt;
| '''30/30'''&lt;br /&gt;
|-&lt;br /&gt;
| Context-aware routing&lt;br /&gt;
| В разработке (v4)&lt;br /&gt;
|-&lt;br /&gt;
| Verifier&lt;br /&gt;
| Планируется&lt;br /&gt;
|-&lt;br /&gt;
| RAG&lt;br /&gt;
| Планируется&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Итог ==&lt;br /&gt;
&lt;br /&gt;
'''RAMBA AI Router v3''' подтвердил работоспособность архитектуры динамического выбора локальных языковых моделей.&lt;br /&gt;
&lt;br /&gt;
Контрольный тест показал:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
30 / 30&lt;br /&gt;
100%&lt;br /&gt;
PERFECT ROUTING&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вместо запуска одной универсальной модели RAMBA AI использует несколько специализированных моделей и выбирает подходящую в зависимости от характера задачи.&lt;br /&gt;
&lt;br /&gt;
Следующий этап проекта — '''Router v4''', который добавит память диалога и контекстную маршрутизацию.&lt;br /&gt;
&lt;br /&gt;
[[Категория:RAMBA]]&lt;br /&gt;
[[Категория:RAMBA AI]]&lt;br /&gt;
[[Категория:Искусственный интеллект]]&lt;br /&gt;
[[Категория:Серверы]]&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=113</id>
		<title>Мониторинг</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=113"/>
		<updated>2026-06-21T10:13:14Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Игра&lt;br /&gt;
! Сервер&lt;br /&gt;
! Статус&lt;br /&gt;
! Игроки&lt;br /&gt;
! Версия&lt;br /&gt;
|-&lt;br /&gt;
| 🦀 Rust&lt;br /&gt;
| [RU] RAMBA Server Rust #1&lt;br /&gt;
| 🟢 Онлайн&lt;br /&gt;
| 0/200&lt;br /&gt;
| 2627&lt;br /&gt;
|-&lt;br /&gt;
| ⛏️ Minecraft&lt;br /&gt;
| [RU] RAMBA-ART Minecraft&lt;br /&gt;
| 🟢 Онлайн&lt;br /&gt;
| 0/100&lt;br /&gt;
| 1.21.x&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=112</id>
		<title>Мониторинг</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=112"/>
		<updated>2026-06-21T10:12:53Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;rambamonitor /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Игра&lt;br /&gt;
! Сервер&lt;br /&gt;
! Статус&lt;br /&gt;
! Игроки&lt;br /&gt;
! Версия&lt;br /&gt;
|-&lt;br /&gt;
| 🦀 Rust&lt;br /&gt;
| [RU] RAMBA Server Rust #1&lt;br /&gt;
| 🟢 Онлайн&lt;br /&gt;
| 0/200&lt;br /&gt;
| 2627&lt;br /&gt;
|-&lt;br /&gt;
| ⛏️ Minecraft&lt;br /&gt;
| [RU] RAMBA-ART Minecraft&lt;br /&gt;
| 🟢 Онлайн&lt;br /&gt;
| 0/100&lt;br /&gt;
| 1.21.x&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=111</id>
		<title>Мониторинг</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=111"/>
		<updated>2026-06-21T10:09:08Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;rambamonitor /&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=110</id>
		<title>Мониторинг</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=110"/>
		<updated>2026-06-21T10:08:57Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;rustserver ip=&amp;quot;195.138.232.82&amp;quot; port=&amp;quot;28017&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;minecraftserver ip=&amp;quot;195.138.232.82&amp;quot; port=&amp;quot;25565&amp;quot; name=&amp;quot;[RU] RAMBA-ART Minecraft&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;rambamonitor /&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=109</id>
		<title>Мониторинг</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=109"/>
		<updated>2026-06-21T09:58:39Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;rustserver ip=&amp;quot;195.138.232.82&amp;quot; port=&amp;quot;28017&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;minecraftserver ip=&amp;quot;195.138.232.82&amp;quot; port=&amp;quot;25565&amp;quot; name=&amp;quot;[RU] RAMBA-ART Minecraft&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=108</id>
		<title>Мониторинг</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=108"/>
		<updated>2026-06-21T09:54:22Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;rustserver ip=&amp;quot;195.138.232.82&amp;quot; port=&amp;quot;28017&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;minecraftserver ip=&amp;quot;195.138.232.82&amp;quot; port=&amp;quot;25565&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=107</id>
		<title>Мониторинг</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=107"/>
		<updated>2026-06-21T09:36:58Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;rustserver ip=&amp;quot;195.138.232.82&amp;quot; port=&amp;quot;28017&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;[RU] RAMBA-ART Minecraft server ip=&amp;quot;195.138.232.82&amp;quot; port=&amp;quot;25565&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=RAMBA_Matrix&amp;diff=105</id>
		<title>RAMBA Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=RAMBA_Matrix&amp;diff=105"/>
		<updated>2026-06-19T12:53:42Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Развёртывание корпоративного мессенджера RAMBA Matrix =&lt;br /&gt;
&lt;br /&gt;
== Цель проекта ==&lt;br /&gt;
&lt;br /&gt;
Цель проекта — развернуть собственный корпоративный мессенджер для организации RAMBA на базе открытого протокола Matrix.&lt;br /&gt;
&lt;br /&gt;
Основные требования:&lt;br /&gt;
&lt;br /&gt;
* собственный сервер сообщений;&lt;br /&gt;
* поддержка мобильных клиентов Android и iOS;&lt;br /&gt;
* поддержка веб-клиента;&lt;br /&gt;
* аудио- и видеозвонки;&lt;br /&gt;
* сквозное шифрование;&lt;br /&gt;
* контроль над данными;&lt;br /&gt;
* возможность работы примерно до 1000 пользователей;&lt;br /&gt;
* возможность дальнейшего резервного копирования и масштабирования.&lt;br /&gt;
&lt;br /&gt;
== Итоговая архитектура ==&lt;br /&gt;
&lt;br /&gt;
В проекте используется следующая схема:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Пользователь&lt;br /&gt;
  |&lt;br /&gt;
  | Element Web / Element Mobile&lt;br /&gt;
  |&lt;br /&gt;
Интернет&lt;br /&gt;
  |&lt;br /&gt;
  | HTTPS&lt;br /&gt;
  |&lt;br /&gt;
Reverse Proxy / SSL&lt;br /&gt;
BrainyCP: 192.168.1.12&lt;br /&gt;
  |&lt;br /&gt;
  | proxy_pass&lt;br /&gt;
  |&lt;br /&gt;
VM ramba-chat&lt;br /&gt;
Ubuntu Server 26.04&lt;br /&gt;
  |&lt;br /&gt;
  |-- Dendrite&lt;br /&gt;
  |-- PostgreSQL&lt;br /&gt;
  |-- Coturn&lt;br /&gt;
  |-- Media Store&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основные домены:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Назначение&lt;br /&gt;
&lt;br /&gt;
| ! Домен              |&lt;br /&gt;
| -------------------- |&lt;br /&gt;
| Matrix Homeserver    |&lt;br /&gt;
| chat.ramba-art.ru    |&lt;br /&gt;
| -                    |&lt;br /&gt;
| Element Web          |&lt;br /&gt;
| element.ramba-art.ru |&lt;br /&gt;
| -                    |&lt;br /&gt;
| Matrix Server Name   |&lt;br /&gt;
| ramba-art.ru         |&lt;br /&gt;
| }                    |&lt;br /&gt;
&lt;br /&gt;
Matrix ID пользователей имеет вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@username:ramba-art.ru&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@ivan_ivanov:ramba-art.ru&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Почему выбран Matrix ==&lt;br /&gt;
&lt;br /&gt;
Matrix — открытый протокол для обмена сообщениями, голосовой и видеосвязи.&lt;br /&gt;
&lt;br /&gt;
Преимущества Matrix:&lt;br /&gt;
&lt;br /&gt;
* открытый протокол;&lt;br /&gt;
* нет привязки к одному поставщику;&lt;br /&gt;
* поддержка федерации между серверами;&lt;br /&gt;
* поддержка сквозного шифрования;&lt;br /&gt;
* есть готовые клиенты для Android, iOS, Web, Windows, Linux и macOS;&lt;br /&gt;
* можно хранить данные на собственной инфраструктуре;&lt;br /&gt;
* можно использовать собственный домен для пользователей.&lt;br /&gt;
&lt;br /&gt;
Недостатки Matrix:&lt;br /&gt;
&lt;br /&gt;
* сложнее в администрировании, чем обычные SaaS-мессенджеры;&lt;br /&gt;
* требуется следить за обновлениями;&lt;br /&gt;
* требуется корректная настройка TURN/STUN для звонков;&lt;br /&gt;
* требуется резервное копирование базы данных и медиафайлов;&lt;br /&gt;
* при больших нагрузках нужно планировать ресурсы заранее.&lt;br /&gt;
&lt;br /&gt;
== Почему выбран Dendrite ==&lt;br /&gt;
&lt;br /&gt;
В качестве homeserver выбран Dendrite.&lt;br /&gt;
&lt;br /&gt;
Dendrite — сервер Matrix, написанный на Go. Он легче по ресурсам, чем классический Synapse, и подходит для компактного развёртывания.&lt;br /&gt;
&lt;br /&gt;
Плюсы Dendrite:&lt;br /&gt;
&lt;br /&gt;
* низкое потребление памяти;&lt;br /&gt;
* простая монолитная установка;&lt;br /&gt;
* высокая скорость запуска;&lt;br /&gt;
* удобная сборка из исходного кода;&lt;br /&gt;
* хорошо подходит для собственного сервера организации;&lt;br /&gt;
* использует PostgreSQL как основную базу данных.&lt;br /&gt;
&lt;br /&gt;
Минусы Dendrite:&lt;br /&gt;
&lt;br /&gt;
* менее зрелый проект по сравнению с Synapse;&lt;br /&gt;
* часть экосистемы Matrix исторически лучше тестировалась на Synapse;&lt;br /&gt;
* меньше готовых инструкций и примеров;&lt;br /&gt;
* при нестандартных интеграциях может потребоваться ручная отладка.&lt;br /&gt;
&lt;br /&gt;
Вывод: для RAMBA выбран Dendrite, потому что он проще и легче для собственного сервера, при этом покрывает основные требования проекта: сообщения, Element, федерация, E2EE и звонки.&lt;br /&gt;
&lt;br /&gt;
== Почему выбран PostgreSQL ==&lt;br /&gt;
&lt;br /&gt;
PostgreSQL используется как основная база данных Dendrite.&lt;br /&gt;
&lt;br /&gt;
Плюсы PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
* надёжная промышленная СУБД;&lt;br /&gt;
* хорошо подходит для постоянного хранения событий Matrix;&lt;br /&gt;
* поддерживается Dendrite;&lt;br /&gt;
* удобно резервировать через pg_dump;&lt;br /&gt;
* проще восстановить отдельно от файловой системы.&lt;br /&gt;
&lt;br /&gt;
Минусы PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
* требует отдельного контроля резервных копий;&lt;br /&gt;
* нельзя полагаться только на snapshot VM;&lt;br /&gt;
* желательно не размещать базу на медленном сетевом хранилище.&lt;br /&gt;
&lt;br /&gt;
Вывод: PostgreSQL следует хранить на локальном диске VM, а не на NFS.&lt;br /&gt;
&lt;br /&gt;
== Почему выбран Element ==&lt;br /&gt;
&lt;br /&gt;
Element выбран как основной клиент Matrix.&lt;br /&gt;
&lt;br /&gt;
Используются:&lt;br /&gt;
&lt;br /&gt;
* Element Web — через element.ramba-art.ru;&lt;br /&gt;
* Element Mobile — для Android и iOS.&lt;br /&gt;
&lt;br /&gt;
Плюсы Element:&lt;br /&gt;
&lt;br /&gt;
* официальный и наиболее развитый клиент Matrix;&lt;br /&gt;
* поддержка E2EE;&lt;br /&gt;
* поддержка аудио- и видеозвонков;&lt;br /&gt;
* есть веб-версия;&lt;br /&gt;
* есть мобильные приложения;&lt;br /&gt;
* можно заранее указать свой homeserver в config.json.&lt;br /&gt;
&lt;br /&gt;
Минусы Element:&lt;br /&gt;
&lt;br /&gt;
* пользователю нужно привыкнуть к интерфейсу Matrix;&lt;br /&gt;
* при первом входе важно правильно настроить безопасное восстановление ключей;&lt;br /&gt;
* при работе через браузер возможны предупреждения Safe Browsing, если домен имеет плохую репутацию.&lt;br /&gt;
&lt;br /&gt;
== Почему выбран Coturn ==&lt;br /&gt;
&lt;br /&gt;
Coturn используется для аудио- и видеозвонков.&lt;br /&gt;
&lt;br /&gt;
Для звонков Matrix/Element использует WebRTC. Если два клиента не могут соединиться напрямую через NAT, используется TURN-сервер.&lt;br /&gt;
&lt;br /&gt;
Плюсы Coturn:&lt;br /&gt;
&lt;br /&gt;
* стандартное решение для STUN/TURN;&lt;br /&gt;
* совместим с WebRTC;&lt;br /&gt;
* поддерживает временные креды через shared secret;&lt;br /&gt;
* можно использовать с Matrix;&lt;br /&gt;
* можно ограничить диапазон relay-портов.&lt;br /&gt;
&lt;br /&gt;
Минусы Coturn:&lt;br /&gt;
&lt;br /&gt;
* требует проброса портов на маршрутизаторе;&lt;br /&gt;
* требует правильной настройки external-ip;&lt;br /&gt;
* при неправильном firewall звонок может подключаться без аудио или видео;&lt;br /&gt;
* relay-трафик может создавать нагрузку на канал.&lt;br /&gt;
&lt;br /&gt;
В проекте используются порты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
3478/tcp&lt;br /&gt;
3478/udp&lt;br /&gt;
5349/tcp&lt;br /&gt;
49152-49252/udp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример ключевых настроек Coturn:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
use-auth-secret&lt;br /&gt;
realm=ramba-art.ru&lt;br /&gt;
listening-ip=192.168.1.50&lt;br /&gt;
external-ip=195.138.232.82&lt;br /&gt;
fingerprint&lt;br /&gt;
lt-cred-mech&lt;br /&gt;
&lt;br /&gt;
min-port=49152&lt;br /&gt;
max-port=49252 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Почему используется Reverse Proxy BrainyCP ==&lt;br /&gt;
&lt;br /&gt;
BrainyCP используется как внешний reverse proxy и точка управления SSL-сертификатами.&lt;br /&gt;
&lt;br /&gt;
Плюсы такого решения:&lt;br /&gt;
&lt;br /&gt;
* SSL-сертификаты управляются централизованно;&lt;br /&gt;
* внешние домены обслуживаются в одном месте;&lt;br /&gt;
* Dendrite и Element не публикуются напрямую;&lt;br /&gt;
* проще управлять HTTPS;&lt;br /&gt;
* можно разделить публичный фронт и внутренние сервисы.&lt;br /&gt;
&lt;br /&gt;
Минусы:&lt;br /&gt;
&lt;br /&gt;
* появляется дополнительная точка отказа;&lt;br /&gt;
* ошибки в Nginx-конфигурации могут повлиять на Matrix;&lt;br /&gt;
* нужно следить за корректной передачей заголовков;&lt;br /&gt;
* при проблемах с HTTP/2 или TLS диагностика становится сложнее.&lt;br /&gt;
&lt;br /&gt;
== Почему VM, а не LXC ==&lt;br /&gt;
&lt;br /&gt;
Для Matrix выбран вариант с отдельной VM в Proxmox.&lt;br /&gt;
&lt;br /&gt;
Плюсы VM:&lt;br /&gt;
&lt;br /&gt;
* лучшая изоляция;&lt;br /&gt;
* проще переносить между узлами Proxmox;&lt;br /&gt;
* полноценная система с собственным ядром;&lt;br /&gt;
* удобнее делать snapshot и backup;&lt;br /&gt;
* меньше неожиданных ограничений, чем в LXC.&lt;br /&gt;
&lt;br /&gt;
Минусы VM:&lt;br /&gt;
&lt;br /&gt;
* потребляет больше ресурсов, чем LXC;&lt;br /&gt;
* нужно отдельно следить за обновлениями ОС;&lt;br /&gt;
* требуется больше дискового пространства.&lt;br /&gt;
&lt;br /&gt;
Вывод: для корпоративного мессенджера VM предпочтительнее, так как важнее надёжность и изоляция.&lt;br /&gt;
&lt;br /&gt;
== Развёртывание VM ==&lt;br /&gt;
&lt;br /&gt;
Рекомендуемые параметры VM для старта:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Ресурс&lt;br /&gt;
&lt;br /&gt;
| ! Значение          |&lt;br /&gt;
| ------------------- |&lt;br /&gt;
| CPU                 |&lt;br /&gt;
| 4 vCPU              |&lt;br /&gt;
| -                   |&lt;br /&gt;
| RAM                 |&lt;br /&gt;
| 8-16 GB             |&lt;br /&gt;
| -                   |&lt;br /&gt;
| Disk                |&lt;br /&gt;
| 100 GB              |&lt;br /&gt;
| -                   |&lt;br /&gt;
| OS                  |&lt;br /&gt;
| Ubuntu Server 26.04 |&lt;br /&gt;
| -                   |&lt;br /&gt;
| Network             |&lt;br /&gt;
| Static IP           |&lt;br /&gt;
| }                   |&lt;br /&gt;
&lt;br /&gt;
В проекте используется VM:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ramba-chat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IP VM:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
192.168.1.50&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Установка системных пакетов ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install -y git curl wget build-essential postgresql coturn nginx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для сборки Dendrite также требуется Go.&lt;br /&gt;
&lt;br /&gt;
== Установка PostgreSQL ==&lt;br /&gt;
&lt;br /&gt;
Создаётся пользователь и база данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u postgres createuser dendrite&lt;br /&gt;
sudo -u postgres createdb -O dendrite dendrite&lt;br /&gt;
sudo -u postgres psql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри psql задаётся пароль:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER USER dendrite WITH PASSWORD 'strong_password';&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Сборка Dendrite ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt&lt;br /&gt;
sudo git clone https://github.com/matrix-org/dendrite.git&lt;br /&gt;
sudo chown -R $USER:$USER /opt/dendrite&lt;br /&gt;
cd /opt/dendrite&lt;br /&gt;
&lt;br /&gt;
go build -o bin/dendrite ./cmd/dendrite&lt;br /&gt;
go build -o bin/create-account ./cmd/create-account&lt;br /&gt;
go build -o bin/generate-config ./cmd/generate-config&lt;br /&gt;
go build -o bin/generate-keys ./cmd/generate-keys &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Генерация конфигурации Dendrite ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/dendrite&lt;br /&gt;
&lt;br /&gt;
./bin/generate-keys --private-key matrix_key.pem&lt;br /&gt;
&lt;br /&gt;
./bin/generate-config &lt;br /&gt;
--server ramba-art.ru &lt;br /&gt;
--db postgresql://dendrite:password@localhost/dendrite?sslmode=disable &lt;br /&gt;
--private-key matrix_key.pem \&lt;br /&gt;
&lt;br /&gt;
&amp;gt; dendrite.yaml&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;gt; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После генерации конфиг редактируется вручную.&lt;br /&gt;
&lt;br /&gt;
Важные параметры:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
global:&lt;br /&gt;
  server_name: ramba-art.ru&lt;br /&gt;
&lt;br /&gt;
media_api:&lt;br /&gt;
base_path: media&lt;br /&gt;
max_file_size_bytes: 10485760 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Systemd-сервис Dendrite ==&lt;br /&gt;
&lt;br /&gt;
Создаётся файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/systemd/system/dendrite.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Dendrite Matrix Server&lt;br /&gt;
After=network.target postgresql.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
WorkingDirectory=/opt/dendrite&lt;br /&gt;
ExecStart=/opt/dendrite/dendrite -config /opt/dendrite/dendrite.yaml&lt;br /&gt;
Restart=always&lt;br /&gt;
RestartSec=5&lt;br /&gt;
User=artem&lt;br /&gt;
Group=artem&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запуск:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl daemon-reload&lt;br /&gt;
sudo systemctl enable --now dendrite&lt;br /&gt;
sudo systemctl status dendrite&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка Reverse Proxy для Dendrite ==&lt;br /&gt;
&lt;br /&gt;
На стороне BrainyCP/Nginx создаётся HTTPS-сайт:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
chat.ramba-art.ru&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Он проксирует запросы на:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
http://192.168.1.50:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важные заголовки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
proxy_set_header Host $host;&lt;br /&gt;
proxy_set_header X-Real-IP $remote_addr;&lt;br /&gt;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;
proxy_set_header X-Forwarded-Proto https;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка .well-known ==&lt;br /&gt;
&lt;br /&gt;
Для красивых Matrix ID вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@user:ramba-art.ru&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
нужно настроить .well-known на основном домене.&lt;br /&gt;
&lt;br /&gt;
Файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
https://ramba-art.ru/.well-known/matrix/server&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Содержимое:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;m.server&amp;quot;: &amp;quot;chat.ramba-art.ru:443&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
https://ramba-art.ru/.well-known/matrix/client&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Содержимое:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;m.homeserver&amp;quot;: {&lt;br /&gt;
    &amp;quot;base_url&amp;quot;: &amp;quot;https://chat.ramba-art.ru&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Установка Element Web ==&lt;br /&gt;
&lt;br /&gt;
Element Web размещается на отдельном поддомене:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
element.ramba-art.ru&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример config.json:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;default_server_config&amp;quot;: {&lt;br /&gt;
    &amp;quot;m.homeserver&amp;quot;: {&lt;br /&gt;
      &amp;quot;base_url&amp;quot;: &amp;quot;https://chat.ramba-art.ru&amp;quot;,&lt;br /&gt;
      &amp;quot;server_name&amp;quot;: &amp;quot;ramba-art.ru&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;disable_custom_urls&amp;quot;: true,&lt;br /&gt;
  &amp;quot;disable_guests&amp;quot;: true,&lt;br /&gt;
  &amp;quot;brand&amp;quot;: &amp;quot;RAMBA Chat&amp;quot;,&lt;br /&gt;
  &amp;quot;default_theme&amp;quot;: &amp;quot;dark&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Плюсы отдельного поддомена для Element:&lt;br /&gt;
&lt;br /&gt;
* проще обслуживать веб-клиент;&lt;br /&gt;
* можно независимо обновлять Element;&lt;br /&gt;
* можно брендировать интерфейс;&lt;br /&gt;
* пользователю не нужно вручную вводить homeserver.&lt;br /&gt;
&lt;br /&gt;
Минусы:&lt;br /&gt;
&lt;br /&gt;
* нужен отдельный SSL-сертификат;&lt;br /&gt;
* при проблемах с репутацией домена браузер может блокировать страницу.&lt;br /&gt;
&lt;br /&gt;
== Настройка Coturn ==&lt;br /&gt;
&lt;br /&gt;
Установка:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install -y coturn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включение сервиса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo sed -i 's/#TURNSERVER_ENABLED=1/TURNSERVER_ENABLED=1/' /etc/default/coturn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример конфигурации:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
listening-port=3478&lt;br /&gt;
tls-listening-port=5349&lt;br /&gt;
&lt;br /&gt;
listening-ip=192.168.1.50&lt;br /&gt;
relay-ip=192.168.1.50&lt;br /&gt;
external-ip=195.138.232.82&lt;br /&gt;
&lt;br /&gt;
use-auth-secret&lt;br /&gt;
static-auth-secret=SECRET&lt;br /&gt;
realm=ramba-art.ru&lt;br /&gt;
&lt;br /&gt;
fingerprint&lt;br /&gt;
lt-cred-mech&lt;br /&gt;
no-multicast-peers&lt;br /&gt;
no-cli&lt;br /&gt;
&lt;br /&gt;
min-port=49152&lt;br /&gt;
max-port=49252 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запуск:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl enable --now coturn&lt;br /&gt;
sudo systemctl status coturn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка TURN в Dendrite ==&lt;br /&gt;
&lt;br /&gt;
В dendrite.yaml указывается TURN-сервер:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
client_api:&lt;br /&gt;
  turn:&lt;br /&gt;
    turn_user_lifetime: &amp;quot;5m&amp;quot;&lt;br /&gt;
    turn_uris:&lt;br /&gt;
      - &amp;quot;turn:turn.ramba-art.ru:3478?transport=udp&amp;quot;&lt;br /&gt;
      - &amp;quot;turn:turn.ramba-art.ru:3478?transport=tcp&amp;quot;&lt;br /&gt;
      - &amp;quot;turns:turn.ramba-art.ru:5349?transport=tcp&amp;quot;&lt;br /&gt;
    turn_shared_secret: &amp;quot;SECRET&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Секрет в Dendrite должен совпадать со значением static-auth-secret в Coturn.&lt;br /&gt;
&lt;br /&gt;
Проверка:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -s https://chat.ramba-art.ru/_matrix/client/v3/voip/turnServer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если всё настроено правильно, сервер отдаёт временные TURN-креды.&lt;br /&gt;
&lt;br /&gt;
== Проброс портов ==&lt;br /&gt;
&lt;br /&gt;
На внешнем маршрутизаторе или firewall нужно пробросить на VM ramba-chat:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Порт&lt;br /&gt;
! Протокол&lt;br /&gt;
&lt;br /&gt;
| ! Назначение |&lt;br /&gt;
| ------------ |&lt;br /&gt;
| 3478         |&lt;br /&gt;
| TCP/UDP      |&lt;br /&gt;
| STUN/TURN    |&lt;br /&gt;
| -            |&lt;br /&gt;
| 5349         |&lt;br /&gt;
| TCP          |&lt;br /&gt;
| TURNS        |&lt;br /&gt;
| -            |&lt;br /&gt;
| 49152-49252  |&lt;br /&gt;
| UDP          |&lt;br /&gt;
| TURN relay   |&lt;br /&gt;
| }            |&lt;br /&gt;
&lt;br /&gt;
== Регистрация пользователей ==&lt;br /&gt;
&lt;br /&gt;
Для корпоративного сервера не рекомендуется открывать публичную регистрацию.&lt;br /&gt;
&lt;br /&gt;
Рекомендуемая схема:&lt;br /&gt;
&lt;br /&gt;
* регистрация закрыта;&lt;br /&gt;
* пользователей создаёт администратор;&lt;br /&gt;
* после первого входа пользователь меняет временный пароль.&lt;br /&gt;
&lt;br /&gt;
Создание пользователя:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/dendrite&lt;br /&gt;
&lt;br /&gt;
./create-account &lt;br /&gt;
--config dendrite.yaml &lt;br /&gt;
--username username &lt;br /&gt;
--password 'temporary_password' &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример результата:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@username:ramba-art.ru&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Плюсы закрытой регистрации:&lt;br /&gt;
&lt;br /&gt;
* нет спама;&lt;br /&gt;
* нет случайных пользователей;&lt;br /&gt;
* проще управлять безопасностью;&lt;br /&gt;
* подходит для корпоративного мессенджера.&lt;br /&gt;
&lt;br /&gt;
Минусы:&lt;br /&gt;
&lt;br /&gt;
* пользователей нужно создавать вручную или через скрипт;&lt;br /&gt;
* нужен регламент выдачи доступов;&lt;br /&gt;
* нужно продумать удаление или блокировку уволенных сотрудников.&lt;br /&gt;
&lt;br /&gt;
== Медиафайлы ==&lt;br /&gt;
&lt;br /&gt;
В Dendrite медиа хранятся в каталоге:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dendrite/media&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В конфигурации:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
media_api:&lt;br /&gt;
  base_path: media&lt;br /&gt;
  max_file_size_bytes: 10485760&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Лимит одного файла:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
10 MB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если комната зашифрована, Element шифрует вложения на клиенте перед загрузкой. Сервер хранит зашифрованный blob и не имеет ключей расшифровки.&lt;br /&gt;
&lt;br /&gt;
Если комната не зашифрована, сервер хранит обычные медиафайлы.&lt;br /&gt;
&lt;br /&gt;
Рекомендации:&lt;br /&gt;
&lt;br /&gt;
* рабочие комнаты создавать с E2EE;&lt;br /&gt;
* каталог media включить в резервное копирование;&lt;br /&gt;
* при росте объёма вынести media на отдельное хранилище;&lt;br /&gt;
* PostgreSQL не выносить на NFS.&lt;br /&gt;
&lt;br /&gt;
== Вариант выноса медиа на NFS/OMV ==&lt;br /&gt;
&lt;br /&gt;
Для роста системы можно вынести только медиафайлы на OMV NFS.&lt;br /&gt;
&lt;br /&gt;
Рекомендуемая схема:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
VM ramba-chat&lt;br /&gt;
  |-- PostgreSQL локально&lt;br /&gt;
  |-- Dendrite локально&lt;br /&gt;
  |-- JetStream локально&lt;br /&gt;
  |-- /opt/dendrite/media -&amp;gt; NFS OMV&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Плюсы:&lt;br /&gt;
&lt;br /&gt;
* медиа не раздувают диск VM;&lt;br /&gt;
* проще расширять хранилище;&lt;br /&gt;
* удобно делать отдельные бэкапы;&lt;br /&gt;
* можно использовать шифрование дисков на OMV.&lt;br /&gt;
&lt;br /&gt;
Минусы:&lt;br /&gt;
&lt;br /&gt;
* появляется зависимость от сети и OMV;&lt;br /&gt;
* при недоступности NFS будут проблемы с загрузкой и скачиванием файлов;&lt;br /&gt;
* нужна аккуратная настройка прав доступа;&lt;br /&gt;
* база данных и JetStream должны оставаться локально.&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Обязательно резервировать:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
PostgreSQL database dendrite&lt;br /&gt;
/opt/dendrite&lt;br /&gt;
/opt/dendrite/media&lt;br /&gt;
/etc/turnserver.conf&lt;br /&gt;
/etc/systemd/system/dendrite.service&lt;br /&gt;
Element config.json&lt;br /&gt;
Nginx/BrainyCP vhost-конфиги&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример резервного копирования конфигов:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo tar czf /root/ramba-matrix-configs-$(date +%F).tar.gz \&lt;br /&gt;
/opt/dendrite \&lt;br /&gt;
/etc/turnserver.conf \&lt;br /&gt;
/etc/systemd/system/dendrite.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример дампа PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u postgres pg_dump dendrite &amp;gt; /root/dendrite-$(date +%F).sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Проверка работоспособности ==&lt;br /&gt;
&lt;br /&gt;
Проверка .well-known:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -s https://ramba-art.ru/.well-known/matrix/server&lt;br /&gt;
curl -s https://ramba-art.ru/.well-known/matrix/client&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверка Matrix API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -s https://chat.ramba-art.ru/_matrix/client/versions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверка Dendrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl status dendrite --no-pager&lt;br /&gt;
sudo journalctl -u dendrite -n 80 --no-pager&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверка Coturn:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl status coturn --no-pager&lt;br /&gt;
sudo ss -tulpn | grep turnserver&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверка TURN-кредов:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -s https://chat.ramba-art.ru/_matrix/client/v3/voip/turnServer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Тестирование звонков ==&lt;br /&gt;
&lt;br /&gt;
Финальный тест:&lt;br /&gt;
&lt;br /&gt;
* создать двух пользователей;&lt;br /&gt;
* войти в Element с двух разных устройств;&lt;br /&gt;
* желательно использовать мобильную сеть, а не один Wi-Fi;&lt;br /&gt;
* проверить личный чат;&lt;br /&gt;
* проверить аудиозвонок;&lt;br /&gt;
* проверить видеозвонок.&lt;br /&gt;
&lt;br /&gt;
Успешный звонок через мобильного оператора подтверждает, что работают:&lt;br /&gt;
&lt;br /&gt;
* Dendrite;&lt;br /&gt;
* Element;&lt;br /&gt;
* WebRTC;&lt;br /&gt;
* STUN;&lt;br /&gt;
* TURN;&lt;br /&gt;
* NAT traversal;&lt;br /&gt;
* reverse proxy;&lt;br /&gt;
* SSL.&lt;br /&gt;
&lt;br /&gt;
== Плюсы выбранной архитектуры ==&lt;br /&gt;
&lt;br /&gt;
* полный контроль над данными;&lt;br /&gt;
* собственные Matrix ID на домене ramba-art.ru;&lt;br /&gt;
* независимость от сторонних SaaS-мессенджеров;&lt;br /&gt;
* поддержка Android, iOS и Web;&lt;br /&gt;
* поддержка аудио- и видеосвязи;&lt;br /&gt;
* поддержка E2EE;&lt;br /&gt;
* простая архитектура на одной VM;&lt;br /&gt;
* PostgreSQL локально для надёжности;&lt;br /&gt;
* медиа можно вынести на отдельное хранилище;&lt;br /&gt;
* reverse proxy и SSL централизованы через BrainyCP.&lt;br /&gt;
&lt;br /&gt;
== Минусы выбранной архитектуры ==&lt;br /&gt;
&lt;br /&gt;
* требуется администрирование сервера;&lt;br /&gt;
* нужно следить за Dendrite, PostgreSQL, Coturn и Element;&lt;br /&gt;
* требуется регулярный backup;&lt;br /&gt;
* требуется ручное создание пользователей или отдельный скрипт;&lt;br /&gt;
* Dendrite менее зрелый, чем Synapse;&lt;br /&gt;
* звонки зависят от правильной настройки TURN;&lt;br /&gt;
* при проблемах с доменной репутацией браузер может блокировать Element;&lt;br /&gt;
* при росте нагрузки может потребоваться отдельное масштабирование.&lt;br /&gt;
&lt;br /&gt;
== Рекомендации по эксплуатации ==&lt;br /&gt;
&lt;br /&gt;
* держать регистрацию закрытой;&lt;br /&gt;
* создавать пользователей централизованно;&lt;br /&gt;
* использовать E2EE для рабочих комнат;&lt;br /&gt;
* регулярно проверять резервные копии;&lt;br /&gt;
* не хранить PostgreSQL на NFS;&lt;br /&gt;
* следить за размером /opt/dendrite/media;&lt;br /&gt;
* обновлять Element Web отдельно от Dendrite;&lt;br /&gt;
* фиксировать изменения конфигов в отдельной Wiki-странице;&lt;br /&gt;
* после стабильного запуска создать snapshot VM в Proxmox.&lt;br /&gt;
&lt;br /&gt;
== Итог ==&lt;br /&gt;
&lt;br /&gt;
Выбранная архитектура подходит для собственного корпоративного мессенджера RAMBA.&lt;br /&gt;
&lt;br /&gt;
Она даёт контроль над пользователями, сообщениями, медиафайлами и доменом, при этом остаётся достаточно простой для сопровождения: одна VM, один Matrix homeserver, PostgreSQL, Coturn и Element Web.&lt;br /&gt;
&lt;br /&gt;
Для текущего этапа архитектура считается рабочей. Дальнейшие улучшения:&lt;br /&gt;
&lt;br /&gt;
* автоматизация создания пользователей;&lt;br /&gt;
* настройка регулярного backup;&lt;br /&gt;
* вынос media store на OMV/NFS;&lt;br /&gt;
* брендирование Element;&lt;br /&gt;
* мониторинг сервисов;&lt;br /&gt;
* исправление репутации домена в Google Safe Browsing.&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=RAMBA_Matrix&amp;diff=104</id>
		<title>RAMBA Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=RAMBA_Matrix&amp;diff=104"/>
		<updated>2026-06-19T12:51:54Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: Новая страница: «= Развёртывание корпоративного мессенджера RAMBA Matrix =  == Цель проекта ==  Цель проекта — развернуть собственный корпоративный мессенджер для организации RAMBA на базе открытого протокола Matrix.  Основные требования:  * собственный сервер сообщений; * поддержк...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Развёртывание корпоративного мессенджера RAMBA Matrix =&lt;br /&gt;
&lt;br /&gt;
== Цель проекта ==&lt;br /&gt;
&lt;br /&gt;
Цель проекта — развернуть собственный корпоративный мессенджер для организации RAMBA на базе открытого протокола Matrix.&lt;br /&gt;
&lt;br /&gt;
Основные требования:&lt;br /&gt;
&lt;br /&gt;
* собственный сервер сообщений;&lt;br /&gt;
* поддержка мобильных клиентов Android и iOS;&lt;br /&gt;
* поддержка веб-клиента;&lt;br /&gt;
* аудио- и видеозвонки;&lt;br /&gt;
* сквозное шифрование;&lt;br /&gt;
* контроль над данными;&lt;br /&gt;
* возможность работы примерно до 1000 пользователей;&lt;br /&gt;
* возможность дальнейшего резервного копирования и масштабирования.&lt;br /&gt;
&lt;br /&gt;
== Итоговая архитектура ==&lt;br /&gt;
&lt;br /&gt;
В проекте используется следующая схема:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Пользователь&lt;br /&gt;
  |&lt;br /&gt;
  | Element Web / Element Mobile&lt;br /&gt;
  |&lt;br /&gt;
Интернет&lt;br /&gt;
  |&lt;br /&gt;
  | HTTPS&lt;br /&gt;
  |&lt;br /&gt;
Reverse Proxy / SSL&lt;br /&gt;
BrainyCP: 192.168.1.12&lt;br /&gt;
  |&lt;br /&gt;
  | proxy_pass&lt;br /&gt;
  |&lt;br /&gt;
VM ramba-chat&lt;br /&gt;
Ubuntu Server 26.04&lt;br /&gt;
  |&lt;br /&gt;
  |-- Dendrite&lt;br /&gt;
  |-- PostgreSQL&lt;br /&gt;
  |-- Coturn&lt;br /&gt;
  |-- Media Store&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Основные домены:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Назначение&lt;br /&gt;
&lt;br /&gt;
| ! Домен              |&lt;br /&gt;
| -------------------- |&lt;br /&gt;
| Matrix Homeserver    |&lt;br /&gt;
| chat.ramba-art.ru    |&lt;br /&gt;
| -                    |&lt;br /&gt;
| Element Web          |&lt;br /&gt;
| element.ramba-art.ru |&lt;br /&gt;
| -                    |&lt;br /&gt;
| Matrix Server Name   |&lt;br /&gt;
| ramba-art.ru         |&lt;br /&gt;
| }                    |&lt;br /&gt;
&lt;br /&gt;
Matrix ID пользователей имеет вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@username:ramba-art.ru&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@artem:ramba-art.ru&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Почему выбран Matrix ==&lt;br /&gt;
&lt;br /&gt;
Matrix — открытый протокол для обмена сообщениями, голосовой и видеосвязи.&lt;br /&gt;
&lt;br /&gt;
Преимущества Matrix:&lt;br /&gt;
&lt;br /&gt;
* открытый протокол;&lt;br /&gt;
* нет привязки к одному поставщику;&lt;br /&gt;
* поддержка федерации между серверами;&lt;br /&gt;
* поддержка сквозного шифрования;&lt;br /&gt;
* есть готовые клиенты для Android, iOS, Web, Windows, Linux и macOS;&lt;br /&gt;
* можно хранить данные на собственной инфраструктуре;&lt;br /&gt;
* можно использовать собственный домен для пользователей.&lt;br /&gt;
&lt;br /&gt;
Недостатки Matrix:&lt;br /&gt;
&lt;br /&gt;
* сложнее в администрировании, чем обычные SaaS-мессенджеры;&lt;br /&gt;
* требуется следить за обновлениями;&lt;br /&gt;
* требуется корректная настройка TURN/STUN для звонков;&lt;br /&gt;
* требуется резервное копирование базы данных и медиафайлов;&lt;br /&gt;
* при больших нагрузках нужно планировать ресурсы заранее.&lt;br /&gt;
&lt;br /&gt;
== Почему выбран Dendrite ==&lt;br /&gt;
&lt;br /&gt;
В качестве homeserver выбран Dendrite.&lt;br /&gt;
&lt;br /&gt;
Dendrite — сервер Matrix, написанный на Go. Он легче по ресурсам, чем классический Synapse, и подходит для компактного развёртывания.&lt;br /&gt;
&lt;br /&gt;
Плюсы Dendrite:&lt;br /&gt;
&lt;br /&gt;
* низкое потребление памяти;&lt;br /&gt;
* простая монолитная установка;&lt;br /&gt;
* высокая скорость запуска;&lt;br /&gt;
* удобная сборка из исходного кода;&lt;br /&gt;
* хорошо подходит для собственного сервера организации;&lt;br /&gt;
* использует PostgreSQL как основную базу данных.&lt;br /&gt;
&lt;br /&gt;
Минусы Dendrite:&lt;br /&gt;
&lt;br /&gt;
* менее зрелый проект по сравнению с Synapse;&lt;br /&gt;
* часть экосистемы Matrix исторически лучше тестировалась на Synapse;&lt;br /&gt;
* меньше готовых инструкций и примеров;&lt;br /&gt;
* при нестандартных интеграциях может потребоваться ручная отладка.&lt;br /&gt;
&lt;br /&gt;
Вывод: для RAMBA выбран Dendrite, потому что он проще и легче для собственного сервера, при этом покрывает основные требования проекта: сообщения, Element, федерация, E2EE и звонки.&lt;br /&gt;
&lt;br /&gt;
== Почему выбран PostgreSQL ==&lt;br /&gt;
&lt;br /&gt;
PostgreSQL используется как основная база данных Dendrite.&lt;br /&gt;
&lt;br /&gt;
Плюсы PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
* надёжная промышленная СУБД;&lt;br /&gt;
* хорошо подходит для постоянного хранения событий Matrix;&lt;br /&gt;
* поддерживается Dendrite;&lt;br /&gt;
* удобно резервировать через pg_dump;&lt;br /&gt;
* проще восстановить отдельно от файловой системы.&lt;br /&gt;
&lt;br /&gt;
Минусы PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
* требует отдельного контроля резервных копий;&lt;br /&gt;
* нельзя полагаться только на snapshot VM;&lt;br /&gt;
* желательно не размещать базу на медленном сетевом хранилище.&lt;br /&gt;
&lt;br /&gt;
Вывод: PostgreSQL следует хранить на локальном диске VM, а не на NFS.&lt;br /&gt;
&lt;br /&gt;
== Почему выбран Element ==&lt;br /&gt;
&lt;br /&gt;
Element выбран как основной клиент Matrix.&lt;br /&gt;
&lt;br /&gt;
Используются:&lt;br /&gt;
&lt;br /&gt;
* Element Web — через element.ramba-art.ru;&lt;br /&gt;
* Element Mobile — для Android и iOS.&lt;br /&gt;
&lt;br /&gt;
Плюсы Element:&lt;br /&gt;
&lt;br /&gt;
* официальный и наиболее развитый клиент Matrix;&lt;br /&gt;
* поддержка E2EE;&lt;br /&gt;
* поддержка аудио- и видеозвонков;&lt;br /&gt;
* есть веб-версия;&lt;br /&gt;
* есть мобильные приложения;&lt;br /&gt;
* можно заранее указать свой homeserver в config.json.&lt;br /&gt;
&lt;br /&gt;
Минусы Element:&lt;br /&gt;
&lt;br /&gt;
* пользователю нужно привыкнуть к интерфейсу Matrix;&lt;br /&gt;
* при первом входе важно правильно настроить безопасное восстановление ключей;&lt;br /&gt;
* при работе через браузер возможны предупреждения Safe Browsing, если домен имеет плохую репутацию.&lt;br /&gt;
&lt;br /&gt;
== Почему выбран Coturn ==&lt;br /&gt;
&lt;br /&gt;
Coturn используется для аудио- и видеозвонков.&lt;br /&gt;
&lt;br /&gt;
Для звонков Matrix/Element использует WebRTC. Если два клиента не могут соединиться напрямую через NAT, используется TURN-сервер.&lt;br /&gt;
&lt;br /&gt;
Плюсы Coturn:&lt;br /&gt;
&lt;br /&gt;
* стандартное решение для STUN/TURN;&lt;br /&gt;
* совместим с WebRTC;&lt;br /&gt;
* поддерживает временные креды через shared secret;&lt;br /&gt;
* можно использовать с Matrix;&lt;br /&gt;
* можно ограничить диапазон relay-портов.&lt;br /&gt;
&lt;br /&gt;
Минусы Coturn:&lt;br /&gt;
&lt;br /&gt;
* требует проброса портов на маршрутизаторе;&lt;br /&gt;
* требует правильной настройки external-ip;&lt;br /&gt;
* при неправильном firewall звонок может подключаться без аудио или видео;&lt;br /&gt;
* relay-трафик может создавать нагрузку на канал.&lt;br /&gt;
&lt;br /&gt;
В проекте используются порты:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
3478/tcp&lt;br /&gt;
3478/udp&lt;br /&gt;
5349/tcp&lt;br /&gt;
49152-49252/udp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример ключевых настроек Coturn:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
use-auth-secret&lt;br /&gt;
realm=ramba-art.ru&lt;br /&gt;
listening-ip=192.168.1.50&lt;br /&gt;
external-ip=195.138.232.82&lt;br /&gt;
fingerprint&lt;br /&gt;
lt-cred-mech&lt;br /&gt;
&lt;br /&gt;
min-port=49152&lt;br /&gt;
max-port=49252 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Почему используется Reverse Proxy BrainyCP ==&lt;br /&gt;
&lt;br /&gt;
BrainyCP используется как внешний reverse proxy и точка управления SSL-сертификатами.&lt;br /&gt;
&lt;br /&gt;
Плюсы такого решения:&lt;br /&gt;
&lt;br /&gt;
* SSL-сертификаты управляются централизованно;&lt;br /&gt;
* внешние домены обслуживаются в одном месте;&lt;br /&gt;
* Dendrite и Element не публикуются напрямую;&lt;br /&gt;
* проще управлять HTTPS;&lt;br /&gt;
* можно разделить публичный фронт и внутренние сервисы.&lt;br /&gt;
&lt;br /&gt;
Минусы:&lt;br /&gt;
&lt;br /&gt;
* появляется дополнительная точка отказа;&lt;br /&gt;
* ошибки в Nginx-конфигурации могут повлиять на Matrix;&lt;br /&gt;
* нужно следить за корректной передачей заголовков;&lt;br /&gt;
* при проблемах с HTTP/2 или TLS диагностика становится сложнее.&lt;br /&gt;
&lt;br /&gt;
== Почему VM, а не LXC ==&lt;br /&gt;
&lt;br /&gt;
Для Matrix выбран вариант с отдельной VM в Proxmox.&lt;br /&gt;
&lt;br /&gt;
Плюсы VM:&lt;br /&gt;
&lt;br /&gt;
* лучшая изоляция;&lt;br /&gt;
* проще переносить между узлами Proxmox;&lt;br /&gt;
* полноценная система с собственным ядром;&lt;br /&gt;
* удобнее делать snapshot и backup;&lt;br /&gt;
* меньше неожиданных ограничений, чем в LXC.&lt;br /&gt;
&lt;br /&gt;
Минусы VM:&lt;br /&gt;
&lt;br /&gt;
* потребляет больше ресурсов, чем LXC;&lt;br /&gt;
* нужно отдельно следить за обновлениями ОС;&lt;br /&gt;
* требуется больше дискового пространства.&lt;br /&gt;
&lt;br /&gt;
Вывод: для корпоративного мессенджера VM предпочтительнее, так как важнее надёжность и изоляция.&lt;br /&gt;
&lt;br /&gt;
== Развёртывание VM ==&lt;br /&gt;
&lt;br /&gt;
Рекомендуемые параметры VM для старта:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Ресурс&lt;br /&gt;
&lt;br /&gt;
| ! Значение          |&lt;br /&gt;
| ------------------- |&lt;br /&gt;
| CPU                 |&lt;br /&gt;
| 4 vCPU              |&lt;br /&gt;
| -                   |&lt;br /&gt;
| RAM                 |&lt;br /&gt;
| 8-16 GB             |&lt;br /&gt;
| -                   |&lt;br /&gt;
| Disk                |&lt;br /&gt;
| 100 GB              |&lt;br /&gt;
| -                   |&lt;br /&gt;
| OS                  |&lt;br /&gt;
| Ubuntu Server 26.04 |&lt;br /&gt;
| -                   |&lt;br /&gt;
| Network             |&lt;br /&gt;
| Static IP           |&lt;br /&gt;
| }                   |&lt;br /&gt;
&lt;br /&gt;
В проекте используется VM:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ramba-chat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IP VM:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
192.168.1.50&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Установка системных пакетов ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install -y git curl wget build-essential postgresql coturn nginx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для сборки Dendrite также требуется Go.&lt;br /&gt;
&lt;br /&gt;
== Установка PostgreSQL ==&lt;br /&gt;
&lt;br /&gt;
Создаётся пользователь и база данных:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u postgres createuser dendrite&lt;br /&gt;
sudo -u postgres createdb -O dendrite dendrite&lt;br /&gt;
sudo -u postgres psql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Внутри psql задаётся пароль:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
ALTER USER dendrite WITH PASSWORD 'strong_password';&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Сборка Dendrite ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt&lt;br /&gt;
sudo git clone https://github.com/matrix-org/dendrite.git&lt;br /&gt;
sudo chown -R $USER:$USER /opt/dendrite&lt;br /&gt;
cd /opt/dendrite&lt;br /&gt;
&lt;br /&gt;
go build -o bin/dendrite ./cmd/dendrite&lt;br /&gt;
go build -o bin/create-account ./cmd/create-account&lt;br /&gt;
go build -o bin/generate-config ./cmd/generate-config&lt;br /&gt;
go build -o bin/generate-keys ./cmd/generate-keys &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Генерация конфигурации Dendrite ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/dendrite&lt;br /&gt;
&lt;br /&gt;
./bin/generate-keys --private-key matrix_key.pem&lt;br /&gt;
&lt;br /&gt;
./bin/generate-config &lt;br /&gt;
--server ramba-art.ru &lt;br /&gt;
--db postgresql://dendrite:password@localhost/dendrite?sslmode=disable &lt;br /&gt;
--private-key matrix_key.pem \&lt;br /&gt;
&lt;br /&gt;
&amp;gt; dendrite.yaml&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;gt; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После генерации конфиг редактируется вручную.&lt;br /&gt;
&lt;br /&gt;
Важные параметры:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
global:&lt;br /&gt;
  server_name: ramba-art.ru&lt;br /&gt;
&lt;br /&gt;
media_api:&lt;br /&gt;
base_path: media&lt;br /&gt;
max_file_size_bytes: 10485760 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Systemd-сервис Dendrite ==&lt;br /&gt;
&lt;br /&gt;
Создаётся файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo nano /etc/systemd/system/dendrite.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Dendrite Matrix Server&lt;br /&gt;
After=network.target postgresql.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
WorkingDirectory=/opt/dendrite&lt;br /&gt;
ExecStart=/opt/dendrite/dendrite -config /opt/dendrite/dendrite.yaml&lt;br /&gt;
Restart=always&lt;br /&gt;
RestartSec=5&lt;br /&gt;
User=artem&lt;br /&gt;
Group=artem&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запуск:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl daemon-reload&lt;br /&gt;
sudo systemctl enable --now dendrite&lt;br /&gt;
sudo systemctl status dendrite&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка Reverse Proxy для Dendrite ==&lt;br /&gt;
&lt;br /&gt;
На стороне BrainyCP/Nginx создаётся HTTPS-сайт:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
chat.ramba-art.ru&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Он проксирует запросы на:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
http://192.168.1.50:8008&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важные заголовки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
proxy_set_header Host $host;&lt;br /&gt;
proxy_set_header X-Real-IP $remote_addr;&lt;br /&gt;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;
proxy_set_header X-Forwarded-Proto https;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка .well-known ==&lt;br /&gt;
&lt;br /&gt;
Для красивых Matrix ID вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@user:ramba-art.ru&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
нужно настроить .well-known на основном домене.&lt;br /&gt;
&lt;br /&gt;
Файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
https://ramba-art.ru/.well-known/matrix/server&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Содержимое:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;m.server&amp;quot;: &amp;quot;chat.ramba-art.ru:443&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
https://ramba-art.ru/.well-known/matrix/client&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Содержимое:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;m.homeserver&amp;quot;: {&lt;br /&gt;
    &amp;quot;base_url&amp;quot;: &amp;quot;https://chat.ramba-art.ru&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Установка Element Web ==&lt;br /&gt;
&lt;br /&gt;
Element Web размещается на отдельном поддомене:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
element.ramba-art.ru&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример config.json:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;default_server_config&amp;quot;: {&lt;br /&gt;
    &amp;quot;m.homeserver&amp;quot;: {&lt;br /&gt;
      &amp;quot;base_url&amp;quot;: &amp;quot;https://chat.ramba-art.ru&amp;quot;,&lt;br /&gt;
      &amp;quot;server_name&amp;quot;: &amp;quot;ramba-art.ru&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;disable_custom_urls&amp;quot;: true,&lt;br /&gt;
  &amp;quot;disable_guests&amp;quot;: true,&lt;br /&gt;
  &amp;quot;brand&amp;quot;: &amp;quot;RAMBA Chat&amp;quot;,&lt;br /&gt;
  &amp;quot;default_theme&amp;quot;: &amp;quot;dark&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Плюсы отдельного поддомена для Element:&lt;br /&gt;
&lt;br /&gt;
* проще обслуживать веб-клиент;&lt;br /&gt;
* можно независимо обновлять Element;&lt;br /&gt;
* можно брендировать интерфейс;&lt;br /&gt;
* пользователю не нужно вручную вводить homeserver.&lt;br /&gt;
&lt;br /&gt;
Минусы:&lt;br /&gt;
&lt;br /&gt;
* нужен отдельный SSL-сертификат;&lt;br /&gt;
* при проблемах с репутацией домена браузер может блокировать страницу.&lt;br /&gt;
&lt;br /&gt;
== Настройка Coturn ==&lt;br /&gt;
&lt;br /&gt;
Установка:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt install -y coturn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Включение сервиса:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo sed -i 's/#TURNSERVER_ENABLED=1/TURNSERVER_ENABLED=1/' /etc/default/coturn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример конфигурации:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
listening-port=3478&lt;br /&gt;
tls-listening-port=5349&lt;br /&gt;
&lt;br /&gt;
listening-ip=192.168.1.50&lt;br /&gt;
relay-ip=192.168.1.50&lt;br /&gt;
external-ip=195.138.232.82&lt;br /&gt;
&lt;br /&gt;
use-auth-secret&lt;br /&gt;
static-auth-secret=SECRET&lt;br /&gt;
realm=ramba-art.ru&lt;br /&gt;
&lt;br /&gt;
fingerprint&lt;br /&gt;
lt-cred-mech&lt;br /&gt;
no-multicast-peers&lt;br /&gt;
no-cli&lt;br /&gt;
&lt;br /&gt;
min-port=49152&lt;br /&gt;
max-port=49252 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запуск:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl enable --now coturn&lt;br /&gt;
sudo systemctl status coturn&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка TURN в Dendrite ==&lt;br /&gt;
&lt;br /&gt;
В dendrite.yaml указывается TURN-сервер:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
client_api:&lt;br /&gt;
  turn:&lt;br /&gt;
    turn_user_lifetime: &amp;quot;5m&amp;quot;&lt;br /&gt;
    turn_uris:&lt;br /&gt;
      - &amp;quot;turn:turn.ramba-art.ru:3478?transport=udp&amp;quot;&lt;br /&gt;
      - &amp;quot;turn:turn.ramba-art.ru:3478?transport=tcp&amp;quot;&lt;br /&gt;
      - &amp;quot;turns:turn.ramba-art.ru:5349?transport=tcp&amp;quot;&lt;br /&gt;
    turn_shared_secret: &amp;quot;SECRET&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Секрет в Dendrite должен совпадать со значением static-auth-secret в Coturn.&lt;br /&gt;
&lt;br /&gt;
Проверка:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -s https://chat.ramba-art.ru/_matrix/client/v3/voip/turnServer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если всё настроено правильно, сервер отдаёт временные TURN-креды.&lt;br /&gt;
&lt;br /&gt;
== Проброс портов ==&lt;br /&gt;
&lt;br /&gt;
На внешнем маршрутизаторе или firewall нужно пробросить на VM ramba-chat:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Порт&lt;br /&gt;
! Протокол&lt;br /&gt;
&lt;br /&gt;
| ! Назначение |&lt;br /&gt;
| ------------ |&lt;br /&gt;
| 3478         |&lt;br /&gt;
| TCP/UDP      |&lt;br /&gt;
| STUN/TURN    |&lt;br /&gt;
| -            |&lt;br /&gt;
| 5349         |&lt;br /&gt;
| TCP          |&lt;br /&gt;
| TURNS        |&lt;br /&gt;
| -            |&lt;br /&gt;
| 49152-49252  |&lt;br /&gt;
| UDP          |&lt;br /&gt;
| TURN relay   |&lt;br /&gt;
| }            |&lt;br /&gt;
&lt;br /&gt;
== Регистрация пользователей ==&lt;br /&gt;
&lt;br /&gt;
Для корпоративного сервера не рекомендуется открывать публичную регистрацию.&lt;br /&gt;
&lt;br /&gt;
Рекомендуемая схема:&lt;br /&gt;
&lt;br /&gt;
* регистрация закрыта;&lt;br /&gt;
* пользователей создаёт администратор;&lt;br /&gt;
* после первого входа пользователь меняет временный пароль.&lt;br /&gt;
&lt;br /&gt;
Создание пользователя:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/dendrite&lt;br /&gt;
&lt;br /&gt;
./create-account &lt;br /&gt;
--config dendrite.yaml &lt;br /&gt;
--username username &lt;br /&gt;
--password 'temporary_password' &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример результата:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
@username:ramba-art.ru&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Плюсы закрытой регистрации:&lt;br /&gt;
&lt;br /&gt;
* нет спама;&lt;br /&gt;
* нет случайных пользователей;&lt;br /&gt;
* проще управлять безопасностью;&lt;br /&gt;
* подходит для корпоративного мессенджера.&lt;br /&gt;
&lt;br /&gt;
Минусы:&lt;br /&gt;
&lt;br /&gt;
* пользователей нужно создавать вручную или через скрипт;&lt;br /&gt;
* нужен регламент выдачи доступов;&lt;br /&gt;
* нужно продумать удаление или блокировку уволенных сотрудников.&lt;br /&gt;
&lt;br /&gt;
== Медиафайлы ==&lt;br /&gt;
&lt;br /&gt;
В Dendrite медиа хранятся в каталоге:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
/opt/dendrite/media&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В конфигурации:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
media_api:&lt;br /&gt;
  base_path: media&lt;br /&gt;
  max_file_size_bytes: 10485760&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Лимит одного файла:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
10 MB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если комната зашифрована, Element шифрует вложения на клиенте перед загрузкой. Сервер хранит зашифрованный blob и не имеет ключей расшифровки.&lt;br /&gt;
&lt;br /&gt;
Если комната не зашифрована, сервер хранит обычные медиафайлы.&lt;br /&gt;
&lt;br /&gt;
Рекомендации:&lt;br /&gt;
&lt;br /&gt;
* рабочие комнаты создавать с E2EE;&lt;br /&gt;
* каталог media включить в резервное копирование;&lt;br /&gt;
* при росте объёма вынести media на отдельное хранилище;&lt;br /&gt;
* PostgreSQL не выносить на NFS.&lt;br /&gt;
&lt;br /&gt;
== Вариант выноса медиа на NFS/OMV ==&lt;br /&gt;
&lt;br /&gt;
Для роста системы можно вынести только медиафайлы на OMV NFS.&lt;br /&gt;
&lt;br /&gt;
Рекомендуемая схема:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
VM ramba-chat&lt;br /&gt;
  |-- PostgreSQL локально&lt;br /&gt;
  |-- Dendrite локально&lt;br /&gt;
  |-- JetStream локально&lt;br /&gt;
  |-- /opt/dendrite/media -&amp;gt; NFS OMV&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Плюсы:&lt;br /&gt;
&lt;br /&gt;
* медиа не раздувают диск VM;&lt;br /&gt;
* проще расширять хранилище;&lt;br /&gt;
* удобно делать отдельные бэкапы;&lt;br /&gt;
* можно использовать шифрование дисков на OMV.&lt;br /&gt;
&lt;br /&gt;
Минусы:&lt;br /&gt;
&lt;br /&gt;
* появляется зависимость от сети и OMV;&lt;br /&gt;
* при недоступности NFS будут проблемы с загрузкой и скачиванием файлов;&lt;br /&gt;
* нужна аккуратная настройка прав доступа;&lt;br /&gt;
* база данных и JetStream должны оставаться локально.&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Обязательно резервировать:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
PostgreSQL database dendrite&lt;br /&gt;
/opt/dendrite&lt;br /&gt;
/opt/dendrite/media&lt;br /&gt;
/etc/turnserver.conf&lt;br /&gt;
/etc/systemd/system/dendrite.service&lt;br /&gt;
Element config.json&lt;br /&gt;
Nginx/BrainyCP vhost-конфиги&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример резервного копирования конфигов:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo tar czf /root/ramba-matrix-configs-$(date +%F).tar.gz \&lt;br /&gt;
/opt/dendrite \&lt;br /&gt;
/etc/turnserver.conf \&lt;br /&gt;
/etc/systemd/system/dendrite.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример дампа PostgreSQL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo -u postgres pg_dump dendrite &amp;gt; /root/dendrite-$(date +%F).sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Проверка работоспособности ==&lt;br /&gt;
&lt;br /&gt;
Проверка .well-known:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -s https://ramba-art.ru/.well-known/matrix/server&lt;br /&gt;
curl -s https://ramba-art.ru/.well-known/matrix/client&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверка Matrix API:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -s https://chat.ramba-art.ru/_matrix/client/versions&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверка Dendrite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl status dendrite --no-pager&lt;br /&gt;
sudo journalctl -u dendrite -n 80 --no-pager&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверка Coturn:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl status coturn --no-pager&lt;br /&gt;
sudo ss -tulpn | grep turnserver&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверка TURN-кредов:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -s https://chat.ramba-art.ru/_matrix/client/v3/voip/turnServer&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Тестирование звонков ==&lt;br /&gt;
&lt;br /&gt;
Финальный тест:&lt;br /&gt;
&lt;br /&gt;
* создать двух пользователей;&lt;br /&gt;
* войти в Element с двух разных устройств;&lt;br /&gt;
* желательно использовать мобильную сеть, а не один Wi-Fi;&lt;br /&gt;
* проверить личный чат;&lt;br /&gt;
* проверить аудиозвонок;&lt;br /&gt;
* проверить видеозвонок.&lt;br /&gt;
&lt;br /&gt;
Успешный звонок через мобильного оператора подтверждает, что работают:&lt;br /&gt;
&lt;br /&gt;
* Dendrite;&lt;br /&gt;
* Element;&lt;br /&gt;
* WebRTC;&lt;br /&gt;
* STUN;&lt;br /&gt;
* TURN;&lt;br /&gt;
* NAT traversal;&lt;br /&gt;
* reverse proxy;&lt;br /&gt;
* SSL.&lt;br /&gt;
&lt;br /&gt;
== Плюсы выбранной архитектуры ==&lt;br /&gt;
&lt;br /&gt;
* полный контроль над данными;&lt;br /&gt;
* собственные Matrix ID на домене ramba-art.ru;&lt;br /&gt;
* независимость от сторонних SaaS-мессенджеров;&lt;br /&gt;
* поддержка Android, iOS и Web;&lt;br /&gt;
* поддержка аудио- и видеосвязи;&lt;br /&gt;
* поддержка E2EE;&lt;br /&gt;
* простая архитектура на одной VM;&lt;br /&gt;
* PostgreSQL локально для надёжности;&lt;br /&gt;
* медиа можно вынести на отдельное хранилище;&lt;br /&gt;
* reverse proxy и SSL централизованы через BrainyCP.&lt;br /&gt;
&lt;br /&gt;
== Минусы выбранной архитектуры ==&lt;br /&gt;
&lt;br /&gt;
* требуется администрирование сервера;&lt;br /&gt;
* нужно следить за Dendrite, PostgreSQL, Coturn и Element;&lt;br /&gt;
* требуется регулярный backup;&lt;br /&gt;
* требуется ручное создание пользователей или отдельный скрипт;&lt;br /&gt;
* Dendrite менее зрелый, чем Synapse;&lt;br /&gt;
* звонки зависят от правильной настройки TURN;&lt;br /&gt;
* при проблемах с доменной репутацией браузер может блокировать Element;&lt;br /&gt;
* при росте нагрузки может потребоваться отдельное масштабирование.&lt;br /&gt;
&lt;br /&gt;
== Рекомендации по эксплуатации ==&lt;br /&gt;
&lt;br /&gt;
* держать регистрацию закрытой;&lt;br /&gt;
* создавать пользователей централизованно;&lt;br /&gt;
* использовать E2EE для рабочих комнат;&lt;br /&gt;
* регулярно проверять резервные копии;&lt;br /&gt;
* не хранить PostgreSQL на NFS;&lt;br /&gt;
* следить за размером /opt/dendrite/media;&lt;br /&gt;
* обновлять Element Web отдельно от Dendrite;&lt;br /&gt;
* фиксировать изменения конфигов в отдельной Wiki-странице;&lt;br /&gt;
* после стабильного запуска создать snapshot VM в Proxmox.&lt;br /&gt;
&lt;br /&gt;
== Итог ==&lt;br /&gt;
&lt;br /&gt;
Выбранная архитектура подходит для собственного корпоративного мессенджера RAMBA.&lt;br /&gt;
&lt;br /&gt;
Она даёт контроль над пользователями, сообщениями, медиафайлами и доменом, при этом остаётся достаточно простой для сопровождения: одна VM, один Matrix homeserver, PostgreSQL, Coturn и Element Web.&lt;br /&gt;
&lt;br /&gt;
Для текущего этапа архитектура считается рабочей. Дальнейшие улучшения:&lt;br /&gt;
&lt;br /&gt;
* автоматизация создания пользователей;&lt;br /&gt;
* настройка регулярного backup;&lt;br /&gt;
* вынос media store на OMV/NFS;&lt;br /&gt;
* брендирование Element;&lt;br /&gt;
* мониторинг сервисов;&lt;br /&gt;
* исправление репутации домена в Google Safe Browsing.&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=103</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=103"/>
		<updated>2026-06-19T12:44:48Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; margin-bottom:30px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;📚 База знаний&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Документация по инфраструктуре, Linux и игровым серверам.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:12px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🖥️ Инфраструктура ===&lt;br /&gt;
''Серверы и виртуализация''&lt;br /&gt;
&lt;br /&gt;
* [[Proxmox]]&lt;br /&gt;
* [[PBS]]&lt;br /&gt;
* [[iLO]]&lt;br /&gt;
* [[BrainyCP]]&lt;br /&gt;
* [[Сетевое оборудование]]&lt;br /&gt;
* [[ RAMBA Matrix]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🐧 Linux ===&lt;br /&gt;
''Системное администрирование''&lt;br /&gt;
&lt;br /&gt;
* [[Ubuntu]]&lt;br /&gt;
* [[Debian]]&lt;br /&gt;
* [[Nginx]]&lt;br /&gt;
* [[Docker]]&lt;br /&gt;
* [[Bash]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🎮 Игровые серверы ===&lt;br /&gt;
''Игровая инфраструктура''&lt;br /&gt;
&lt;br /&gt;
* [[Rust]]&lt;br /&gt;
* [[LGSM]]&lt;br /&gt;
* [[SteamCMD]]&lt;br /&gt;
* [[Резервное копирование]]&lt;br /&gt;
* [[Мониторинг]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
== ⭐ Избранные статьи ==&lt;br /&gt;
&lt;br /&gt;
* [[Установка Proxmox VE]]&lt;br /&gt;
* [[Настройка Proxmox Backup Server]]&lt;br /&gt;
* [[Настройка BrainyCP]]&lt;br /&gt;
* [[Создание LXC-контейнеров]]&lt;br /&gt;
* [[Настройка Rust-сервера через LGSM]]&lt;br /&gt;
* [[Minecraft_в_2026_году]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🕒 Последние изменения ==&lt;br /&gt;
&lt;br /&gt;
* [[Special:RecentChanges|Посмотреть все последние изменения]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🔗 Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [[Special:AllPages|Все статьи]]&lt;br /&gt;
* [[Special:Categories|Все категории]]&lt;br /&gt;
* [[Special:WantedPages|Нужные страницы]]&lt;br /&gt;
* [[Special:Random|🎲 Случайная статья]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=102</id>
		<title>Мониторинг</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=%D0%9C%D0%BE%D0%BD%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3&amp;diff=102"/>
		<updated>2026-06-18T06:27:44Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: Новая страница: «&amp;lt;rustserver ip=&amp;quot;195.138.232.82&amp;quot; port=&amp;quot;28017&amp;quot; /&amp;gt;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;rustserver ip=&amp;quot;195.138.232.82&amp;quot; port=&amp;quot;28017&amp;quot; /&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=BrainyCP&amp;diff=101</id>
		<title>BrainyCP</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=BrainyCP&amp;diff=101"/>
		<updated>2026-06-17T08:54:36Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: Новая страница: «Ниже представлена готовая статья для публикации в **Ramba-Art Wiki**. Она рассчитана на использование **BrainyCP Free**, установку на чистый сервер и содержит практические рекомендации, включая развёртывание MediaWiki.  = BrainyCP Free: установка и настройка панели управления с...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ниже представлена готовая статья для публикации в **Ramba-Art Wiki**. Она рассчитана на использование **BrainyCP Free**, установку на чистый сервер и содержит практические рекомендации, включая развёртывание MediaWiki.&lt;br /&gt;
&lt;br /&gt;
= BrainyCP Free: установка и настройка панели управления сервером =&lt;br /&gt;
&lt;br /&gt;
{{TOC}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
'''BrainyCP''' — бесплатная панель управления Linux-серверами и веб-хостингом, предназначенная для упрощения администрирования сайтов и серверной инфраструктуры.&lt;br /&gt;
&lt;br /&gt;
Панель позволяет управлять:&lt;br /&gt;
&lt;br /&gt;
* веб-серверами;&lt;br /&gt;
* доменами;&lt;br /&gt;
* базами данных;&lt;br /&gt;
* SSL-сертификатами;&lt;br /&gt;
* FTP;&lt;br /&gt;
* почтовыми сервисами;&lt;br /&gt;
* резервным копированием;&lt;br /&gt;
* безопасностью сервера.&lt;br /&gt;
&lt;br /&gt;
BrainyCP ориентирована как на владельцев небольших VPS, так и на администраторов, обслуживающих несколько сайтов. По функциональности она сопоставима со многими коммерческими решениями. ([brainycp.com][1])&lt;br /&gt;
&lt;br /&gt;
[[Файл:BrainyCP-Dashboard.png|800px|center|thumb|Главная страница BrainyCP]]&lt;br /&gt;
&lt;br /&gt;
== Возможности BrainyCP Free ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Возможность&lt;br /&gt;
&lt;br /&gt;
| ! Поддержка           |&lt;br /&gt;
| --------------------- |&lt;br /&gt;
| Nginx                 |&lt;br /&gt;
| Да                    |&lt;br /&gt;
| -                     |&lt;br /&gt;
| Apache                |&lt;br /&gt;
| Да                    |&lt;br /&gt;
| -                     |&lt;br /&gt;
| Apache + Nginx        |&lt;br /&gt;
| Да                    |&lt;br /&gt;
| -                     |&lt;br /&gt;
| PHP-FPM               |&lt;br /&gt;
| Да                    |&lt;br /&gt;
| -                     |&lt;br /&gt;
| MariaDB / MySQL       |&lt;br /&gt;
| Да                    |&lt;br /&gt;
| -                     |&lt;br /&gt;
| PhpMyAdmin            |&lt;br /&gt;
| Да                    |&lt;br /&gt;
| -                     |&lt;br /&gt;
| FTP                   |&lt;br /&gt;
| Да                    |&lt;br /&gt;
| -                     |&lt;br /&gt;
| Let's Encrypt         |&lt;br /&gt;
| Да                    |&lt;br /&gt;
| -                     |&lt;br /&gt;
| Почтовый сервер       |&lt;br /&gt;
| Да                    |&lt;br /&gt;
| -                     |&lt;br /&gt;
| Резервное копирование |&lt;br /&gt;
| Да                    |&lt;br /&gt;
| -                     |&lt;br /&gt;
| Jail                  |&lt;br /&gt;
| Да                    |&lt;br /&gt;
| -                     |&lt;br /&gt;
| CSF Firewall          |&lt;br /&gt;
| Да                    |&lt;br /&gt;
| }                     |&lt;br /&gt;
&lt;br /&gt;
== Системные требования ==&lt;br /&gt;
&lt;br /&gt;
=== Минимальные ===&lt;br /&gt;
&lt;br /&gt;
* Debian 12;&lt;br /&gt;
* Ubuntu 22.04;&lt;br /&gt;
* 2 ГБ ОЗУ;&lt;br /&gt;
* 20 ГБ дискового пространства.&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемые ===&lt;br /&gt;
&lt;br /&gt;
* 4 ГБ ОЗУ;&lt;br /&gt;
* SSD;&lt;br /&gt;
* отдельный публичный IP;&lt;br /&gt;
* чистая установка ОС.&lt;br /&gt;
&lt;br /&gt;
== Установка BrainyCP ==&lt;br /&gt;
&lt;br /&gt;
Подключитесь по SSH под root.&lt;br /&gt;
&lt;br /&gt;
Обновите систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt update &amp;amp;&amp;amp; apt upgrade -y&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запустите установку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -s https://core.brainycp.com/install.sh | bash&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Установка может занять 10–30 минут.&lt;br /&gt;
&lt;br /&gt;
После завершения появится информация для входа.&lt;br /&gt;
&lt;br /&gt;
[[Файл:BrainyCP-Install.png|800px|center|thumb|Установка панели]]&lt;br /&gt;
&lt;br /&gt;
== Первый вход ==&lt;br /&gt;
&lt;br /&gt;
Откройте браузер:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
https://IP_СЕРВЕРА:8000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
https://192.168.1.12:8000&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Введите:&lt;br /&gt;
&lt;br /&gt;
* логин;&lt;br /&gt;
* пароль, выданный установщиком.&lt;br /&gt;
&lt;br /&gt;
После первого входа рекомендуется сменить пароль администратора.&lt;br /&gt;
&lt;br /&gt;
== Настройка сервера ==&lt;br /&gt;
&lt;br /&gt;
Перейдите:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Управление → Настройка сервера&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь можно настроить:&lt;br /&gt;
&lt;br /&gt;
* имя сервера;&lt;br /&gt;
* часовой пояс;&lt;br /&gt;
* параметры безопасности;&lt;br /&gt;
* почтовые службы;&lt;br /&gt;
* автоматические обновления.&lt;br /&gt;
&lt;br /&gt;
[[Файл:BrainyCP-ServerSettings.png|800px|center|thumb|Настройка сервера]]&lt;br /&gt;
&lt;br /&gt;
== Создание сайта ==&lt;br /&gt;
&lt;br /&gt;
Перейдите:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WWW → Домены → Создать домен&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Укажите:&lt;br /&gt;
&lt;br /&gt;
* домен;&lt;br /&gt;
* владельца;&lt;br /&gt;
* версию PHP;&lt;br /&gt;
* тип веб-сервера.&lt;br /&gt;
&lt;br /&gt;
После создания сайт станет доступен в панели.&lt;br /&gt;
&lt;br /&gt;
== Выбор веб-сервера ==&lt;br /&gt;
&lt;br /&gt;
BrainyCP поддерживает несколько схем работы:&lt;br /&gt;
&lt;br /&gt;
=== Nginx ===&lt;br /&gt;
&lt;br /&gt;
Преимущества:&lt;br /&gt;
&lt;br /&gt;
* высокая производительность;&lt;br /&gt;
* низкое потребление памяти.&lt;br /&gt;
&lt;br /&gt;
Подходит для:&lt;br /&gt;
&lt;br /&gt;
* WordPress;&lt;br /&gt;
* MediaWiki;&lt;br /&gt;
* статических сайтов.&lt;br /&gt;
&lt;br /&gt;
=== Apache ===&lt;br /&gt;
&lt;br /&gt;
Подходит для:&lt;br /&gt;
&lt;br /&gt;
* старых проектов;&lt;br /&gt;
* приложений с использованием .htaccess.&lt;br /&gt;
&lt;br /&gt;
=== Apache + Nginx ===&lt;br /&gt;
&lt;br /&gt;
Используется как компромисс:&lt;br /&gt;
&lt;br /&gt;
* Apache обрабатывает PHP;&lt;br /&gt;
* Nginx работает фронтендом.&lt;br /&gt;
&lt;br /&gt;
== Настройка PHP ==&lt;br /&gt;
&lt;br /&gt;
BrainyCP позволяет переключать версии PHP.&lt;br /&gt;
&lt;br /&gt;
Путь:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WWW → Домены → Настройки PHP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Доступны различные версии PHP. Возможности зависят от версии панели и репозиториев. ([brainycp.com][1])&lt;br /&gt;
&lt;br /&gt;
Можно:&lt;br /&gt;
&lt;br /&gt;
* менять версию PHP;&lt;br /&gt;
* включать расширения;&lt;br /&gt;
* изменять параметры php.ini.&lt;br /&gt;
&lt;br /&gt;
== Работа с базами данных ==&lt;br /&gt;
&lt;br /&gt;
Создание БД:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
БД → Создать базу данных&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Укажите:&lt;br /&gt;
&lt;br /&gt;
* имя базы;&lt;br /&gt;
* пользователя;&lt;br /&gt;
* пароль.&lt;br /&gt;
&lt;br /&gt;
После создания можно открыть PhpMyAdmin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
БД → PhpMyAdmin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:BrainyCP-MySQL.png|800px|center|thumb|Управление базами данных]]&lt;br /&gt;
&lt;br /&gt;
== Настройка SSL Let's Encrypt ==&lt;br /&gt;
&lt;br /&gt;
Перейдите:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Сертификаты → Управление SSL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выберите домен.&lt;br /&gt;
&lt;br /&gt;
Нажмите:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Получить Let's Encrypt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После успешного выпуска сертификат будет установлен автоматически.&lt;br /&gt;
&lt;br /&gt;
Поддерживается автоматическое продление сертификатов. ([brainycp.com][1])&lt;br /&gt;
&lt;br /&gt;
== FTP ==&lt;br /&gt;
&lt;br /&gt;
Создание FTP-доступа:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WWW → FTP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Укажите:&lt;br /&gt;
&lt;br /&gt;
* пользователя;&lt;br /&gt;
* пароль;&lt;br /&gt;
* домашний каталог.&lt;br /&gt;
&lt;br /&gt;
Поддерживаются:&lt;br /&gt;
&lt;br /&gt;
* Pure-FTPd;&lt;br /&gt;
* ProFTPD.&lt;br /&gt;
&lt;br /&gt;
== Резервное копирование ==&lt;br /&gt;
&lt;br /&gt;
Путь:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Утилиты → Резервное копирование&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Поддерживается:&lt;br /&gt;
&lt;br /&gt;
* локальное резервное копирование;&lt;br /&gt;
* удалённое резервное копирование;&lt;br /&gt;
* выполнение по расписанию.&lt;br /&gt;
&lt;br /&gt;
Рекомендуется хранить резервные копии вне основного сервера.&lt;br /&gt;
&lt;br /&gt;
== Настройка безопасности ==&lt;br /&gt;
&lt;br /&gt;
=== CSF Firewall ===&lt;br /&gt;
&lt;br /&gt;
Позволяет:&lt;br /&gt;
&lt;br /&gt;
* открывать порты;&lt;br /&gt;
* блокировать IP;&lt;br /&gt;
* ограничивать подключения.&lt;br /&gt;
&lt;br /&gt;
=== Jail ===&lt;br /&gt;
&lt;br /&gt;
Технология Jail изолирует пользователей друг от друга и повышает безопасность многопользовательского хостинга. ([docs.brainycp.com][2])&lt;br /&gt;
&lt;br /&gt;
Настройка:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Управление → Настройка Jail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Установка MediaWiki в BrainyCP ==&lt;br /&gt;
&lt;br /&gt;
=== Создание сайта ===&lt;br /&gt;
&lt;br /&gt;
Создайте домен:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiki.example.ru&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Создание базы данных ===&lt;br /&gt;
&lt;br /&gt;
Создайте:&lt;br /&gt;
&lt;br /&gt;
* БД;&lt;br /&gt;
* пользователя;&lt;br /&gt;
* пароль.&lt;br /&gt;
&lt;br /&gt;
=== Загрузка MediaWiki ===&lt;br /&gt;
&lt;br /&gt;
Загрузите файлы в каталог сайта.&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
/home/www/wiki.example.ru&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Запуск установки ===&lt;br /&gt;
&lt;br /&gt;
Откройте:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://wiki.example.ru&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следуйте мастеру установки MediaWiki.&lt;br /&gt;
&lt;br /&gt;
=== Завершение ===&lt;br /&gt;
&lt;br /&gt;
Скачайте файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LocalSettings.php&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Переместите его в корень MediaWiki.&lt;br /&gt;
&lt;br /&gt;
== Обновление BrainyCP ==&lt;br /&gt;
&lt;br /&gt;
Панель обновляется автоматически.&lt;br /&gt;
&lt;br /&gt;
Также можно проверить обновления вручную через интерфейс администратора.&lt;br /&gt;
&lt;br /&gt;
Перед обновлением рекомендуется создать резервную копию сервера.&lt;br /&gt;
&lt;br /&gt;
== Устранение неполадок ==&lt;br /&gt;
&lt;br /&gt;
=== Проверка статуса Nginx ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status nginx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Проверка Apache ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status httpd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
или&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status apache2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Проверка PHP-FPM ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemctl status php-fpm&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Проверка конфигурации Nginx ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nginx -t&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Рекомендации ==&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуется ===&lt;br /&gt;
&lt;br /&gt;
* использовать SSD;&lt;br /&gt;
* включить автоматические резервные копии;&lt;br /&gt;
* использовать Let's Encrypt;&lt;br /&gt;
* обновлять систему;&lt;br /&gt;
* ограничить SSH-доступ;&lt;br /&gt;
* использовать сложные пароли.&lt;br /&gt;
&lt;br /&gt;
=== Не рекомендуется ===&lt;br /&gt;
&lt;br /&gt;
* размещать тестовые проекты в production;&lt;br /&gt;
* отключать Firewall;&lt;br /&gt;
* хранить резервные копии только на одном сервере;&lt;br /&gt;
* использовать root для повседневной работы.&lt;br /&gt;
&lt;br /&gt;
== Заключение ==&lt;br /&gt;
&lt;br /&gt;
BrainyCP Free представляет собой мощную и бесплатную панель управления сервером, позволяющую быстро развернуть полноценный веб-хостинг без необходимости ручной настройки всех компонентов Linux.&lt;br /&gt;
&lt;br /&gt;
Для домашних проектов, небольших VPS и корпоративных сайтов BrainyCP предоставляет функциональность, достаточную для ежедневной эксплуатации и администрирования.&lt;br /&gt;
&lt;br /&gt;
[[Категория:BrainyCP]]&lt;br /&gt;
[[Категория:Веб-хостинг]]&lt;br /&gt;
[[Категория:Linux]]&lt;br /&gt;
[[Категория:MediaWiki]]&lt;br /&gt;
[[Категория:Ramba-Art Wiki]]&lt;br /&gt;
&lt;br /&gt;
Для Ramba-Art Wiki рекомендуется дополнить статью реальными скриншотами вашей панели BrainyCP и отдельным разделом с накопленными решениями типичных проблем (например, настройка MediaWiki, ошибки Nginx и восстановление после неудачных обновлений).&lt;br /&gt;
&lt;br /&gt;
[1]: https://brainycp.com/?utm_source=chatgpt.com &amp;quot;Бесплатная панель управления хостингом, панель управления сервером, vps, хостинг-панель | BrainyCP&amp;quot;&lt;br /&gt;
[2]: https://docs.brainycp.com/index.php/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_Jail?utm_source=chatgpt.com &amp;quot;Настройка Jail — BrainyCP&amp;quot;&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=PBS&amp;diff=100</id>
		<title>PBS</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=PBS&amp;diff=100"/>
		<updated>2026-06-17T08:32:16Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: Новая страница: «= Proxmox Backup Server (PBS): развёртывание и настройка резервного копирования =  {{TOC}}  == Введение ==  '''Proxmox Backup Server (PBS)''' — это специализированное решение для резервного копирования виртуальных машин, контейнеров и физических серверов, разработанное компанией Proxmox....»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Proxmox Backup Server (PBS): развёртывание и настройка резервного копирования =&lt;br /&gt;
&lt;br /&gt;
{{TOC}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
'''Proxmox Backup Server (PBS)''' — это специализированное решение для резервного копирования виртуальных машин, контейнеров и физических серверов, разработанное компанией Proxmox.&lt;br /&gt;
&lt;br /&gt;
PBS обеспечивает:&lt;br /&gt;
&lt;br /&gt;
* дедупликацию данных;&lt;br /&gt;
* инкрементные резервные копии;&lt;br /&gt;
* шифрование;&lt;br /&gt;
* проверку целостности архивов;&lt;br /&gt;
* быстрое восстановление;&lt;br /&gt;
* интеграцию с Proxmox VE.&lt;br /&gt;
&lt;br /&gt;
Использование PBS позволяет значительно снизить объём занимаемого пространства и повысить надёжность хранения резервных копий.&lt;br /&gt;
&lt;br /&gt;
== Преимущества PBS ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Возможность&lt;br /&gt;
&lt;br /&gt;
| ! Описание                                  |&lt;br /&gt;
| ------------------------------------------- |&lt;br /&gt;
| Инкрементные копии                          |&lt;br /&gt;
| Передаются только изменившиеся блоки данных |&lt;br /&gt;
| -                                           |&lt;br /&gt;
| Дедупликация                                |&lt;br /&gt;
| Исключение повторяющихся блоков             |&lt;br /&gt;
| -                                           |&lt;br /&gt;
| Сжатие                                      |&lt;br /&gt;
| Экономия дискового пространства             |&lt;br /&gt;
| -                                           |&lt;br /&gt;
| Проверка целостности                        |&lt;br /&gt;
| Выявление повреждённых резервных копий      |&lt;br /&gt;
| -                                           |&lt;br /&gt;
| Шифрование                                  |&lt;br /&gt;
| Защита резервных копий                      |&lt;br /&gt;
| -                                           |&lt;br /&gt;
| Интеграция с PVE                            |&lt;br /&gt;
| Управление через интерфейс Proxmox          |&lt;br /&gt;
| }                                           |&lt;br /&gt;
&lt;br /&gt;
[[Файл:PBS-Dashboard.png|800px|center|thumb|Главная панель Proxmox Backup Server]]&lt;br /&gt;
&lt;br /&gt;
== Системные требования ==&lt;br /&gt;
&lt;br /&gt;
=== Минимальные ===&lt;br /&gt;
&lt;br /&gt;
* 64-битный процессор;&lt;br /&gt;
* 2 ГБ ОЗУ;&lt;br /&gt;
* SSD под систему;&lt;br /&gt;
* отдельный диск под резервные копии.&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемые ===&lt;br /&gt;
&lt;br /&gt;
* 4–8 ГБ ОЗУ;&lt;br /&gt;
* ZFS;&lt;br /&gt;
* отдельный сервер;&lt;br /&gt;
* RAID-массив;&lt;br /&gt;
* UPS.&lt;br /&gt;
&lt;br /&gt;
== Установка PBS ==&lt;br /&gt;
&lt;br /&gt;
=== Подготовка ===&lt;br /&gt;
&lt;br /&gt;
Скачайте ISO-образ Proxmox Backup Server и создайте загрузочную флешку.&lt;br /&gt;
&lt;br /&gt;
=== Установка ===&lt;br /&gt;
&lt;br /&gt;
# Загрузитесь с установочного носителя.&lt;br /&gt;
&lt;br /&gt;
# Выберите '''Install Proxmox Backup Server'''.&lt;br /&gt;
&lt;br /&gt;
# Примите лицензию.&lt;br /&gt;
&lt;br /&gt;
# Выберите диск установки.&lt;br /&gt;
&lt;br /&gt;
# Настройте:&lt;br /&gt;
&lt;br /&gt;
## страну;&lt;br /&gt;
&lt;br /&gt;
## часовой пояс;&lt;br /&gt;
&lt;br /&gt;
## раскладку клавиатуры.&lt;br /&gt;
&lt;br /&gt;
# Укажите пароль root и e-mail.&lt;br /&gt;
&lt;br /&gt;
# Настройте сеть.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Hostname: pbs.ramba.local&lt;br /&gt;
IP:       192.168.1.50/24&lt;br /&gt;
Gateway:  192.168.1.1&lt;br /&gt;
DNS:      1.1.1.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:PBS-Install.png|800px|center|thumb|Установка PBS]]&lt;br /&gt;
&lt;br /&gt;
== Первый вход ==&lt;br /&gt;
&lt;br /&gt;
После установки откройте:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
https://IP_PBS:8007&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
https://192.168.1.50:8007&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Войдите под:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
User: root&lt;br /&gt;
Realm: Linux PAM&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:PBS-Login.png|800px|center|thumb|Вход в веб-интерфейс PBS]]&lt;br /&gt;
&lt;br /&gt;
== Настройка репозиториев без подписки ==&lt;br /&gt;
&lt;br /&gt;
=== Отключение Enterprise ===&lt;br /&gt;
&lt;br /&gt;
Отредактируйте файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/apt/sources.list.d/pbs-enterprise.sources&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Закомментируйте строки Enterprise.&lt;br /&gt;
&lt;br /&gt;
=== Подключение No-Subscription ===&lt;br /&gt;
&lt;br /&gt;
Создайте файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/apt/sources.list.d/pbs-no-subscription.sources&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Содержимое:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: http://download.proxmox.com/debian/pbs&lt;br /&gt;
Suites: trixie&lt;br /&gt;
Components: pbs-no-subscription&lt;br /&gt;
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обновите систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade -y&lt;br /&gt;
reboot&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Создание Datastore ==&lt;br /&gt;
&lt;br /&gt;
Datastore — это место хранения резервных копий.&lt;br /&gt;
&lt;br /&gt;
=== Подготовка диска ===&lt;br /&gt;
&lt;br /&gt;
Проверьте диски:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
lsblk&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sda  32G&lt;br /&gt;
sdb   4T&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создайте файловую систему:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkfs.ext4 /dev/sdb&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создайте каталог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /backup&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Добавьте в /etc/fstab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
UUID=xxxxxxxx /backup ext4 defaults 0 2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Смонтируйте:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -a&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Создание Datastore ===&lt;br /&gt;
&lt;br /&gt;
Administration → Datastore → Add&lt;br /&gt;
&lt;br /&gt;
Укажите:&lt;br /&gt;
&lt;br /&gt;
* Name: backup&lt;br /&gt;
* Backing Path: /backup&lt;br /&gt;
&lt;br /&gt;
[[Файл:PBS-Datastore.png|800px|center|thumb|Создание Datastore]]&lt;br /&gt;
&lt;br /&gt;
== Подключение PBS к Proxmox VE ==&lt;br /&gt;
&lt;br /&gt;
На PVE:&lt;br /&gt;
&lt;br /&gt;
Datacenter → Storage → Add → Proxmox Backup Server&lt;br /&gt;
&lt;br /&gt;
Заполните:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Поле&lt;br /&gt;
&lt;br /&gt;
| ! Пример      |&lt;br /&gt;
| ------------- |&lt;br /&gt;
| ID            |&lt;br /&gt;
| PBS           |&lt;br /&gt;
| -             |&lt;br /&gt;
| Server        |&lt;br /&gt;
| 192.168.1.50  |&lt;br /&gt;
| -             |&lt;br /&gt;
| Username      |&lt;br /&gt;
| root@pam      |&lt;br /&gt;
| -             |&lt;br /&gt;
| Password      |&lt;br /&gt;
| ********      |&lt;br /&gt;
| -             |&lt;br /&gt;
| Datastore     |&lt;br /&gt;
| backup        |&lt;br /&gt;
| -             |&lt;br /&gt;
| Fingerprint   |&lt;br /&gt;
| автоматически |&lt;br /&gt;
| }             |&lt;br /&gt;
&lt;br /&gt;
Нажмите '''Add'''.&lt;br /&gt;
&lt;br /&gt;
[[Файл:PBS-StorageAdd.png|800px|center|thumb|Подключение PBS к PVE]]&lt;br /&gt;
&lt;br /&gt;
== Создание задания резервного копирования ==&lt;br /&gt;
&lt;br /&gt;
Datacenter → Backup → Add&lt;br /&gt;
&lt;br /&gt;
Пример настройки:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Параметр&lt;br /&gt;
&lt;br /&gt;
| ! Значение      |&lt;br /&gt;
| --------------- |&lt;br /&gt;
| Node            |&lt;br /&gt;
| Все узлы        |&lt;br /&gt;
| -               |&lt;br /&gt;
| Storage         |&lt;br /&gt;
| PBS             |&lt;br /&gt;
| -               |&lt;br /&gt;
| Schedule        |&lt;br /&gt;
| ежедневно 02:00 |&lt;br /&gt;
| -               |&lt;br /&gt;
| Mode            |&lt;br /&gt;
| Snapshot        |&lt;br /&gt;
| -               |&lt;br /&gt;
| Compression     |&lt;br /&gt;
| ZSTD            |&lt;br /&gt;
| }               |&lt;br /&gt;
&lt;br /&gt;
[[Файл:PBS-Job.png|800px|center|thumb|Настройка задания резервного копирования]]&lt;br /&gt;
&lt;br /&gt;
== Ручное создание резервной копии ==&lt;br /&gt;
&lt;br /&gt;
Выберите ВМ или контейнер:&lt;br /&gt;
&lt;br /&gt;
Backup → Backup now&lt;br /&gt;
&lt;br /&gt;
Укажите:&lt;br /&gt;
&lt;br /&gt;
* Storage;&lt;br /&gt;
* Mode;&lt;br /&gt;
* Compression.&lt;br /&gt;
&lt;br /&gt;
Нажмите '''Backup'''.&lt;br /&gt;
&lt;br /&gt;
== Восстановление виртуальной машины ==&lt;br /&gt;
&lt;br /&gt;
=== Полное восстановление ===&lt;br /&gt;
&lt;br /&gt;
# Откройте PBS Storage.&lt;br /&gt;
&lt;br /&gt;
# Выберите резервную копию.&lt;br /&gt;
&lt;br /&gt;
# Нажмите '''Restore'''.&lt;br /&gt;
&lt;br /&gt;
# Укажите:&lt;br /&gt;
&lt;br /&gt;
## Node;&lt;br /&gt;
&lt;br /&gt;
## VM ID;&lt;br /&gt;
&lt;br /&gt;
## Storage.&lt;br /&gt;
&lt;br /&gt;
=== Восстановление файлов ==&lt;br /&gt;
&lt;br /&gt;
PBS позволяет просматривать содержимое резервной копии и восстанавливать отдельные файлы без полного восстановления виртуальной машины.&lt;br /&gt;
&lt;br /&gt;
[[Файл:PBS-Restore.png|800px|center|thumb|Восстановление из резервной копии]]&lt;br /&gt;
&lt;br /&gt;
== Проверка резервных копий ==&lt;br /&gt;
&lt;br /&gt;
PBS может автоматически проверять целостность данных.&lt;br /&gt;
&lt;br /&gt;
Administration → Verify Jobs → Add&lt;br /&gt;
&lt;br /&gt;
Рекомендуется запускать проверку:&lt;br /&gt;
&lt;br /&gt;
* еженедельно;&lt;br /&gt;
* в ночное время.&lt;br /&gt;
&lt;br /&gt;
== Политика хранения (Prune) ==&lt;br /&gt;
&lt;br /&gt;
Для автоматического удаления старых резервных копий используйте Prune Jobs.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Параметр&lt;br /&gt;
&lt;br /&gt;
| ! Значение   |&lt;br /&gt;
| ------------ |&lt;br /&gt;
| Keep Last    |&lt;br /&gt;
| 7            |&lt;br /&gt;
| -            |&lt;br /&gt;
| Keep Daily   |&lt;br /&gt;
| 14           |&lt;br /&gt;
| -            |&lt;br /&gt;
| Keep Weekly  |&lt;br /&gt;
| 8            |&lt;br /&gt;
| -            |&lt;br /&gt;
| Keep Monthly |&lt;br /&gt;
| 12           |&lt;br /&gt;
| }            |&lt;br /&gt;
&lt;br /&gt;
Это позволит хранить:&lt;br /&gt;
&lt;br /&gt;
* последние 7 копий;&lt;br /&gt;
* ежедневные за 14 дней;&lt;br /&gt;
* недельные за 8 недель;&lt;br /&gt;
* месячные за 12 месяцев.&lt;br /&gt;
&lt;br /&gt;
== Garbage Collection ==&lt;br /&gt;
&lt;br /&gt;
После удаления резервных копий необходимо освобождать неиспользуемые блоки.&lt;br /&gt;
&lt;br /&gt;
Administration → Garbage Collection → Add&lt;br /&gt;
&lt;br /&gt;
Рекомендуется выполнять:&lt;br /&gt;
&lt;br /&gt;
* ежедневно;&lt;br /&gt;
* после Prune.&lt;br /&gt;
&lt;br /&gt;
== Рекомендации по эксплуатации ==&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуется ===&lt;br /&gt;
&lt;br /&gt;
* использовать отдельный сервер PBS;&lt;br /&gt;
* хранить резервные копии на RAID-массиве;&lt;br /&gt;
* использовать UPS;&lt;br /&gt;
* регулярно проверять восстановление;&lt;br /&gt;
* выполнять Verify Jobs;&lt;br /&gt;
* настроить Prune и Garbage Collection.&lt;br /&gt;
&lt;br /&gt;
=== Не рекомендуется ===&lt;br /&gt;
&lt;br /&gt;
* хранить PBS на том же диске, что и PVE;&lt;br /&gt;
* отключать Verify;&lt;br /&gt;
* хранить только одну копию данных;&lt;br /&gt;
* считать резервную копию рабочей, не проверив восстановление.&lt;br /&gt;
&lt;br /&gt;
== Практическая схема для Ramba-Art ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PVE01 ─┐&lt;br /&gt;
        ├──── LAN ─── PBS&lt;br /&gt;
PVE02 ─┤&lt;br /&gt;
        │&lt;br /&gt;
PVE03 ─┘&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Рекомендуемый график:&lt;br /&gt;
&lt;br /&gt;
* 02:00 — резервное копирование;&lt;br /&gt;
* 04:00 — Prune;&lt;br /&gt;
* 05:00 — Garbage Collection;&lt;br /&gt;
* воскресенье 06:00 — Verify.&lt;br /&gt;
&lt;br /&gt;
== Заключение ==&lt;br /&gt;
&lt;br /&gt;
Proxmox Backup Server является одним из наиболее эффективных решений для резервного копирования инфраструктуры Proxmox VE. Благодаря дедупликации и инкрементным копиям PBS позволяет существенно экономить дисковое пространство, а встроенные механизмы проверки обеспечивают надёжность хранения данных.&lt;br /&gt;
&lt;br /&gt;
Регулярно проверяйте возможность восстановления и придерживайтесь правила '''3-2-1''': храните минимум три копии данных на двух различных носителях, одна из которых должна находиться вне основной площадки.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Proxmox Backup Server]]&lt;br /&gt;
[[Категория:Резервное копирование]]&lt;br /&gt;
[[Категория:Proxmox VE]]&lt;br /&gt;
[[Категория:Ramba-Art Wiki]]&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=Proxmox&amp;diff=99</id>
		<title>Proxmox</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=Proxmox&amp;diff=99"/>
		<updated>2026-06-17T08:13:42Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: Новая страница: «= Установка и настройка Proxmox VE 9: от одной ноды до отказоустойчивого кластера =  {{TOC}}  == Введение ==  '''Proxmox Virtual Environment (PVE)''' — это платформа виртуализации корпоративного уровня, объединяющая KVM, LXC, кластеризацию, высокую доступность (HA) и резервное копирован...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Установка и настройка Proxmox VE 9: от одной ноды до отказоустойчивого кластера =&lt;br /&gt;
&lt;br /&gt;
{{TOC}}&lt;br /&gt;
&lt;br /&gt;
== Введение ==&lt;br /&gt;
&lt;br /&gt;
'''Proxmox Virtual Environment (PVE)''' — это платформа виртуализации корпоративного уровня, объединяющая KVM, LXC, кластеризацию, высокую доступность (HA) и резервное копирование в едином веб-интерфейсе.&lt;br /&gt;
&lt;br /&gt;
Данная статья описывает полный путь развёртывания инфраструктуры:&lt;br /&gt;
&lt;br /&gt;
* Установка Proxmox VE 9;&lt;br /&gt;
* Первичная настройка;&lt;br /&gt;
* Настройка сетей и мостов;&lt;br /&gt;
* Настройка репозиториев без подписки;&lt;br /&gt;
* Подключение хранилищ;&lt;br /&gt;
* Создание кластера;&lt;br /&gt;
* Настройка HA;&lt;br /&gt;
* Подключение Proxmox Backup Server;&lt;br /&gt;
* Рекомендации по Corosync и Quorum.&lt;br /&gt;
&lt;br /&gt;
== Требования ==&lt;br /&gt;
&lt;br /&gt;
=== Минимальные требования ===&lt;br /&gt;
&lt;br /&gt;
* 64-битный процессор с поддержкой виртуализации (Intel VT-x / AMD-V);&lt;br /&gt;
* минимум 4 ГБ ОЗУ;&lt;br /&gt;
* SSD-диск;&lt;br /&gt;
* сетевой интерфейс 1 Гбит/с.&lt;br /&gt;
&lt;br /&gt;
=== Рекомендуемые требования ===&lt;br /&gt;
&lt;br /&gt;
* ECC-память;&lt;br /&gt;
* SSD/NVMe под систему;&lt;br /&gt;
* отдельная сеть под кластер;&lt;br /&gt;
* не менее 2 сетевых интерфейсов;&lt;br /&gt;
* UPS для каждого узла.&lt;br /&gt;
&lt;br /&gt;
== Подготовка установочного носителя ==&lt;br /&gt;
&lt;br /&gt;
# Скачайте ISO-образ Proxmox VE 9 с официального сайта.&lt;br /&gt;
&lt;br /&gt;
# Запишите образ на USB-накопитель.&lt;br /&gt;
&lt;br /&gt;
# Настройте загрузку сервера с USB.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ProxmoxVE9-BootMenu.png|800px|center|thumb|Меню загрузки установщика Proxmox VE 9]]&lt;br /&gt;
&lt;br /&gt;
== Установка Proxmox VE 9 ==&lt;br /&gt;
&lt;br /&gt;
# Выберите '''Install Proxmox VE'''.&lt;br /&gt;
&lt;br /&gt;
# Примите лицензионное соглашение.&lt;br /&gt;
&lt;br /&gt;
# Выберите диск установки.&lt;br /&gt;
&lt;br /&gt;
# Укажите:&lt;br /&gt;
&lt;br /&gt;
## страну;&lt;br /&gt;
&lt;br /&gt;
## часовой пояс;&lt;br /&gt;
&lt;br /&gt;
## раскладку клавиатуры.&lt;br /&gt;
&lt;br /&gt;
# Задайте пароль пользователя root.&lt;br /&gt;
&lt;br /&gt;
# Укажите e-mail администратора.&lt;br /&gt;
&lt;br /&gt;
=== Настройка сети ===&lt;br /&gt;
&lt;br /&gt;
Укажите:&lt;br /&gt;
&lt;br /&gt;
* Hostname;&lt;br /&gt;
* IP-адрес;&lt;br /&gt;
* Маску;&lt;br /&gt;
* Шлюз;&lt;br /&gt;
* DNS-сервер.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Hostname: pve01.ramba.local&lt;br /&gt;
IP:       192.168.1.11/24&lt;br /&gt;
Gateway:  192.168.1.1&lt;br /&gt;
DNS:      1.1.1.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:ProxmoxVE9-NetworkSetup.png|800px|center|thumb|Настройка сети при установке]]&lt;br /&gt;
&lt;br /&gt;
После завершения установки перезагрузите сервер.&lt;br /&gt;
&lt;br /&gt;
== Первый вход ==&lt;br /&gt;
&lt;br /&gt;
Откройте браузер:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
https://IP_СЕРВЕРА:8006&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
https://192.168.1.11:8006&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Войдите под:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
User: root&lt;br /&gt;
Realm: Linux PAM&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:ProxmoxVE9-Login.png|800px|center|thumb|Вход в веб-интерфейс]]&lt;br /&gt;
&lt;br /&gt;
== Настройка репозиториев без подписки ==&lt;br /&gt;
&lt;br /&gt;
По умолчанию используется Enterprise-репозиторий.&lt;br /&gt;
&lt;br /&gt;
=== Отключение Enterprise ===&lt;br /&gt;
&lt;br /&gt;
Отредактируйте файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/apt/sources.list.d/pve-enterprise.sources&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Закомментируйте строки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# URIs: https://enterprise.proxmox.com/debian/pve&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Подключение No-Subscription ===&lt;br /&gt;
&lt;br /&gt;
Создайте файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/apt/sources.list.d/pve-no-subscription.sources&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Содержимое:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Types: deb&lt;br /&gt;
URIs: http://download.proxmox.com/debian/pve&lt;br /&gt;
Suites: trixie&lt;br /&gt;
Components: pve-no-subscription&lt;br /&gt;
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Обновление системы ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt update&lt;br /&gt;
apt full-upgrade -y&lt;br /&gt;
reboot&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Настройка сети и мостов ==&lt;br /&gt;
&lt;br /&gt;
Proxmox использует Linux Bridge.&lt;br /&gt;
&lt;br /&gt;
Файл настройки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nano /etc/network/interfaces&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
iface eno1 inet manual&lt;br /&gt;
&lt;br /&gt;
auto vmbr0&lt;br /&gt;
iface vmbr0 inet static&lt;br /&gt;
address 192.168.1.11/24&lt;br /&gt;
gateway 192.168.1.1&lt;br /&gt;
bridge-ports eno1&lt;br /&gt;
bridge-stp off&lt;br /&gt;
bridge-fd 0 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Описание параметров:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Параметр&lt;br /&gt;
&lt;br /&gt;
| ! Назначение         |&lt;br /&gt;
| -------------------- |&lt;br /&gt;
| vmbr0                |&lt;br /&gt;
| Основной мост        |&lt;br /&gt;
| -                    |&lt;br /&gt;
| bridge-ports         |&lt;br /&gt;
| Физический интерфейс |&lt;br /&gt;
| -                    |&lt;br /&gt;
| bridge-stp           |&lt;br /&gt;
| Spanning Tree        |&lt;br /&gt;
| -                    |&lt;br /&gt;
| bridge-fd            |&lt;br /&gt;
| Время задержки       |&lt;br /&gt;
| }                    |&lt;br /&gt;
&lt;br /&gt;
[[Файл:ProxmoxVE9-vmbr0.png|800px|center|thumb|Настройка vmbr0]]&lt;br /&gt;
&lt;br /&gt;
== Подключение хранилищ ==&lt;br /&gt;
&lt;br /&gt;
=== Локальное хранилище ===&lt;br /&gt;
&lt;br /&gt;
Доступно после установки:&lt;br /&gt;
&lt;br /&gt;
* local;&lt;br /&gt;
* local-lvm.&lt;br /&gt;
&lt;br /&gt;
=== Подключение NFS ===&lt;br /&gt;
&lt;br /&gt;
Datacenter → Storage → Add → NFS&lt;br /&gt;
&lt;br /&gt;
Укажите:&lt;br /&gt;
&lt;br /&gt;
* ID;&lt;br /&gt;
* Server;&lt;br /&gt;
* Export;&lt;br /&gt;
* Content.&lt;br /&gt;
&lt;br /&gt;
=== Подключение SMB/CIFS ===&lt;br /&gt;
&lt;br /&gt;
Datacenter → Storage → Add → SMB/CIFS&lt;br /&gt;
&lt;br /&gt;
Укажите:&lt;br /&gt;
&lt;br /&gt;
* адрес;&lt;br /&gt;
* логин;&lt;br /&gt;
* пароль;&lt;br /&gt;
* общий ресурс.&lt;br /&gt;
&lt;br /&gt;
=== Подключение iSCSI ===&lt;br /&gt;
&lt;br /&gt;
Datacenter → Storage → Add → iSCSI&lt;br /&gt;
&lt;br /&gt;
Необходимо указать:&lt;br /&gt;
&lt;br /&gt;
* Portal;&lt;br /&gt;
* Target;&lt;br /&gt;
* LUN.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ProxmoxVE9-Storage.png|800px|center|thumb|Подключение сетевых хранилищ]]&lt;br /&gt;
&lt;br /&gt;
== Создание кластера ==&lt;br /&gt;
&lt;br /&gt;
=== Требования ==&lt;br /&gt;
&lt;br /&gt;
* одинаковая версия Proxmox;&lt;br /&gt;
* синхронизация времени;&lt;br /&gt;
* статические IP;&lt;br /&gt;
* низкая задержка сети.&lt;br /&gt;
&lt;br /&gt;
=== Создание первого узла ==&lt;br /&gt;
&lt;br /&gt;
На первой ноде:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pvecm create ramba-cluster&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверка:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pvecm status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Добавление второй ноды ===&lt;br /&gt;
&lt;br /&gt;
На новой ноде:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pvecm add 192.168.1.11&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Введите пароль root.&lt;br /&gt;
&lt;br /&gt;
=== Проверка ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pvecm nodes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Результат:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Node  Sts&lt;br /&gt;
1     M&lt;br /&gt;
2     M&lt;br /&gt;
3     M&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:ProxmoxVE9-Cluster.png|800px|center|thumb|Кластер Proxmox]]&lt;br /&gt;
&lt;br /&gt;
== Corosync и Quorum ==&lt;br /&gt;
&lt;br /&gt;
=== Что такое Corosync ===&lt;br /&gt;
&lt;br /&gt;
Corosync отвечает за обмен данными между узлами кластера.&lt;br /&gt;
&lt;br /&gt;
=== Что такое Quorum ===&lt;br /&gt;
&lt;br /&gt;
Quorum определяет наличие большинства голосов.&lt;br /&gt;
&lt;br /&gt;
=== Рекомендации ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Количество узлов&lt;br /&gt;
&lt;br /&gt;
| ! Рекомендация            |&lt;br /&gt;
| ------------------------- |&lt;br /&gt;
| 1                         |&lt;br /&gt;
| Кластер не требуется      |&lt;br /&gt;
| -                         |&lt;br /&gt;
| 2                         |&lt;br /&gt;
| Использовать QDevice      |&lt;br /&gt;
| -                         |&lt;br /&gt;
| 3                         |&lt;br /&gt;
| Оптимальный минимум       |&lt;br /&gt;
| -                         |&lt;br /&gt;
| 5+                        |&lt;br /&gt;
| Для крупных инфраструктур |&lt;br /&gt;
| }                         |&lt;br /&gt;
&lt;br /&gt;
=== Двухузловой кластер ===&lt;br /&gt;
&lt;br /&gt;
Рекомендуется использовать QDevice.&lt;br /&gt;
&lt;br /&gt;
Без него отказ одной ноды может остановить весь кластер.&lt;br /&gt;
&lt;br /&gt;
== Настройка High Availability (HA) ==&lt;br /&gt;
&lt;br /&gt;
=== Требования ===&lt;br /&gt;
&lt;br /&gt;
* минимум 3 голоса Quorum;&lt;br /&gt;
* общее хранилище;&lt;br /&gt;
* исправная сеть Corosync.&lt;br /&gt;
&lt;br /&gt;
=== Включение HA ==&lt;br /&gt;
&lt;br /&gt;
Datacenter → HA&lt;br /&gt;
&lt;br /&gt;
Добавьте виртуальную машину:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Add → VM&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Настройте:&lt;br /&gt;
&lt;br /&gt;
* State: Started;&lt;br /&gt;
* Group;&lt;br /&gt;
* Max Restart;&lt;br /&gt;
* Max Relocate.&lt;br /&gt;
&lt;br /&gt;
=== Проверка ==&lt;br /&gt;
&lt;br /&gt;
Остановите одну из нод.&lt;br /&gt;
&lt;br /&gt;
ВМ должна автоматически запуститься на другой.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ProxmoxVE9-HA.png|800px|center|thumb|Настройка высокой доступности]]&lt;br /&gt;
&lt;br /&gt;
== Подключение Proxmox Backup Server ==&lt;br /&gt;
&lt;br /&gt;
=== Добавление PBS ===&lt;br /&gt;
&lt;br /&gt;
Datacenter → Storage → Add → Proxmox Backup Server&lt;br /&gt;
&lt;br /&gt;
Укажите:&lt;br /&gt;
&lt;br /&gt;
* ID;&lt;br /&gt;
* Server;&lt;br /&gt;
* Username;&lt;br /&gt;
* Password;&lt;br /&gt;
* Datastore;&lt;br /&gt;
* Fingerprint.&lt;br /&gt;
&lt;br /&gt;
=== Проверка соединения ===&lt;br /&gt;
&lt;br /&gt;
Нажмите '''Test'''.&lt;br /&gt;
&lt;br /&gt;
=== Создание задания резервного копирования ===&lt;br /&gt;
&lt;br /&gt;
Datacenter → Backup → Add&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Параметр&lt;br /&gt;
&lt;br /&gt;
| ! Значение      |&lt;br /&gt;
| --------------- |&lt;br /&gt;
| Schedule        |&lt;br /&gt;
| ежедневно 02:00 |&lt;br /&gt;
| -               |&lt;br /&gt;
| Mode            |&lt;br /&gt;
| Snapshot        |&lt;br /&gt;
| -               |&lt;br /&gt;
| Storage         |&lt;br /&gt;
| PBS             |&lt;br /&gt;
| }               |&lt;br /&gt;
&lt;br /&gt;
[[Файл:ProxmoxVE9-PBS.png|800px|center|thumb|Подключение PBS]]&lt;br /&gt;
&lt;br /&gt;
== Рекомендации по эксплуатации ==&lt;br /&gt;
&lt;br /&gt;
=== Что рекомендуется ===&lt;br /&gt;
&lt;br /&gt;
* использовать минимум 3 ноды;&lt;br /&gt;
* выделять отдельную сеть Corosync;&lt;br /&gt;
* применять UPS;&lt;br /&gt;
* регулярно обновлять систему;&lt;br /&gt;
* проверять резервные копии;&lt;br /&gt;
* использовать SSD/NVMe;&lt;br /&gt;
* следить за SMART дисков.&lt;br /&gt;
&lt;br /&gt;
=== Чего делать не стоит ===&lt;br /&gt;
&lt;br /&gt;
* использовать Wi-Fi для кластера;&lt;br /&gt;
* создавать HA на двух узлах без QDevice;&lt;br /&gt;
* отключать резервное копирование;&lt;br /&gt;
* использовать динамические IP-адреса.&lt;br /&gt;
&lt;br /&gt;
== Заключение ==&lt;br /&gt;
&lt;br /&gt;
Proxmox VE 9 позволяет построить отказоустойчивую платформу виртуализации практически любого масштаба — от домашней лаборатории до корпоративного кластера.&lt;br /&gt;
&lt;br /&gt;
Следуя данному руководству, вы сможете пройти весь путь:&lt;br /&gt;
&lt;br /&gt;
* от установки первой ноды;&lt;br /&gt;
* до полноценного кластера;&lt;br /&gt;
* с высокой доступностью;&lt;br /&gt;
* централизованным резервным копированием;&lt;br /&gt;
* и готовностью к эксплуатации в продуктивной среде.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Proxmox VE]]&lt;br /&gt;
[[Категория:Виртуализация]]&lt;br /&gt;
[[Категория:Кластеры]]&lt;br /&gt;
[[Категория:Ramba-Art Wiki]]&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=98</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=98"/>
		<updated>2026-06-16T18:16:43Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: /* ⭐ Избранные статьи */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; margin-bottom:30px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;📚 База знаний&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Документация по инфраструктуре, Linux и игровым серверам.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:12px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🖥️ Инфраструктура ===&lt;br /&gt;
''Серверы и виртуализация''&lt;br /&gt;
&lt;br /&gt;
* [[Proxmox]]&lt;br /&gt;
* [[PBS]]&lt;br /&gt;
* [[iLO]]&lt;br /&gt;
* [[BrainyCP]]&lt;br /&gt;
* [[Сетевое оборудование]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🐧 Linux ===&lt;br /&gt;
''Системное администрирование''&lt;br /&gt;
&lt;br /&gt;
* [[Ubuntu]]&lt;br /&gt;
* [[Debian]]&lt;br /&gt;
* [[Nginx]]&lt;br /&gt;
* [[Docker]]&lt;br /&gt;
* [[Bash]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🎮 Игровые серверы ===&lt;br /&gt;
''Игровая инфраструктура''&lt;br /&gt;
&lt;br /&gt;
* [[Rust]]&lt;br /&gt;
* [[LGSM]]&lt;br /&gt;
* [[SteamCMD]]&lt;br /&gt;
* [[Резервное копирование]]&lt;br /&gt;
* [[Мониторинг]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
== ⭐ Избранные статьи ==&lt;br /&gt;
&lt;br /&gt;
* [[Установка Proxmox VE]]&lt;br /&gt;
* [[Настройка Proxmox Backup Server]]&lt;br /&gt;
* [[Настройка BrainyCP]]&lt;br /&gt;
* [[Создание LXC-контейнеров]]&lt;br /&gt;
* [[Настройка Rust-сервера через LGSM]]&lt;br /&gt;
* [[Minecraft_в_2026_году]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🕒 Последние изменения ==&lt;br /&gt;
&lt;br /&gt;
* [[Special:RecentChanges|Посмотреть все последние изменения]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🔗 Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [[Special:AllPages|Все статьи]]&lt;br /&gt;
* [[Special:Categories|Все категории]]&lt;br /&gt;
* [[Special:WantedPages|Нужные страницы]]&lt;br /&gt;
* [[Special:Random|🎲 Случайная статья]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=97</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=97"/>
		<updated>2026-06-16T18:16:16Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: /* ⭐ Избранные статьи */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; margin-bottom:30px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;📚 База знаний&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Документация по инфраструктуре, Linux и игровым серверам.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:12px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🖥️ Инфраструктура ===&lt;br /&gt;
''Серверы и виртуализация''&lt;br /&gt;
&lt;br /&gt;
* [[Proxmox]]&lt;br /&gt;
* [[PBS]]&lt;br /&gt;
* [[iLO]]&lt;br /&gt;
* [[BrainyCP]]&lt;br /&gt;
* [[Сетевое оборудование]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🐧 Linux ===&lt;br /&gt;
''Системное администрирование''&lt;br /&gt;
&lt;br /&gt;
* [[Ubuntu]]&lt;br /&gt;
* [[Debian]]&lt;br /&gt;
* [[Nginx]]&lt;br /&gt;
* [[Docker]]&lt;br /&gt;
* [[Bash]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🎮 Игровые серверы ===&lt;br /&gt;
''Игровая инфраструктура''&lt;br /&gt;
&lt;br /&gt;
* [[Rust]]&lt;br /&gt;
* [[LGSM]]&lt;br /&gt;
* [[SteamCMD]]&lt;br /&gt;
* [[Резервное копирование]]&lt;br /&gt;
* [[Мониторинг]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
== ⭐ Избранные статьи ==&lt;br /&gt;
&lt;br /&gt;
* [[Установка Proxmox VE]]&lt;br /&gt;
* [[Настройка Proxmox Backup Server]]&lt;br /&gt;
* [[Настройка BrainyCP]]&lt;br /&gt;
* [[Создание LXC-контейнеров]]&lt;br /&gt;
* [[Настройка Rust-сервера через LGSM]]&lt;br /&gt;
* [[Minecraft_в_2026_году]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🕒 Последние изменения ==&lt;br /&gt;
&lt;br /&gt;
* [[Special:RecentChanges|Посмотреть все последние изменения]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🔗 Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [[Special:AllPages|Все статьи]]&lt;br /&gt;
* [[Special:Categories|Все категории]]&lt;br /&gt;
* [[Special:WantedPages|Нужные страницы]]&lt;br /&gt;
* [[Special:Random|🎲 Случайная статья]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=96</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=96"/>
		<updated>2026-06-16T18:15:04Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: /* ⭐ Избранные статьи */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; margin-bottom:30px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;📚 База знаний&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Документация по инфраструктуре, Linux и игровым серверам.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:12px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🖥️ Инфраструктура ===&lt;br /&gt;
''Серверы и виртуализация''&lt;br /&gt;
&lt;br /&gt;
* [[Proxmox]]&lt;br /&gt;
* [[PBS]]&lt;br /&gt;
* [[iLO]]&lt;br /&gt;
* [[BrainyCP]]&lt;br /&gt;
* [[Сетевое оборудование]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🐧 Linux ===&lt;br /&gt;
''Системное администрирование''&lt;br /&gt;
&lt;br /&gt;
* [[Ubuntu]]&lt;br /&gt;
* [[Debian]]&lt;br /&gt;
* [[Nginx]]&lt;br /&gt;
* [[Docker]]&lt;br /&gt;
* [[Bash]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🎮 Игровые серверы ===&lt;br /&gt;
''Игровая инфраструктура''&lt;br /&gt;
&lt;br /&gt;
* [[Rust]]&lt;br /&gt;
* [[LGSM]]&lt;br /&gt;
* [[SteamCMD]]&lt;br /&gt;
* [[Резервное копирование]]&lt;br /&gt;
* [[Мониторинг]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ⭐ Избранные статьи ==&lt;br /&gt;
&lt;br /&gt;
* [[Установка Proxmox VE]]&lt;br /&gt;
* [[Настройка Proxmox Backup Server]]&lt;br /&gt;
* [[Настройка BrainyCP]]&lt;br /&gt;
* [[Создание LXC-контейнеров]]&lt;br /&gt;
* [[Настройка Rust-сервера через LGSM]]&lt;br /&gt;
* [[Minecraft_в_2026_году]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🕒 Последние изменения ==&lt;br /&gt;
&lt;br /&gt;
* [[Special:RecentChanges|Посмотреть все последние изменения]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🔗 Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [[Special:AllPages|Все статьи]]&lt;br /&gt;
* [[Special:Categories|Все категории]]&lt;br /&gt;
* [[Special:WantedPages|Нужные страницы]]&lt;br /&gt;
* [[Special:Random|🎲 Случайная статья]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=95</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=95"/>
		<updated>2026-06-16T18:14:31Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: /* ⭐ Избранные статьи */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; margin-bottom:30px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;📚 База знаний&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Документация по инфраструктуре, Linux и игровым серверам.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:12px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🖥️ Инфраструктура ===&lt;br /&gt;
''Серверы и виртуализация''&lt;br /&gt;
&lt;br /&gt;
* [[Proxmox]]&lt;br /&gt;
* [[PBS]]&lt;br /&gt;
* [[iLO]]&lt;br /&gt;
* [[BrainyCP]]&lt;br /&gt;
* [[Сетевое оборудование]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🐧 Linux ===&lt;br /&gt;
''Системное администрирование''&lt;br /&gt;
&lt;br /&gt;
* [[Ubuntu]]&lt;br /&gt;
* [[Debian]]&lt;br /&gt;
* [[Nginx]]&lt;br /&gt;
* [[Docker]]&lt;br /&gt;
* [[Bash]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🎮 Игровые серверы ===&lt;br /&gt;
''Игровая инфраструктура''&lt;br /&gt;
&lt;br /&gt;
* [[Rust]]&lt;br /&gt;
* [[LGSM]]&lt;br /&gt;
* [[SteamCMD]]&lt;br /&gt;
* [[Резервное копирование]]&lt;br /&gt;
* [[Мониторинг]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ⭐ Избранные статьи ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
* [[Установка Proxmox VE]]&lt;br /&gt;
* [[Настройка Proxmox Backup Server]]&lt;br /&gt;
* [[Настройка BrainyCP]]&lt;br /&gt;
* [[Создание LXC-контейнеров]]&lt;br /&gt;
* [[Настройка Rust-сервера через LGSM]]&lt;br /&gt;
* [[Minecraft_в_2026_году]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🕒 Последние изменения ==&lt;br /&gt;
&lt;br /&gt;
* [[Special:RecentChanges|Посмотреть все последние изменения]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🔗 Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [[Special:AllPages|Все статьи]]&lt;br /&gt;
* [[Special:Categories|Все категории]]&lt;br /&gt;
* [[Special:WantedPages|Нужные страницы]]&lt;br /&gt;
* [[Special:Random|🎲 Случайная статья]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.ramba-art.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=94</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.ramba-art.ru/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=94"/>
		<updated>2026-06-16T18:14:05Z</updated>

		<summary type="html">&lt;p&gt;192.168.1.1: /* ⭐ Избранные статьи */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;padding:20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; margin-bottom:30px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;📚 База знаний&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Документация по инфраструктуре, Linux и игровым серверам.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; border-spacing:12px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🖥️ Инфраструктура ===&lt;br /&gt;
''Серверы и виртуализация''&lt;br /&gt;
&lt;br /&gt;
* [[Proxmox]]&lt;br /&gt;
* [[PBS]]&lt;br /&gt;
* [[iLO]]&lt;br /&gt;
* [[BrainyCP]]&lt;br /&gt;
* [[Сетевое оборудование]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🐧 Linux ===&lt;br /&gt;
''Системное администрирование''&lt;br /&gt;
&lt;br /&gt;
* [[Ubuntu]]&lt;br /&gt;
* [[Debian]]&lt;br /&gt;
* [[Nginx]]&lt;br /&gt;
* [[Docker]]&lt;br /&gt;
* [[Bash]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:33%; vertical-align:top; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== 🎮 Игровые серверы ===&lt;br /&gt;
''Игровая инфраструктура''&lt;br /&gt;
&lt;br /&gt;
* [[Rust]]&lt;br /&gt;
* [[LGSM]]&lt;br /&gt;
* [[SteamCMD]]&lt;br /&gt;
* [[Резервное копирование]]&lt;br /&gt;
* [[Мониторинг]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ⭐ Избранные статьи ==&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Установка Proxmox VE]]&lt;br /&gt;
* [[Настройка Proxmox Backup Server]]&lt;br /&gt;
* [[Настройка BrainyCP]]&lt;br /&gt;
* [[Создание LXC-контейнеров]]&lt;br /&gt;
* [[Настройка Rust-сервера через LGSM]]&lt;br /&gt;
* [[Minecraft_в_2026_году]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🕒 Последние изменения ==&lt;br /&gt;
&lt;br /&gt;
* [[Special:RecentChanges|Посмотреть все последние изменения]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:20px; background:#f8f9fa; border:1px solid #c8ccd1; border-radius:8px; padding:15px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 🔗 Полезные ссылки ==&lt;br /&gt;
&lt;br /&gt;
* [[Special:AllPages|Все статьи]]&lt;br /&gt;
* [[Special:Categories|Все категории]]&lt;br /&gt;
* [[Special:WantedPages|Нужные страницы]]&lt;br /&gt;
* [[Special:Random|🎲 Случайная статья]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.1.1</name></author>
	</entry>
</feed>