DevOps для 1С на практике: как я развернул домашний сервер за 14 дней и 32 часа
От автора: Я — 1С-разработчик, а не системный администратор. С Docker раньше дела не имел — только слышал от коллег-сисадминов да читал статьи на InfoStart. Это мой первый опыт.
Но мне не хотелось «собирать на коленке, лишь бы работало». Хотелось сделать сразу нормально: без костылей и изоленты — с мониторингом, бэкапами, документацией, безопасностью.
И да, я хотел уложиться в 0 рублей бюджета.
Получилось ли? Честный рассказ — ниже. С граблями, таймингом и готовыми конфигами, которые можно скопировать.
📋 Содержание
- Введение
- Исходные данные: оборудование и ограничения
- Почему гибридная архитектура?
- Пошаговая настройка
- Мониторинг: Grafana + Prometheus + Blackbox
- А сколько это стоило?
- Проблемы и время на их решение
- Что ускорило бы процесс (инсайты)
- Итоговая статистика
- Время развёртывания
- Выводы и рекомендации
- Полезные ссылки
- Мобильная версия и дополнительные скриншоты
От автора: Я — 1С-разработчик, а не системный администратор. С Docker раньше дела не имел — только слышал от коллег-сисадминов да читал статьи на InfoStart. Это мой первый опыт.
Но мне не хотелось «собирать на коленке, лишь бы работало». Хотелось сделать сразу нормально: без костылей и изоленты — с мониторингом, бэкапами, документацией, безопасностью.
И да, я хотел уложиться в 0 рублей бюджета.
Получилось ли? Честный рассказ — ниже. С граблями, таймингом и готовыми конфигами, которые можно скопировать.
Введение
Меня зовут Владимир Бессонов, я 1С-разработчик. Как и многие коллеги, я хотел создать изолированную среду для тестирования конфигураций — максимально приближенную к продакшену.
Изначально план был амбициозным:
- 💻 6-7 виртуальных машин Hyper-V
- 🤖 Локальная LLM для AI-задач
- 🔐 MFA и VPN-шлюз
- 💻 Терминальный сервер для удалённой работы
- 🔄 Разделение на dev / test / prod контуры
Но суровая реальность внесла коррективы:
💻 Geekom A9 Max (Ryzen AI 9 HX 370, 32 ГБ RAM, 1 ТБ SSD)
🔴 Не потянет 7 одновременных ВМ с приемлемой производительностью
Пришлось искать обходное решение.
Исходные данные: оборудование и ограничения
Железо
| Компонент | Значение |
|---|---|
| Мини-ПК | Geekom A9 Max |
| Процессор | AMD Ryzen AI 9 HX 370 (12 ядер / 24 потока, до 5.1 ГГц) |
| ОЗУ | 32 ГБ DDR5 (планирую апгрейд до 64-128 ГБ) |
| SSD | 2 ТБ NVMe |
| ОС | Windows 11 Pro |
Софт
- Docker Desktop (последняя версия)
- Git
- PowerShell (встроен в Windows)
- Tailscale (для VPN)
- 1С:Предприятие (на хосте)
Почему гибридная архитектура?
Тогда я впервые серьёзно посмотрел на Docker.
До этого я только слышал о нём от коллег-сисадминов и читал статьи на InfoStart. Практического опыта — ноль.
Но идея зацепила:
- Контейнеры легче виртуальных машин
- Один
docker-compose.ymlвместо кучи ВМ - Переносимость: скопировал конфиг + volumes — и среда работает на другом ПК
Решение: гибридный подход:
| Где | Что | Почему |
|---|---|---|
| На хосте (Windows 11 Pro) | 1С:Предприятие, агент сервера, Обновлятор | Лицензия привязана к железу, проще отладка |
| В Docker | PostgreSQL, pgAdmin, мониторинг, VoceChat | Изоляция, переносимость, лёгкий бэкап |
| Через Tailscale | Безопасный удалённый доступ | Без проброса портов, шифрование WireGuard |
Ключевые преимущества такого подхода:
- Масштабируемость: добавить новый контейнер — одна команда
- Переносимость:
docker-compose.yml+ volumes = миграция на другой ПК за 30 минут - Бэкапы: архивируешь папку с конфигом + volumes — и у тебя полная копия среды
- Изоляция: СУБД в контейнере — не засоряет хост, легко пересоздать
🎯 Главный инсайт:
«Если завтра этот мини-ПК выйдет из строя — я смогу восстановить PostgreSQL с базами 1С и все сервисы на другом устройстве. При условии, что вовремя делал бэкапы, конечно.»
Почему Docker Desktop + WSL2, а не Hyper-V / Proxmox?
| Критерий | Docker Desktop | Hyper-V | Proxmox |
|---|---|---|---|
| Простота для Windows | 🟢 Проще | 🟡 Сложнее с сетью | 🔴 Требует отдельный сервер |
| Ресурсы | 🟢 Меньше накладных | 🔴 Больше расходов | 🔴 Нужна доп. машина |
| Интеграция с Windows | 🟢 Высокая | 🟡 Средняя | 🔴 Низкая |
| Portainer | 🟢 Работает из коробки | 🟡 Требует настройки | 🟢 Работает |
Вывод: для дома хватило Docker Desktop + WSL2.
Пошаговая настройка
Шаг 1: Установка Docker Desktop
- Скачал с официального сайта
- Установил с настройками по умолчанию
- Перезагрузил компьютер
- Запустил Docker Desktop
Время: 30 минут
Проблем: нет 🟢
Шаг 2: Выбор стратегии развёртывания
Дилемма:
- СУБД в Docker или на хосте?
- 1С в Docker или на хосте?
Решил:
- 🟢 PostgreSQL в Docker — изоляция, легко пересоздать
- 🟢 1С на хосте — лицензия developer.1c.ru привязана к железу
Почему:
- Для лицензии не важно, где СУБД
- Проще с отладкой и мониторингом на Windows
- Меньше изоляции для 1С, но для дома — не критично
Время: 1 час 15 минут
Проблем: нет 🟢
Шаг 3: PostgreSQL с русской локалью
🚨 Критичная проблема №1
Первая попытка создать базу 1С провалилась:
🔴 Ошибка: кластер PostgreSQL инициализирован с локалью en_US.UTF-8 🔴 1С refuses to create database
Причина: 1С требует ru_RU.UTF-8 для корректной работы. Без правильной локали базы не создаются ни через консоль администрирования, ни через ярлык, ни через Обновлятор!
Решение: пересобрать контейнер с правильной локалью в entrypoint.sh:
export LANG=ru_RU.UTF-8
export LC_COLLATE=ru_RU.UTF-8
export LC_CTYPE=ru_RU.UTF-8
Время потери: 45 минут
Инсайт: надо было сразу добавить локаль при первой сборке образа!
Шаг 4: Portainer и Docker API на Windows
🚨 Критичная проблема №2
Portainer не подключался к Docker:
🔴 Cannot connect to Docker socket 🔴 Permission denied
Причина: на Windows Docker socket (//./pipe/docker_engine) работает иначе, чем на Linux.
Решение: использовать TCP API вместо socket:
# В docker-compose.yml для Portainer:
command:
- --host=tcp://host.docker.internal:2375
- --tls=false
Время потери: 1 час 30 минут
Инсайт: можно было сэкономить час, если бы сразу изучил документацию Portainer для Windows!
Шаг 5: Tailscale VPN для безопасного доступа
Задача: открыть доступ к веб-панелям со смартфона без проброса портов.
Решение: Tailscale (WireGuard-шифрование, бесплатно для личного использования).
Настройка:
- Установил Tailscale на сервер и смартфон
- В
docker-compose.ymlуказал порты0.0.0.0:5050:80 - Подключился с телефона по IP
100.74.x.x:5050
Важно: порты 0.0.0.0 безопасны только с VPN!
Время: 40 минут
Проблем: нет 🟢
Шаг 6: 1С:Предприятие + PostgreSQL в Docker
Подключение:
Host: localhost
Port: 5432
Database: template1c
Username: postgres
Password: из .env
Создание базы:
CREATE DATABASE "DemoHRMCorpDemo_bot";
Время: 1 час 30 минут (включая отладку локали)
Проблем: 1 (русская локаль, решено выше)
Подключение через pgAdmin
1. Открой http://localhost:5050
2. Войди: admin@admin.com / пароль из .env
3. Правой кнопкой на Servers → Register → Server
4. Вкладка Connection:
- Host name/address:
postgres(имя сервиса в docker-compose) - Port:
5432 - Maintenance database:
template1c - Username:
postgres - Password: из .env
5. 🟢 Save password?
6. Сохрани
🟢 Сервер подключён! Разверни дерево:
Servers → PostgreSQL → Databases → DemoHRMCorpDemo_bot

📸 pgAdmin — подключение к PostgreSQL и база DemoHRMCorpDemo_bot
Шаг 7: Агент сервера 1С (клиент-серверный режим)
Тестирование:
- Установил компонент «Сервер 1С» на хост
- Проверил порты:
netstat -ano | findstr ":1540" - Запустил 2 сеанса одновременно — работают!
Вывод: агент сервера работает, многопользовательский режим готов.
Время: 1 час 20 минут
Проблем: 1 (консоль администрирования не запускалась → переустановил компонент)
Шаг 8: Обновлятор 1С для бэкапов
Почему не свои скрипты: есть готовое решение от Владимира Милькина (helpme1s.ru).
Настройка:
- Скачал Обновлятор
- Указал путь к
pgAdmin 4\runtime\pg_dump.exe - Настроил расписание через встроенный планировщик
Первый бэкап: 1009.92 МБ за 1 мин 18 сек 🟢
Важно: Обновлятор сам встраивается в Планировщик заданий Windows — не нужно писать PowerShell-скрипты!
Время: 1 час 45 минут
Проблем: 1 (Обновлятор не находил утилиты PostgreSQL → указал путь вручную)
Мониторинг: Grafana + Prometheus + Blackbox
Зачем: чтобы автоматически узнавать о сбоях, а не проверять вручную.
Архитектура

Компоненты
| Сервис | Назначение |
|---|---|
| Prometheus | Сбор и хранение метрик |
| cAdvisor | CPU/RAM контейнеров |
| postgres-exporter | Метрики PostgreSQL |
| Blackbox Exporter | HTTP-проверки доступности |
| Grafana | Дашборды + алерты |
| VoceChat | Уведомления в локальный чат |
🚨 Проблема №3: cAdvisor не видит контейнеры на Docker Desktop
🔴 Метрики контейнеров пустые 🔴 Docker Desktop + WSL2 limitation
Решение: использовать Blackbox Exporter для HTTP-проверок вместо метрик контейнеров.
Время потери: 45 минут
🚨 Проблема №4: pgAdmin и Grafana возвращают 401/302
🔴 Blackbox видит 401 вместо 200 🔴 Алерты срабатывают ложно
Решение:
- Grafana: проверять
/api/healthendpoint - pgAdmin: добавить коды 401/403 в
valid_status_codesblackbox.yml
Время потери: 1 час
🚨 Проблема №5: Уведомления приходят в JSON (не читаемо)
🔴 {"status":"firing","alerts":[...]}
Решение: в Grafana указать Content-Type: text/plain и шаблоны в Title/Message.
Время потери: 30 минут
Итог по мониторингу:
- 🟢 9 из 9 алертов работают
- 🟢 Уведомления читаемые, с форматированием
- 🟢 VoceChat получает алерты за 2-3 минуты
Время на мониторинг: 6 часов (03.04) + 6 часов 30 минут (04.04 финализация)
Алерты
Критические (🔴)
| Алерт | Условие | Описание |
|---|---|---|
| PostgreSQL is DOWN | pg_up == 0 |
PostgreSQL недоступен |
| Portainer Down | probe_success{instance="http://portainer:9000"} |
Portainer недоступен (HTTP проверка не прошла) |
| pgAdmin Down | probe_success{instance="http://pgadmin4:80"} |
pgAdmin недоступен (HTTP проверка не прошла) |
| Grafana is DOWN | probe_success{instance="http://grafana:3000/api/health"} |
Grafana недоступна (HTTP проверка не прошла) |
| Prometheus is DOWN | up{job="prometheus"} == 0 |
Prometheus недоступен |
| VoceChat Notifications | probe_success{instance="http://vocechat-notifications:3000"} |
VoceChat недоступен (HTTP проверка не прошла) |
| cAdvisor is DOWN | up{job="cadvisor"} == 0 |
cAdvisor недоступен |
Предупреждения (🟡)
| Алерт | Условие | Описание |
|---|---|---|
| High CPU Usage | CPU > 80% (5 min average) | Высокая загрузка CPU |
| High Memory Usage | RAM > 1 GB | Высокое потребление памяти |
Пример уведомления в VoceChat
🔴 Уведомление о срабатывании алерта (FIRING)

📸 VoceChat — уведомление FIRING
🟢 Уведомление о восстановлении (RESOLVED)
📸 VoceChat — уведомление RESOLVED
Важно: Уведомления приходят в обоих случаях — и при срабатывании, и при восстановлении. Это позволяет быстро реагировать на проблемы и знать, когда сервис снова работает.
А сколько это стоило?
Спойлер: 0 рублей. Вообще.
| Компонент | Лицензия | Стоимость |
|---|---|---|
| 1С:Предприятие | Лицензия разработчика (community) | 🟢 Бесплатно |
| PostgreSQL 1C Edition | Открытый образ от 1С | 🟢 Бесплатно |
| Docker Desktop | Personal use | 🟢 Бесплатно |
| Tailscale | Free tier (100 устройств, 3 пользователя) | 🟢 Бесплатно |
| Grafana + Prometheus | Open Source (Apache 2.0) | 🟢 Бесплатно |
| Blackbox Exporter | Open Source | 🟢 Бесплатно |
| VoceChat | Self-hosted, open source | 🟢 Бесплатно |
| Portainer CE | Community Edition | 🟢 Бесплатно |
| Обновлятор 1С | Базовая версия (для ручных бэкапов) | 🟢 Бесплатно |
| Обновлятор 1С PRO | Если захочешь авто-бэкапы | 950 руб. (как бизнес-ланч в кафе или поездка на такси) |
| Git + GitHub | Free tier | 🟢 Бесплатно |
| Windows 11 Pro | Уже установлена на мини-ПК | 🟢 Бесплатно для меня |
Итого: 0 руб. за инфраструктуру, близкую к продакшену.
🎯 Главный инсайт:
«Не нужно бюджетов и согласований, чтобы начать автоматизировать рутину. Достаточно желания, гайдов и бесплатных инструментов.»
Проблемы и время на их решение
| Проблема | Время потери | Решение |
|---|---|---|
| Portainer не подключается к Docker API | 1 ч 30 мин | TCP API на порту 2375 |
| Ошибка локали при создании базы (1С) | 45 мин | ru_RU.UTF-8 в entrypoint.sh |
| Ссылки в Markdown не работали (регистр) | 30 мин | docs → Docs в путях |
| Синтаксис Markdown-ссылок | 20 мин | Убрать лишние скобки |
| Обновлятор не находил утилиты PostgreSQL | 40 мин | Указать путь к pgAdmin runtime |
| cAdvisor не видит контейнеры | 45 мин | Использовать Blackbox |
| pgAdmin/Grafana 401/302 ошибки | 1 час | Health endpoints + custom blackbox.yml |
| Уведомления JSON вместо текста | 30 мин | Content-Type: text/plain + шаблоны Grafana |
| Prometheus relabel_configs синтаксис | 1 ч 30 мин | target_label вместо target_param |
| Сети Docker (monitoring vs 1c-infrastructure) | 45 мин | Добавить все сервисы в обе сети |
| Конфликт портов PostgreSQL | 30 мин | Остановить локальный PG |
| Алерты не сбрасываются | 30 мин | Перезапуск Prometheus |
| ИТОГО | ~8 часов | ~25% от общего времени |
Что ускорило бы процесс (инсайты)
| Совет | Экономия времени |
|---|---|
Сразу добавить ru_RU.UTF-8 в entrypoint.sh |
~45 минут |
| Portainer: сразу использовать API, а не Socket | ~1 час |
| Проверять синтаксис Markdown перед коммитом | ~20 минут |
Заранее проверить наличие pg_dump.exe |
~30 минут |
| Настроить VS Code как редактор для Git | ~10 минут |
| Изучить ограничения cAdvisor на Docker Desktop заранее | ~45 минут |
Сразу использовать health endpoints (Grafana /api/health) |
~1 час |
| Настроить шаблоны VoceChat с первого раза | ~30 минут |
Изучить синтаксис relabel_configs для Prometheus 3.x заранее |
~1 ч 30 мин |
| Потенциальная экономия | ~5 часов 50 минут (~18%) |
Итоговая статистика
| Показатель | Значение |
|---|---|
| Период работы | 22.03–04.04.2026 (14 дней) |
| Чистое время | ~32 часа |
| Средняя скорость | ~2.3 часа в день |
| Сервисов настроено | 10 |
| Алертов работает | 9 из 9 |
| Документов создано | 5 (README, guide, COMMANDS, TIMING, SUMMARY) |
| Время на проблемы | ~8 часов (~25%) |
| Потенциальная экономия | ~5 часов 50 минут (~18%) |
Результат: полностью работоспособная инфраструктура 1С + PostgreSQL + мониторинг + документация 🟢
Время развёртывания
Время развёртывания: ~30-40 минут (при наличии готовых конфигов и Docker-образов)
🟡 Требования:
- Docker Desktop уже установлен
- Есть доступ к интернету (для pull образов, ~2-3 ГБ)
- Порты 5432, 5050, 9000, 3002 свободны
📦 Что входит в 30 минут:
- Клонирование репозитория
- Настройка .env (пароли)
- Запуск
docker-compose up -d - Ожидание health checks
- Базовая проверка доступности сервисов
🔴 Не входит:
- Установка Docker Desktop (~30 мин)
- Установка 1С:Предприятие (~1 час)
- Чтение документации (зависит от опыта)
💡 Примечание: Первое развёртывание займёт ~50-60 минут (включая скачивание Docker-образов). Повторное развёртывание при наличии локальных образов — ~15-20 минут.
Выводы и рекомендации
- Docker Desktop + WSL2 — оптимальный выбор для домашнего сервера на Windows
- Tailscale — безопасный удалённый доступ без проброса портов
- Обновлятор 1С — готовое решение для бэкапов, не нужно писать скрипты
- Русская локаль в кластере PostgreSQL — критична для работы 1С (настраивать в
entrypoint.shпри сборке образа!) - Мониторинг с первого дня — экономит время на диагностику в будущем
- Blackbox Exporter — надёжнее cAdvisor для HTTP-проверок на Docker Desktop
- Документация — экономит время в будущем (уже окупилась!)
- Регулярные коммиты — помогают отслеживать прогресс и откатываться
- ~25% времени уходит на отладку — это нормально для первого развёртывания!
Полезные ссылки
Официальная документация
Инструменты
Ресурсы автора
- InfoStart: Профиль — статьи и материалы по 1С
- ВКонтакте: Сообщество "Автоматизация бизнес-процессов"
- Rutube плейлисты:
GitHub
- 1c-home-server: Исходный код проекта
📸 Grafana Dashboard — все сервисы UP

📸 Portainer — список контейнеров (все 10 сервисов Running)

📸 Обновлятор 1С — процесс бэкапа

📸 Tailscale VPN на мобильном устройстве — статус подключения
📸 Grafana на мобильном устройстве — дашборд в мобильном браузере
📸 VoceChat на мобильном устройстве — уведомления в мобильном приложении
Об авторе
Владимир Бессонов
🔗 GitHub
📄 Лицензия: MIT
Последнее обновление проекта: 4 апреля 2026
Версия проекта: 2.4 (с мониторингом)
Вступайте в нашу телеграмм-группу Инфостарт

