Настройка 1С окружения в Windows WSL (Docker, Linux)

21.07.25

База данных - Администрирование СУБД

В современных Windows 10 и 11 можно использовать WSL (Windows Subsystem for Linux) для запуска Linux окружения. Возникает соблазнительная мысль: может, PostgreSQL и сервер 1С запустить в WSL. Или даже хуже: в Docker на WSL. Знал бы, что будет сложно - даже не начинал :) Сложность кроется в том, что WSL это не полноценные виртуалки, а легковестные контейнеры Hyper-V с особенностями сети и GUI. Из плюсов, наверно, только размер и скорость запуска.

Запуск Postgres от PostgresPro в WSL Docker

Ванильный Postgres запускается в Docker без проблем. Для 1С же нужна сборка от 1С или от PostgresPro. Мне нравится вариант от PostgresPro, но с ходу в докере его не запустить.

Быстро гуглится решение от akocur. Думаю, что в обычном linux (или виртуалке) оно запустилось бы, но в варианте Docker на WSL не заработало. Нетривиально было понять, что первоначальный запуск инициализации от PostgresPro (с тюнингом конфига PostgreSQL) не находит утилиту free для определения объема RAM. Логи сборки образа это не показывают. Благо ChatGPT подсказывает, как в таком варианте запуска инциализации БД можно увидеть детали:

RUN /opt/pgpro/1c-17/bin/pg-setup initdb || (cat /var/lib/pgpro/1c-17/initdb.data.log && false):
[ 9/12] RUN /opt/pgpro/1c-17/bin/pg-setup initdb || (cat /var/lib/pgpro/1c-17/initdb.data.log && false):
0.396 failed, see /var/lib/pgpro/1c-17/initdb.data.log
0.397 Файлы, относящиеся к этой СУБД, будут принадлежать пользователю "postgres".
0.397 От его имени также будет запускаться процесс сервера.
0.397
0.397 Кластер баз данных будет инициализирован с локалью "ru_RU.UTF-8".
0.397 Кодировка БД по умолчанию, выбранная в соответствии с настройками: "UTF8".
0.397 Выбрана конфигурация текстового поиска по умолчанию "russian".
0.397
0.397 Контроль целостности страниц данных отключён.
0.397
0.397 исправление прав для существующего каталога /var/lib/pgpro/1c-17/data... ок
0.397 создание подкаталогов... ок
0.397 выбирается реализация динамической разделяемой памяти... posix
0.397 выбирается значение "max_connections" по умолчанию... 100
0.397 выбирается значение "shared_buffers" по умолчанию... 128MB
0.397 выбирается часовой пояс по умолчанию... Etc/UTC
0.397 создание конфигурационных файлов... ок
0.397 выполняется автоматическая настройка sh: 1: free: not found
0.397 pgpro_tune: failed to get size of RAM
0.397 pgpro_tune: failed to get size of RAM
0.397 pgpro_tune: could not close pipe to external command LC_MESSAGES=C free -m: command not found
0.397 ок
0.397 выполняется подготовительный скрипт... 2025-07-18 08:29:16.382 UTC [48] СООБЩЕНИЕ:  0 8kB вне диапазона, допустимого для параметра "effective_cache_size" (1 8kB .. 2147483647 8kB)
0.397 2025-07-18 08:29:16.382 UTC [48] ВАЖНО:  файл конфигурации "/var/lib/pgpro/1c-17/data/postgresql.conf" содержит ошибки
0.397 дочерний процесс завершился с кодом возврата 1
0.397 initdb: удаление содержимого каталога данных "/var/lib/pgpro/1c-17/data"

Добавление установки пакета procps решает проблему:

RUN apt-get update && apt-get install -y \
    wget \
    gnupg2 \
    ca-certificates \
    locales \
    procps \
    && rm -rf /var/lib/apt/lists/*

После этого из Windows можем подключиться к PostgreSQL c дефолтными параметрами:

host: localhost
port: 5432
user: postgres
password: password

С PostgreSQL мы уже можем работать через localhost, например через DBeaver. Но для 1С из WSL нам понадобится внутренний IP адрес хоста Hyper-V.

 

Установка 1C в WSL Ubuntu 22.04

 

При первой установка WSL в новенькой Windows 11, автоматически устанавливается Ubuntu 22.04. Но хотелось отдельную машинку для 1С (на самом деле помним, что контейнер) , чтобы эксперименты проводить в другой. Устанавливаем и запускаем еще одну Ubuntu в WSL:

cd D:\
> mkdir WSL\Ubuntu-1C
> cd WSL\Ubuntu-1C
> curl -L -o ubuntu-jammy.rootfs.tar.gz https://cloud-images.ubuntu.com/wsl/releases/22.04/current/ubuntu-jammy-wsl-amd64-wsl.rootfs.tar.gz
> wsl --import Ubuntu-1C D:\WSL\Ubuntu-1C ubuntu-jammy.rootfs.tar.gz --version 2
> wsl -d Ubuntu-1C

В этот момент удивляет размер и скорость: изначальный образ скачивается 223Мб, после импорта 883Мб (с мгновенным стартом).

По умолчанию вход будет под рутом, поэтому нужно будет создать нового пользователя:

adduser myuser
usermod -aG sudo myuser

Чтобы запускать WSL под новым пользователем, нужно изменить файл /etc/wsl.conf:

[user]
default=myuser

После этого перезапустите WSL:

wsl --terminate Ubuntu-1C
wsl -d Ubuntu-1C

Копируем дистрибутив 1С в WSL, распаковываем, запускам установку и ничего не происходит. Пробую установить плеер vlc, чтобы проверить - GUI приложения вообще запускаются. Установка vlc поставит кучу зависимостей, после чего начнет запускаться GUI установщик 1С. Установка ./setup-full-8.3.27.1606-x86_64.run завершается без ошибок.

Тут надо пояснить про GUI. Как я понял, раньше GUI работал через X-сервер (например vcxsrv), который надо было устанавливать в Windows, затем в контейнере задавать переменную окружения DISPLAY. А в новом WSL2 это прокачали до хитрого RDP на базе wsgl.

Радостно запускаем 1С в Windows, добавляем базу (с созданием в БД), указываем наш PostgreSQL на localhost. База создается без ошибок, но 1С ожидаемо просит активации лицензии. Это логично, ведь комьюнити лицензия до этого у меня была активирована именно в Windows. Ввожу данные от developer.1c.ru, активация выполняется успешно, но при перезапуске все повторяется.

Или это особая контейнерность (особенности разделение файловой системы и сети) или просто моего понимания не хватило. Но 1C-конфигуратор в windows с открытием серверной базы в linux WSL активированную лицензию размещал в C:\ProgramData\1C\licenses (причем с привязкой к характеристикам хостовой машины, а не linux сервера 1С). Т.е. скопировать файл лицензии в /var/1C/licenses не помогало (там как минимум другой идентификатор ОС). Опции активации 1С "на сервере" не было, как в обычной (не комьюнити) лицензии.

Несложно догадаться, что надо просто запустить клиент 1С прям в linux. Но... это не работало с ошибкой:

/opt/1cv8/common/1cestart
Segmentation fault (core dumped)

Много часов диалогов с ChatGPT с безуспешными попытками запустить через X-сервер привели к рекомендации запустить 1С со стректрейсом:

strace ./1cestart 2>&1 | tail -n 10

Segmentation fault
fserg1c@fserg1c:/opt/1cv8/common$ strace ./1cestart 2>&1 | tail -n 100
access("/home/fserg1c", F_OK)           = 0
access("/home/fserg1c/.cache", F_OK)    = 0
access("/home/fserg1c/.cache/AMD", F_OK) = 0
access("/home/fserg1c/.cache/AMD/DxcCache", F_OK) = 0
access("/home/fserg1c/.cache/AMD/DxcCache/", F_OK) = 0
access("/home/fserg1c/.cache/AMD/DxcCache//4c096bccaebe66d.df0bca61c5d809c4.f5cd4141.87672893.0.parc", F_OK) = 0
openat(AT_FDCWD, "/home/fserg1c/.cache/AMD/DxcCache//4c096bccaebe66d.df0bca61c5d809c4.f5cd4141.87672893.0.parc", O_RDWR) = 6
flock(6, LOCK_EX|LOCK_NB)               = 0
fadvise64(6, 0, 0, POSIX_FADV_WILLNEED) = 0
fstat(6, {st_mode=S_IFREG|0700, st_size=92, ...}) = 0
lseek(6, 0, SEEK_SET)                   = 0
read(6, "#\330\372\347\17_G\276\213\321H\365\330\360\264\247\2\0\0\0\0\0\0\08\0\0\0\0\0\0\0"..., 56) = 56
mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x747960900000
mmap(0x747960900000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x747960900000
fstat(6, {st_mode=S_IFREG|0700, st_size=92, ...}) = 0
mmap(0x747960901000, 2093056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x747960901000
fstat(6, {st_mode=S_IFREG|0700, st_size=92, ...}) = 0
lseek(6, 0, SEEK_SET)                   = 0
read(6, "#\330\372\347\17_G\276\213\321H\365\330\360\264\247\2\0\0\0\0\0\0\08\0\0\0\0\0\0\0"..., 92) = 92
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=1535, ...}, 0) = 0
brk(0x1dd2c000)                         = 0x1dd2c000
openat(AT_FDCWD, "/home/fserg1c/.cache/AMD/DxcCache//4c096bccaebe66d.df0bca61c5d809c4.f5cd4141.87672893.1.parc", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/fserg1c/.cache/AMD/DxcCache//4c096bccaebe66d.df0bca61c5d809c4.f5cd4141.87672893.2.parc", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/fserg1c/.cache/AMD/DxcCache//4c096bccaebe66d.df0bca61c5d809c4.f5cd4141.87672893.3.parc", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/fserg1c/.cache/AMD/DxcCache//4c096bccaebe66d.df0bca61c5d809c4.f5cd4141.87672893.4.parc", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/fserg1c/.cache/AMD/DxcCache//4c096bccaebe66d.df0bca61c5d809c4.f5cd4141.87672893.5.parc", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/fserg1c/.cache/AMD/DxcCache//4c096bccaebe66d.df0bca61c5d809c4.f5cd4141.87672893.6.parc", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/fserg1c/.cache/AMD/DxcCache//4c096bccaebe66d.df0bca61c5d809c4.f5cd4141.87672893.7.parc", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/fserg1c/.cache/AMD/DxcCache//4c096bccaebe66d.df0bca61c5d809c4.f5cd4141.87672893.8.parc", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/fserg1c/.cache/AMD/DxcCache//4c096bccaebe66d.df0bca61c5d809c4.f5cd4141.87672893.9.parc", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/home/fserg1c/.cache/AMD/DxcCache/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
openat(AT_FDCWD, "/home/fserg1c/.cache/AMD/DxcCache/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 7
newfstatat(7, "", {st_mode=S_IFDIR|0755, st_size=4096, ...}, AT_EMPTY_PATH) = 0
getdents64(7, 0x1d5e4030 /* 14 entries */, 32768) = 1008
getdents64(7, 0x1d5e4030 /* 0 entries */, 32768) = 0
close(7)                                = 0
openat(AT_FDCWD, "/home/fserg1c/.cache/AMD/DxcCache/", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 7

Ответ ChatGPT: Проблемы с драйверами AMD. Если вы используете проприетарный драйвер AMD (или даже Mesa с Gallium/RADV), 1С может падать из-за OpenGL-акселерации. У меня как раз homelab на GMKtec M7 с AMD Radeon 680M.

Решение: Запустите с отключением OpenGL:

LIBGL_ALWAYS_SOFTWARE=1 ./1cestart

После этого 1С запускается, активируется. Только после активации надо лицензию из папки пользователя перемесить в общую папку, иначе сервер ее не видит (это обсуждалось ранее на инфостарт):

sudo mv /home/fserg1c/.1cv8/1C/1cv8/conf/20250718190129.lic /var/1C/licenses/
sudo chown -R usr1cv8:grp1cv8 /var/1C/licenses
sudo chmod -R 755 /var/1C/licenses

Теперь сервер 1С запускается без проблемы с лицензией.

systemd

Забыл добавить, что по-умолчанию в Ubuntu WSL выключен systemd. Чтобы службой сервера 1С управлять привычным образом, нужно его включить:

nano /etc/wsl.conf

[boot]
systemd=true 

// перезаускаем WSL
wsl.exe --shutdown 

Подробнее на офсайте: https://learn.microsoft.com/en-us/windows/wsl/systemd

Нюансы сети

 

Не понятно как первоначально база создалась с localhost'ом. Создание новых баз и работа с ними получалась дальше только с явным указнием IP-адресов хостовой машины (Windows) и адресов контейнера Ubuntu-1C.

Внутренний адрес Windows для сете Hyper-V можно узнаем командой:

PS C:\Users\fserg> ipconfig
...
Адаптер Ethernet vEthernet (WSL (Hyper-V firewall)):

   DNS-суффикс подключения . . . . . :
   IPv4-адрес. . . . . . . . . . . . : 172.25.48.1
   Маска подсети . . . . . . . . . . : 255.255.240.0

Внутренний адрес Ubuntu-1С узнаем командой:

PS C:\Users\fserg> wsl hostname -I
172.25.63.95

В консоли администрирования 1С адрес кластера серверов соответственно указываем: 172.25.63.95

А при добавлении новой базы, адрес сервера баз данных указываем: 172.25.48.1

Итог

 

В итоге, все заработало и заработало быстро. Пока непонятно, какие дальше появятся проблемы (например, смена IP-адреса при перезапуске WSL или Windows).

Возможно, оно того не стоило и проще и быстрее было поднять полноценные виртуалки в Hyper-V или VirtualBox. Но осознание того, что современные LLM'ки дают 1Снику возможность заглянуть довольно глубоко - бесценно!

P.S. linux инфра понадобилась, чтобы тестировать внешние компоненты на rust со сборкой под linux/windows, с возможностью сразу проверить работу компонент и там и там.

Вступайте в нашу телеграмм-группу Инфостарт

windows sql linux docker postgresql hyper-v amd

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Сервера Системный администратор 1С 8.5 1С:Управление торговлей 11 Россия Бесплатно (free)

Когда запускается новейший 16-ядерный флагман AMD Ryzen 9 9950X (микроархитектура Zen 5 с паспортным бустом до 5.7 ГГц), скоростные накопители NVMe PCIe 5.0 x4 и быстрый комплект DDR5, подсознательно ждешь феноменальных результатов «из коробки». Мы развернули монолитный вычислительный комплекс «All-in-One» (сервер приложений «1С:Предприятие 8.5.1» + СУБД Microsoft SQL Server 2022 Enterprise на Windows Server 2025) внутри гипервизора Proxmox VE 9.2. Запускаем однопоточный синтетический тест Гилёва (TPC-1C) и видим на экране холодный душ: 35.46 балла. Ниже — детальная хроника инженерного расследования, в ходе которого мы шаг за шагом сняли скрытые инфраструктурные барьеры на каждом слое системы (BIOS, гипервизор KVM, ядро Windows, СУБД, платформа 1С) и разогнали сервер с 35.46 до 79.37 баллов (+123.8% чистой скорости проведения документов), сделав виртуальную машину абсолютным лидером среди KVM-систем в глобальном датасете 1С 8.5.1.

15.10.2026    2211    YA_93013054    18    

20

Администрирование СУБД HighLoad оптимизация Разработчик 1С:Предприятие 8 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

Большинство материалов о компрессии в PostgreSQL отвечают на вопрос «во сколько раз удалось уменьшить базу». Мы предлагаем посмотреть на проблему с другой стороны — какой ценой достигается эта экономия? В статье разбираем архитектурные компромиссы различных подходов к компрессии страниц, объясняем, почему при разработке CSM в Tantor Postgres отказались от погони за максимальным коэффициентом сжатия, и показываем результаты нагрузочных испытаний на реальных базах 1С.

01.10.2026    1437    Tantor    6    

17

HighLoad оптимизация Администрирование СУБД Разработчик 1С:Предприятие 8 1С:ERP Управление предприятием 2 Бесплатно (free)

В рамках 18 релиза СУБД Tantor Postgres мы рассказывали об оптимизациях, которые помогают планировщику сделать более точный выбор между Nested Loop и Hash Join. В следующем релизе у нас планируются оптимизации, которые позволят ускорить выполнение как Nested Loop, так и Hash Join. Сегодня мы расскажем об одном из таких методов - фильтре Блума.

31.08.2026    6110    Tantor    3    

18

Администрирование СУБД Системный администратор Разработчик Бесплатно (free)

5,5 тысячи пользователей в единой базе 1С, розница в режиме 24/7 и SLA 99,98% – в таких условиях любая авария быстро превращается в очереди на кассах, потерю денег и давление со стороны бизнеса. Показываем, как выстроить процесс аварийно-восстановительных работ: от первых алертов и базового скрининга системы до подключения команды, проверки гипотез и дебрифа после инцидента. Разбираем, как метрики, дашборды, техжурнал, Zabbix, Prometheus, Grafana, Telegram-боты и скрипты помогают не гадать, а быстро находить причину проблемы. На реальных авариях объясняем, почему «быстро» не должно означать «рискованно», как работа над ошибками снижает панику и почему каждая авария может сделать систему надежнее.

11.08.2026    3397    jul.dolganova    9    

24

Администрирование СУБД 1С 8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

База 1С:ERP размером 646 Гб, полное маскирование за 5 часов - без создания промежуточной незащищенной копии. Разбираем бесплатный pg_anon на сквозном примере с реального продуктива.

27.07.2026    4510    Tantor    16    

17

HighLoad оптимизация Администрирование СУБД Разработчик Россия Бесплатно (free)

Если вы работаете с 1С на PostgreSQL и жалуетесь на тормоза — скорее всего, дело в join predicate pushdown, которого в стандартном PostgreSQL нет. В MS SQL Server этот механизм работает «из коробки», и при миграции именно запросы к виртуальным таблицам 1С бьют по производительности сильнее всего. В этой статье — реальный кейс от Postgres Professional с разбором плана выполнения, ручным экспериментом и доработкой планировщика СУБД, которая ускорила запросы от 22 до 54 000 раз.

16.06.2026    11058    postgres_professional    15    

15
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. bayselonarrend 3214 21.07.25 16:09 Сейчас в теме
А как же firstBitMarksistskaya/onec-docker?)

Я у себя тоже поднимал pg для тестового контура - использовал rsyuzyov/docker-postgresql-pro-1c. Очень старый, но становится зато без проблем

А еще компоненты удобно отлаживать на OneScript
VKuser251353642; FSerg; +2 – Ответить
2. FSerg 383 21.07.25 16:16 Сейчас в теме
(1) Спасибо за ссылку!
Не понятно - как я не смог найти 🤷
VKuser251353642; bayselonarrend; +2 – Ответить
Для отправки сообщения требуется регистрация/авторизация