<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Блог Opfield</title>
    <link>https://opfield.dev/ru/blog</link>
    <description>Новые версии, устройство Opfield и опыт команд, которые управляют с ним своей инфраструктурой.</description>
    <language>ru</language>
    <atom:link href="https://opfield.dev/ru/blog/rss.xml" rel="self" type="application/rss+xml" />
    <lastBuildDate>Sat, 17 Oct 2026 18:50:31 GMT</lastBuildDate>
    <item>
      <title>Opfield 2.12.3</title>
      <link>https://opfield.dev/ru/blog/opfield-2-12-3</link>
      <guid isPermaLink="true">https://opfield.dev/ru/blog/opfield-2-12-3</guid>
      <pubDate>Sat, 17 Oct 2026 18:00:00 GMT</pubDate>
      <description>Диски под контролем на каждом узле, алерты о заполнении, защита консоли от ошибок ИИ-агентов, порядок правил в списках доступа, порядок переключения баз, реестр в S3 и улучшения Git-сборок.</description>
      <content:encoded><![CDATA[<p>Вышел Opfield 2.12.3. Основная работа в этом релизе ушла на то, чтобы диски не переполнялись, чтобы доступ агентов стал безопаснее, и на исправление шероховатостей в Git-сборках, Pages и управляемых базах данных. Ниже то, что заметит большинство пользователей. Полный список изменений — в <a href="https://opfield.dev/ru/changelog">журнале изменений</a>.</p>
<h2 id="----">Диски не растут без предела</h2>
<p>Панель управления, которая гоняет сборки, образы и логи на десятках серверов, может незаметно заполнить диск. В 2.12.3 у всего, что растёт, есть предел.</p>
<ul>
<li>Внутренний реестр хранит две сборки на контейнер, удаляет сборки удалённых источников и перестаёт принимать новые сборки, когда его диск заполнен на 90%.</li>
<li>Docker-узлы удаляют образы, которые никто не использовал 12 часов. У каждого контейнера остаётся образ, на котором он работает, и один для отката.</li>
<li>Логи контейнеров на Docker-узлах ограничены по размеру, в том числе у контейнеров, созданных до Opfield или в обход него. Nginx-узлы держат логи маршрутов в пределах лимита и удаляют логи удалённых маршрутов.</li>
<li>WAL и слоты репликации Postgres больше не заполняют диск базы.</li>
<li>Housekeeping держит собственные данные Opfield в пределах, даже когда он выключен, и запускается сразу, как только диск Opfield заполнен на 90%. Он же показывает, чем занят каждый диск: самые большие таблицы, Redis, логи контейнеров и старые образы на каждом узле.</li>
</ul>
<p>Новые встроенные алерты предупреждают заранее: заполнение диска на 85% (для каждого диска данных узла), переполненный диск Opfield, переполненный диск базы данных и остановившийся Housekeeping.</p>
<h2 id="---">Защита консоли для агентов</h2>
<p>Ассистент и MCP-клиенты могут выполнять команды в консоли узла. Команды выполняются от root, так что агент действительно может починить узел. Но Docker, containerd и Podman в этой консоли скрыты: команда с Docker отклоняется, а в ответе указан инструмент Opfield, которым нужно воспользоваться.</p>
<p>Это защита от случайностей, а не граница безопасности. Она не даёт агенту по ошибке изменить управляемый контейнер в обход Opfield. Кроме того, агенты больше не могут выполнять команды по SSH на хостах, которые являются узлами Opfield.</p>
<p>Если управляемый контейнер всё же остановят, изменят или удалят вручную, сработает новый встроенный алерт «Container changed outside Opfield» с пояснением, что это значит.</p>
<h2 id="-----1">Порядок правил в списках доступа</h2>
<p>Правила списка доступа проверяются сверху вниз, срабатывает первое совпадение. Раньше порядок нельзя было поменять, и разрешающее правило, добавленное после широкого запрета, не срабатывало никогда. Теперь правила можно переставлять в интерфейсе, через API и MCP, а правила, которые никогда не сработают, помечаются.</p>
<h2 id="-----">Порядок переключения баз данных и хранилищ</h2>
<p>Для управляемых Postgres, key-value хранилищ, ClickHouse и S3-хранилищ с доступностью теперь можно задать порядок переключения: какой сервер первым берёт работу на себя, если основной упал.</p>
<h2 id="--s3">Реестр в S3</h2>
<p>Внутренний реестр может хранить данные в S3, а не на диске хоста Opfield. При смене хранилища проверяется каждый образ, который реестр держит для рабочих нагрузок.</p>
<h2 id="pages---">Pages и страницы ошибок</h2>
<p>Проекты Pages отдают собственный 404.html для несуществующих путей, со статусом 404.</p>
<p>Все страницы, которые nginx генерирует сам (ошибки, отказ в доступе, недоступный upstream, сервер по умолчанию), теперь оформлены как страницы Opfield. Собственные страницы ошибок ваших приложений проходят без изменений.</p>
<h2 id="git-">Git-источники</h2>
<ul>
<li>Контейнер с Git-источником можно откатить на предыдущую сборку: на вкладке Source, через API или MCP.</li>
<li>Упавшая сборка показывает шаг Dockerfile, на котором она упала, и код выхода, а источник объясняет, почему сборка не удалась или ничего не развернула.</li>
<li>Переменные окружения, секреты и тома можно задать до первой сборки, а первая сборка запускается сразу.</li>
<li>Политика безопасности сборок может блокировать только уязвимости, для которых есть исправление, — для пакетов приложения или для всех пакетов.</li>
</ul>
<h2 id="----1">Ещё в этом релизе</h2>
<p>Маршруты за Cloudflare видят настоящий IP клиента в списках доступа, лимитах запросов и логах. Управляемый Postgres работает на собственных образах Opfield, а PostGIS и pgRouting ставятся по запросу на вкладке Extensions.</p>
<p>Что важно знать перед обновлением: архивы контейнеров теперь в формате Opfield (.ofca). Архивы, выгруженные предыдущими версиями, импортировать нельзя.</p>
<p>Self-hosted-инсталляции обновляются как обычно. Управляемые облачные инсталляции обновятся в своё окно обслуживания.</p>
]]></content:encoded>
      <category>release</category>
    </item>
    <item>
      <title>Opfield Cloud: управляемый Opfield с почтой и ИИ</title>
      <link>https://opfield.dev/ru/blog/opfield-cloud</link>
      <guid isPermaLink="true">https://opfield.dev/ru/blog/opfield-cloud</guid>
      <pubDate>Sat, 17 Oct 2026 17:59:00 GMT</pubDate>
      <description>Мы держим вашу инсталляцию Opfield за вас: ВМ в Финляндии, ежедневные бэкапы, обновления в ваше окно обслуживания, встроенная почта, свой домен и ИИ с бесплатным тарифом.</description>
      <content:encoded><![CDATA[<p>Opfield остаётся self-hosted на любом тарифе, и это не меняется. Но сама панель управления — это ещё одна вещь, которую нужно обслуживать: сервер, бэкапы, обновления, сертификат, почтовый провайдер для кодов входа. Opfield Cloud снимает эту часть с вас. Мы запускаем вашу инсталляцию Opfield на виртуальной машине, которую обслуживаем сами. Ваши серверы остаются вашими и подключаются к ней как узлы.</p>
<h2 id="--">Что вы получаете</h2>
<p>Управляемая инсталляция — это полноценный Opfield той же версии, что и self-hosted, по адресу <code>&lt;name&gt;.opfield.cloud</code>. Она покупается и управляется в аккаунт-портале вместе с платным лицензионным ключом (Personal, Business или Enterprise). С Community она недоступна.</p>
<ul>
<li><strong>Регион:</strong> Финляндия. Германия в планах.</li>
<li><strong>Вход через аккаунт Opfield.</strong> Владелец входит в инсталляцию тем же аккаунтом, что и в портал.</li>
<li><strong>Ежедневные бэкапы.</strong> Бэкап делается каждый день, его можно сделать и вручную, а восстановление запускается из портала. После удаления последний бэкап хранится ещё несколько дней, так что инсталляцию можно вернуть.</li>
<li><strong>Обновления в ваше окно обслуживания.</strong> Вы выбираете день и час (UTC). Opfield делает бэкап, обновляется и возвращается уже на новой версии. Можно обновиться и сразу.</li>
<li><strong>Узлы остаются вашими.</strong> Свои серверы вы подключаете одноразовыми токенами из портала. Рабочие нагрузки, базы и хранилища работают на них, а не на управляемой ВМ.</li>
</ul>
<h2 id="heading">Тарифы</h2>
<p>Цены указаны за месяц, сверх лицензионного ключа, и продлеваются вместе с ключом.</p>
<table>
<thead>
<tr>
<th></th>
<th>Standard</th>
<th>Extended</th>
</tr>
</thead>
<tbody>
<tr>
<td>Цена</td>
<td>$18 в месяц</td>
<td>$46 в месяц</td>
</tr>
<tr>
<td>vCPU (общие)</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>RAM</td>
<td>3 ГБ</td>
<td>8 ГБ</td>
</tr>
<tr>
<td>Диск</td>
<td>24 ГБ</td>
<td>48 ГБ</td>
</tr>
<tr>
<td>Хранится бэкапов</td>
<td>2</td>
<td>5</td>
</tr>
<tr>
<td>Хранятся логи</td>
<td>7 дней</td>
<td>30 дней</td>
</tr>
</tbody>
</table>
<p>Двенадцать месяцев стоят как одиннадцать. Перейти со Standard на Extended можно в любой момент, доплатив разницу за остаток периода; Opfield один раз перезапустится. Переход на меньший тариф происходит в конце оплаченного периода.</p>
<h2 id="-">Почта включена</h2>
<p>Opfield отправляет системные письма: коды входа, ссылки для установки и сброса пароля, приглашения. Self-hosted-инсталляции для этого нужен SMTP-провайдер. Управляемая инсталляция отправляет их сразу, с адреса <code>&lt;name&gt;@mail.opfield.cloud</code>, на обоих тарифах и без доплаты.</p>
<p>Лимитов с запасом хватает для системной почты, а репутация общего отправителя остаётся чистой:</p>
<ul>
<li>Standard: 500 писем в месяц, 50 в день, 25 в час.</li>
<li>Extended: 2000 в месяц, 200 в день, 50 в час.</li>
</ul>
<h2 id="--1">Свой домен</h2>
<p>Инсталляция может отвечать на вашем домене, например <code>ops.example.com</code>. Добавьте домен на странице инсталляции, создайте указанную там CNAME-запись, и Opfield получит для него сертификат. Адрес на <code>opfield.cloud</code> продолжит работать. Ключи доступа (passkeys) привязаны к адресу, поэтому после смены их нужно добавить заново — страница предупредит об этом заранее.</p>
<h2 id="--2">ИИ включён</h2>
<p>В Opfield есть встроенный ИИ-ассистент и MCP-сервер для ваших агентов. Обоим нужна модель. На управляемой инсталляции Opfield Cloud AI уже подключён:</p>
<ul>
<li><strong>Free</strong> — с каждой управляемой инсталляцией: использование моделей включено.</li>
<li><strong>S</strong> — $9 в месяц.</li>
<li><strong>M</strong> — $29 в месяц, вдвое больше использования, чем в S.</li>
</ul>
<p>Моделей две: Opfield Swift для быстрых повседневных задач и Opfield Heavy для длинных и сложных. Использование показывается в процентах для каждого окна, вместе со временем сброса. Когда окно исчерпано, ассистент об этом скажет и снова заработает после сброса. Всё остальное в Opfield продолжает работать.</p>
<h2 id="--3">Как начать</h2>
<p>В аккаунт-портале включите «Host it in our cloud» при покупке ключа или нажмите «Add managed cloud» на странице уже купленного ключа. После оплаты инсталляция настраивается автоматически, а когда она будет готова, придёт письмо. Тарифы и цены есть и на <a href="https://opfield.dev/ru/pricing">странице с ценами</a>.</p>
]]></content:encoded>
      <category>cloud</category>
      <category>ai</category>
    </item>
    <item>
      <title>Управление инфраструктурой с ИИ-агентами через MCP</title>
      <link>https://opfield.dev/ru/blog/ai-agents-mcp</link>
      <guid isPermaLink="true">https://opfield.dev/ru/blog/ai-agents-mcp</guid>
      <pubDate>Sat, 17 Oct 2026 17:58:00 GMT</pubDate>
      <description>Как ИИ-агенты работают с Opfield через MCP-сервер: OAuth с ограниченными правами, журнал аудита, защита от случайностей, инструменты Docker и пример обычного исправления.</description>
      <content:encoded><![CDATA[<p>У Opfield есть MCP-сервер рядом с REST API. Любой MCP-клиент — агент для программирования в редакторе или чат-приложение — может к нему подключиться и работать с теми же ресурсами, которые человек видит в интерфейсе: маршрутами, контейнерами, управляемыми базами данных, Pages, алертами и узлами. Ниже о том, как этот доступ остаётся безопасным и как выглядит типичная сессия.</p>
<h2 id="------">Те же правила, что и для человека</h2>
<p>Отдельной модели прав для агентов нет. MCP-клиент подключается к <code>https://&lt;your-opfield&gt;/api/mcp</code> и входит через OAuth от имени пользователя. На экране согласия пользователь выбирает, какие права получит клиент, и эти права никогда не превышают его собственные. Доступ, ограниченный папками, узлами или отдельными ресурсами, работает так же: агент с доступом к папке одного приложения видит только её. Агент может вызвать <code>get_my_access</code> и узнать, что ему выдано и где он может создавать ресурсы.</p>
<p>Агенты могут делать с ресурсами почти всё, что может человек. Несколько вещей намеренно остаются только в браузере: имперсонация, согласие OAuth, создание API-токенов и авторизаций, собственный вход и сессии пользователя. Выдать себе больше прав агент не может.</p>
<p>MCP-эндпоинт принимает только OAuth-токены, выпущенные для него; токены REST API там не работают. Кроме того, у пользователя должно быть право на MCP, так что администратор решает, кому вообще можно подключать агентов.</p>
<h2 id="----">Всё попадает в журнал аудита</h2>
<p>Каждое действие агента проходит те же проверки, что и клик в интерфейсе, и записывается в тот же журнал аудита — с пользователем и токеном, от которых оно пришло. Чтобы узнать, что агент изменил за ночь, достаточно открыть журнал аудита.</p>
<h2 id="--">Защита от случайностей</h2>
<p>Права определяют, что агенту можно. Но некоторые ошибки случаются и в рамках прав, поэтому в Opfield есть дополнительные предохранители:</p>
<ul>
<li><strong>Защита консоли.</strong> Агенты могут выполнять команды в консоли узла от root и чинить узел. Docker, containerd и Podman там скрыты, а команда с Docker отклоняется с указанием инструмента Opfield, который нужно использовать. Это защита от случайностей, а не граница безопасности: она не даёт агенту изменить управляемый контейнер в обход Opfield.</li>
<li><strong>Без SSH на узлы.</strong> Агенты не могут выполнять команды по SSH на хостах, которые являются узлами Opfield. Для этого есть консоль узла с защитой.</li>
<li><strong>Изменения в обход Opfield видны.</strong> Если управляемый контейнер всё же остановят, изменят или удалят вручную, сработает встроенный алерт «Container changed outside Opfield».</li>
<li><strong>Безопасные повторы.</strong> Операции создания принимают ключ идемпотентности, поэтому агент, повторивший запрос после таймаута, не создаст дубликат.</li>
</ul>
<h2 id="-docker--shell">Инструменты Docker вместо shell</h2>
<p>Большая часть работы агента с нагрузками идёт через отдельные инструменты, а не команды shell: список контейнеров на всех Docker-узлах, логи и метрики, перезапуск, обновление образа, настройка, деплойменты со слотами и откатом, Compose-проекты, тома, сети и Git-источники со сборками. Поскольку это операции Opfield, маршруты, Secure Links и доступность после изменения остаются согласованными, а каждый шаг попадает в аудит.</p>
<p>Перед изменениями агенты могут прочитать документацию и навыки Opfield прямо через MCP.</p>
<h2 id="---1">Пример: сервис падает</h2>
<p>Пользователь пишет агенту: «Billing API с утра отвечает 502. Разберись и почини». Типичная сессия:</p>
<ol>
<li><code>find_resource</code> находит маршрут и контейнер за ним; <code>get_route</code> показывает upstream.</li>
<li><code>get_docker_container</code> показывает, что контейнер постоянно перезапускается, а его Git-источник в 07:40 развернул новую сборку.</li>
<li><code>get_docker_container_logs</code> показывает, что процесс завершается при старте: не хватает новой обязательной переменной окружения.</li>
<li>Агент сообщает об этом и предлагает два варианта: откатиться на предыдущую сборку или добавить переменную.</li>
<li>Пользователь выбирает откат. Агент вызывает <code>manage_docker_source</code> с <code>rollback</code>, затем снова проверяет логи и маршрут: контейнер работает, маршрут отвечает 200. Откат виден в журнале аудита под именем пользователя.</li>
</ol>
<p>Никому не понадобился shell-доступ к серверу, и агент не вышел за пределы прав самого пользователя.</p>
<h2 id="-">Как начать</h2>
<p>Добавьте MCP-сервер в свой клиент, указав адрес вашего Opfield, войдите и выберите права. Начните с прав только на чтение, посмотрите в журнале аудита, что делает агент, и расширяйте доступ по мере появления уверенности. Если не хочется настраивать клиент, встроенный в Opfield ассистент использует те же инструменты и те же правила.</p>
]]></content:encoded>
      <category>ai</category>
      <category>mcp</category>
    </item>
  </channel>
</rss>
