MinIO, SSL и сайт для внешних участников у сервера взаимодействия 1С
У заказчика на Windows Server уже работал сервер взаимодействия 1С, не хватало файлового хранилища: готовые сборки MinIO под Windows больше не раздают. Я собрал MinIO из исходников, подключил его, затем выпустил сертификат, включил защищённое соединение, поднял сайт для внешних участников и push. Сдано 21 октября, заказчик подтвердил работу.
Коротко (TL;DR)
- У транспортной компании на Windows Server уже работали сервер взаимодействия 1С и Postgres. Для файлов в обсуждениях не хватало S3-хранилища, а готовые сборки MinIO под Windows больше не раздают.
- Я собрал minio.exe из исходников стабильного релиза, поставил его службой и подключил к серверу взаимодействия. В тот же день заказчик проверил: файлы уходят и приходят, звонки проходят.
- Вторым заходом выпустил сертификат с автопродлением, перевёл MinIO на HTTPS, поднял сайт для внешних участников и включил защищённое соединение WSS. Push заработал в тот же вечер.
- Сдано 21 октября, заказчик подтвердил работу. Всё стоит на его виртуальной машине, работал я по RDP.
Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.
Обсудить автоматизациюЗаказчик пришёл ночью из моей статьи про MinIO как своё S3-хранилище. Сам он не системный администратор, но инструкции по установке сервера взаимодействия нашёл и упёрся в один пункт: MinIO нужен, а скачать его для Windows уже негде.
Задача
Сервер взаимодействия 1С это то, на чём работают обсуждения, файлы и звонки внутри 1С. Файлы он хранит во внешнем S3-хранилище. На виртуальной машине заказчика под Windows Server 2016 сервер взаимодействия и Postgres уже стояли и работали. Нужно было поставить MinIO, создать бакет, подключить хранилище и убедиться, что вложения ходят.
После первой проверки задача выросла. Внешним участникам, в том числе на iPhone без мобильного приложения 1С, нужен сайт, который открывается по приглашению. Сайту нужен защищённый WebSocket, а ему нужен сертификат на домен. В конце добавились push-уведомления.
Что я сделал
Первым делом собрал MinIO. Официальные готовые exe под Windows больше не публикуют, поэтому я заранее собрал minio.exe и клиент mc.exe из исходников стабильного релиза на Go под Windows. Служба поставлена через WinSW, всё лежит в одной папке, ключи доступа в отдельном файле. Порт хранилища открыт, веб-консоль MinIO слушает только локальный адрес. Хранилище я подключил запросом к API администрирования сервера взаимодействия, ответ пришёл с состоянием ACTIVE. Заказчик проверил в тот же день: файлы в обсуждениях уходят и приходят, звонки проходят.
Дальше сертификат. Порт 80 на сервере занимало другое приложение, которое заказчику было нужно, поэтому обычная проверка домена через HTTP не подходила. Я выпустил сертификат Let's Encrypt через win-acme с проверкой TLS-ALPN на 443 порту, он был свободен. Продление идёт по задаче планировщика, после продления скрипт сам пересобирает хранилище ключей и раскладывает сертификат по MinIO, сайту и серверу взаимодействия. Что такое сертификат и зачем он, простыми словами объясняю в статье про SSL и HTTPS.
Потом MinIO перевёл на HTTPS и сменил адрес хранилища в сервере взаимодействия, перед этим сохранил копию прежних настроек. В IIS поднял сайт для внешних участников на отдельном HTTPS-порту, так как 80 занят. Сайт ставится на экран телефона как приложение, поэтому отдельная PWA, которую я тоже предлагал, заказчику не понадобилась.
Последним шагом включил WSS на сервере взаимодействия с тем же сертификатом и прописал публичный адрес сайта. Заказчик перерегистрировал на новый защищённый адрес копию базы и проверил работу. Вечером того же дня я настроил push.
Работал поэтапно. На каждый этап отдельный скрипт PowerShell: сертификат, HTTPS для MinIO, сайт, WSS. Каждый делает резервную копию настроек и умеет откатиться. Скрипты я переносил на сервер по RDP и запускал одной строкой.
Что было сложно
Домен. У основного домена заказчика было две A-записи: одна на сервер, вторая на старый конструктор сайтов у регистратора. Сертификат на такой домен выпускать нельзя, проверка уйдёт не туда. Попросил администратора заказчика завести отдельный поддомен на сервер и ждал, пока он это сделает.
Порт, который казался WSS. На сервере уже что-то слушало 8443 и отвечало 401, и сначала это выглядело как готовое защищённое соединение. Проверка показала обычный HTTP от чужого приложения. Значит, WSS пришлось делать с нуля.
Ложный откат. Скрипт этапа WSS после включения проверял здоровье сервера взаимодействия, а эта проверка по HTTPS снаружи и по домену отвечает 400. Скрипт решил, что всё сломалось, и откатил настройки. Вдобавок служба сервера взаимодействия осталась остановленной, её пришлось запустить вручную. Ещё одна мелочь: в утилите управления параметр WSS принимает true или false, хотя по логике просится ws или wss. Признаком живого WSS в итоге стал сертификат на нужное имя на порту клиентов и ответ 401 на запрос открытия веб-сокета.
Своя ошибка. Сначала я решил, что админка сервера взаимодействия доступна снаружи, и собирался советовать закрыть порт. Проверил: админка слушает только локальный адрес, а снаружи работает веб-сокет для клиентов. Закрывать было нечего, наружу открыто только то, что нужно для работы.
Push. Регистрацию в сервисе уведомлений 1С заказчик сделал сам, а параметры надо задать рабочему экземпляру сервера взаимодействия. На машине остался второй, лишний экземпляр от первой установки, и с ним легко промахнуться.
Что получилось
| Что | Состояние |
|---|---|
| MinIO | служба Windows, HTTPS, хранилище в сервере взаимодействия активно |
| Файлы и звонки | работают, проверил заказчик 19.10.2026 |
| Сертификат | Let's Encrypt, автопродление задачей планировщика |
| WSS | включён 21.10.2026, копия базы перерегистрирована и проверена заказчиком |
| Сайт для внешних участников | открывается по приглашению, сообщения и вложения работают, подтвердил заказчик 21.10.2026 |
| Push | работает с вечера 21.10.2026 |
Заказчик признал все договорённости выполненными, проект закрыт 21 октября. Скрипт, который раскладывает продлённый сертификат по службам, лежит на его сервере.
Что дальше
После сдачи я передал заказчику список рекомендаций по безопасности сервера. Для записи звонков и большей нагрузки нужен отдельный медиасервер на Linux, я оценил его отдельной задачей, сейчас он заказчику не нужен. Заказчик вернулся с новыми задачами по своему парку машин, это уже другой проект. Если вы выбираете, где держать 1С, есть статья про 1С в облаке и на своём сервере.
Частые вопросы
Где взять MinIO для Windows, если сборок нет?
Собрать из исходников стабильного релиза. Go умеет собирать под Windows с любой машины, на выходе один exe. Службой его удобно ставить через WinSW. Веб-консоль для работы сервера взаимодействия не нужна, её можно оставить только на локальном адресе.
Можно ли выпустить сертификат, если порт 80 занят?
Можно. win-acme умеет проверять домен через TLS-ALPN на 443 порту. Нужен свободный 443 и домен, который смотрит только на этот сервер.
Обязательно ли iPhone-пользователям ставить приложение 1С?
Нет. Внешние участники заходят на сайт по приглашению, сайт можно добавить на экран телефона. Внутренним сотрудникам приглашения выдаёт обработка в базе.
Коротко о главном
MinIO для сервера взаимодействия ставится за день, если собрать его заранее. Больше времени ушло на окружение: занятый порт 80, домен с лишней записью, проверка здоровья, которая врёт по HTTPS, и лишний экземпляр сервера от первой установки. Поэтапные скрипты с копией настроек позволили возвращаться к рабочему состоянию на каждом шаге. Похожие задачи по хранению файлов я разбирал в статье про облачное хранилище для бизнеса.
Если вам нужно поставить или довести до рабочего состояния сервер взаимодействия, хранилище или сертификаты на своём сервере, я возьму это под ключ. Напишите в Telegram, MAX или VK.
Что я делаю для бизнеса
Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.
- Боты в Telegram, MAX, VK
- Автоматизация процессов и CRM
- Аналитика и дашборды
- Сайты и лендинги под ключ
Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.


