Настройка 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

См. также

Администрирование веб-серверов Сервера Нейросети Программист Платные (руб)

Сервер поиска по метаданным и поиска по коду, Сервер экспорта и поиска по документации, Сервер синтаксической проверки кода

6000 руб.

17.06.2025    10373    103    7    

46

Сервера Системный администратор Программист 1С v8.3 Абонемент ($m)

Обработка, скрипт и методология, позволяющие установить и продлевать автоматически комьюнити-лицензию 1С для разработчиков на сервер 1С без графического интерфейса.

5 стартмани

31.07.2025    1797    0    capitan    7    

15

Администрирование веб-серверов Linux Системный администратор Программист 1С v8.3 Бесплатно (free)

Проблема: При переходе с Windows на Linux многие сталкиваются с затруднениями при настройке аутентификации ОС в веб-клиенте 1С через Apache 2.4 (Debian). Решение: Команда Magnit Tech (Центр экспертизы 1С и Сопровождение 1C) разработала готовую инструкцию по настройке веб-клиента 1С на Debian 12 с поддержкой как Windows, так и Linux-серверов. Экономьте время — внедряйте проверенное!

25.07.2025    1088    biryukmikh    7    

22

HighLoad оптимизация Администрирование СУБД Системный администратор Программист 1С v8.3 Бесплатно (free)

Сегодня мы проведем обзор изменений, касающихся работы с высоконагруженными системами 1С. Новый релиз предлагает не просто несколько точечных исправлений, а целый арсенал специализированных функций, призванных существенно ускорить выполнение типичных для 1С операций, снизить нагрузку на инфраструктуру и упростить администрирование. Спектр улучшений распространился на многие ключевые узлы производительности от оптимизации работы с временными таблицами и сложными запросами RLS (row-level security) до ускорения критически важных процессов наподобие «Закрытия месяца». Обо всем этом и пойдет речь в статье.

22.07.2025    2845    Tantor    9    

10

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

Расскажем об опыте внедрения технологии CoW (Copy-On-Write). Вы узнаете, как CoW помогает экономить терабайты дискового пространства с минимальными накладными расходами, а также как интегрировать ее в рабочие процессы разработки и тестирования. Автор кратко объяснит суть CoW, поделится выбором файловой системы (xfs или btrfs?), расскажет, как его команда управляет подтомами прямо из 1С и почему они выбрали MS SQL для Linux. Отдельно он разберет влияние CoW на CI-процессы: как это помогает анализировать длительные регрессы и ускоряет развертывание баз.

22.07.2025    1199    Golovanoff    7    

15

Администрирование СУБД Системный администратор Программист Бесплатно (free)

В статье подробно разберем, как в компании организован процесс миграции на PostgreSQL, начиная с подготовки команды, предварительного анализа 1С-систем (с использованием специальных чек-листов и инструментов для аудита) и заканчивая тонкой настройкой PostgreSQL. Расскажем о системе автоматизированного тестирования, которая позволяет сравнивать производительность на MS SQL и PostgreSQL без трудоемких ручных проверок. Особое внимание уделим проблемам, которые возникли при миграции систем объемом 20+ ТБ, и способам их решения. А также поразмышляем о том, что нужно было бы сделать по-другому, если бы этот проект пришлось начинать заново.

10.07.2025    1229    leongl    0    

10

HighLoad оптимизация Администрирование СУБД Системный администратор Программист 1С v8.3 Бесплатно (free)

В финальной статье по докладу «Дамп – не приговор, а повод задуматься», с которым выступили на осенней конференции INFOSTART TECH EVENT 2024, рассказываем, чем может быть полезна информация, полученная из дампа.

27.05.2025    1965    it-expertise    0    

12

HighLoad оптимизация Администрирование СУБД Системный администратор Программист 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Рассмотрим, почему при обновлении итогов регистров накопления СУБД может выбирать неоптимальный план запроса, и как это исправить.

28.04.2025    3034    Tantor    8    

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

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

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