Терминальный доступ к 1С:Предприятию через сервер на Linux

· 10 мин

Содержание

Терминальный сервер 1С на Linux собирается из трёх частей: дистрибутив из списка поддерживаемых платформой, сервер удалённых рабочих столов (xrdp или X2Go) и родной Linux-клиент 1С:Предприятия 8.3 — без Wine. Пользователи подключаются обычным RDP-клиентом, а 1С запускается у них в сеансе на сервере, как в Windows Server с RDS.

Типичная ситуация: в офисе 15 бухгалтеров, часть работает из дома, лицензии Windows Server и CAL на всех выходят дорого. Развертывание Linux в качестве терминального сервера для 1С убирает эту статью расходов. Платить придётся вниманием к деталям: шрифты, печать, ключи защиты и торговое оборудование настраиваются иначе.

Дистрибутив и железо для терминального сервера 1С

Платформа 8.3 официально работает на deb- и rpm-системах. На практике выбирают из такого списка:

  • 🐧 Ubuntu LTS и Debian — больше всего инструкций и пакетов, удобно для коммерческих компаний.
  • 🛡 Astra Linux, Альт, РЕД ОС — российские дистрибутивы из реестра отечественного ПО; их требуют госзаказчики и компании с требованиями импортозамещения.
  • 🧩 RHEL-совместимые (Rocky, Alma) — если в компании уже принят этот стек.

Берите LTS-выпуск и десктопное окружение полегче: XFCE или MATE. GNOME в многопользовательском режиме через RDP потребляет заметно больше памяти и капризничает.

Ориентиры по железу для тонкого клиента , который подключается к отдельному серверу 1С:

ПользователейvCPUОЗУДиск
до 1048–12 ГБSSD 100 ГБ
10–25816–32 ГБSSD 200 ГБ
25–5012–1648–64 ГБSSD/NVMe 300 ГБ

Цифры примерные. Сеанс тонкого клиента с XFCE обычно занимает 300–600 МБ памяти, толстого клиента с файловой базой — до 1–1,5 ГБ. Браузер в том же сеансе легко добавляет ещё гигабайт, это стоит учесть заранее.

Файловая база на том же терминальном сервере — самый простой вариант для 5–10 человек. Дальше переходите на клиент-серверный вариант (сервер 1С + PostgreSQL): файловая база плохо переносит много одновременных пользователей.

Как сотрудники подключаются к 1С на Linux-сервере: RDP, X2Go, Citrix, веб-клиент

Способов доступа четыре. Выбор зависит от того, какие клиенты у пользователей и сколько их.

СпособКлиент у пользователяПлюсыМинусы
xrdpстандартный «Подключение к удалённому рабочему столу» в Windowsничего не ставить на ПК, привычнослабее с печатью и USB
X2Goклиент X2Goбыстрый на слабых каналах, работает поверх SSHнужен отдельный клиент
Citrix Virtual Apps (Linux VDA)Citrix Workspaceпубликация отдельного приложения, зрелое управлениеплатно, сложнее в настройке
Веб-клиент 1Сбраузерне нужен терминальный сервер вообщене всё оборудование и внешние компоненты работают

Настройка xrdp на Ubuntu

Самый частый вариант. Установка занимает несколько минут:

sudo apt update
sudo apt install xfce4 xfce4-goodies xrdp
sudo adduser xrdp ssl-cert
echo "xfce4-session" | sudo tee /etc/skel/.xsession
sudo systemctl enable --now xrdp

Файл .xsession в /etc/skel попадёт ко всем новым пользователям. Существующим скопируйте его в домашний каталог вручную.

Лимиты сеансов задаются в /etc/xrdp/sesman.ini, секция [Sessions]: MaxSessions — максимум сеансов, KillDisconnected и DisconnectedTimeLimit — что делать с брошенными сеансами. Брошенный сеанс с открытой 1С держит клиентскую лицензию, поэтому отключённые сеансы лучше завершать по таймауту, например через 2–4 часа.

Публикация только 1С, без рабочего стола

Пользователю часто не нужен весь рабочий стол. Тогда в его ~/.xsession вместо окружения пишут запуск клиента: /opt/1cv8/x86_64/<версия>/1cv8c. Закрыл 1С — сеанс завершился. В Citrix то же самое делается штатной публикацией приложения.

Веб-клиент как альтернатива

Если терминальный сервер нужен только ради удалённой работы, проверьте веб-клиент. Базу публикуют на Apache утилитой webinst из каталога платформы:

sudo /opt/1cv8/x86_64/<версия>/webinst -apache24 -wsdir buh \
  -dir /var/www/buh -connstr "Srvr=srv1c;Ref=buh;"

Пользователь открывает адрес в браузере. Ограничение одно, но серьёзное: торговое оборудование, часть внешних компонент и криптопровайдеры в браузере работают не везде.

Установка клиента 1С:Предприятия на Linux: родная версия или Wine

Главный приём, который отличает рабочую схему от мучений: 1С 8.3 под Wine не ставят. У платформы есть полноценный Linux-клиент — тонкий (1cv8c) и толстый (1cv8). Он поддерживается фирмой 1С, обновляется вместе с платформой и работает стабильнее эмуляции.

Шаги установки

  1. Скачайте с портала поддержки дистрибутив «Технологическая платформа для Linux» нужной разрядности. В актуальных версиях это один файл вида setup-full-8.3.xx.xxxx-x86_64.run.
  2. Сделайте его исполняемым и запустите от root: chmod +x setup-full-*.run && sudo ./setup-full-*.run.
  3. В мастере отметьте нужные компоненты: клиент 1С:Предприятия, при необходимости — тонкий клиент и интерфейс на русском языке .
  4. Платформа встанет в /opt/1cv8/x86_64/8.3.xx.xxxx/.
  5. Поставьте шрифты Microsoft: в Ubuntu это пакет ttf-mscorefonts-installer. Без них печатные формы «плывут»: текст вылезает за рамки, накладные уходят на две страницы.
  6. Запустите клиент под тестовым пользователем в RDP-сеансе и добавьте базу в список.

Для массового развёртывания у установщика есть тихий режим --mode unattended; список параметров покажет запуск с ключом --help.

Список баз для всех пользователей

Чтобы не добавлять базы каждому вручную, используйте общий файл списка баз (.v8i). Положите его на сервер, например в /etc/1C/1cestart/, и укажите путь в файле 1cestart.cfg параметром CommonInfoBases. Новые пользователи увидят базы сразу при первом входе.

Когда Wine всё-таки нужен

Wine пригодится не для самой 1С, а для отдельных Windows-программ рядом с ней: старого клиент-банка, утилиты производителя оборудования, внешней компоненты, у которой нет Linux-версии. Запускайте в Wine только эту программу.

Если конфигурация использует внешнюю компоненту только под Windows (некоторые драйверы оборудования, сервисы маркировки и обмена), родной Linux-клиент её не загрузит. Проверьте это до переезда: откройте нужные обработки и подключите оборудование на тестовом сервере.

Лицензии 1С на терминальном сервере Linux

Каждый пользователь, открывший 1С в терминальном сеансе, занимает одну клиентскую лицензию. Схем получения лицензий две.

  • 🔑 Программная лицензия на самом терминальном сервере. Активируется при первом запуске клиента и хранится в /var/1C/licenses. Многопользовательский комплект делит лицензии между сеансами этого сервера.
  • 🖥 Лицензия, выдаваемая сервером 1С. Если работаете в клиент-серверном варианте, включите в консоли кластера в свойствах информационной базы выдачу клиентских лицензий сервером. Тогда лицензии лежат на сервере 1С, а терминальный сервер можно пересобирать без повторной активации.

Второй вариант удобнее: программная лицензия привязана к параметрам машины, и смена железа или серьёзное обновление ОС может потребовать повторной активации.

Для аппаратных ключей HASP установите драйвер aksusbd (пакет поставляется с дистрибутивом платформы и у производителя ключей). Сетевой ключ на соседнем компьютере работает через менеджер лицензий HASP; клиенту нужен доступ к нему по сети.

Каталог /var/1C/licenses должен быть доступен на чтение всем пользователям, которые запускают 1С. Ошибка прав здесь — частая причина, когда у администратора лицензия есть, а у бухгалтера клиент её не видит.

Производительность и ресурсы: как не дать одному сеансу съесть сервер

На Windows лимиты ресурсов на пользователя настраивать неудобно. На Linux это делает systemd: каждому пользователю создаётся свой срез user-<UID>.slice, на него можно наложить ограничения.

Общий лимит для всех пользователей — файл /etc/systemd/system/user-.slice.d/50-limits.conf:

[Slice]
MemoryMax=3G
CPUQuota=200%

После этого sudo systemctl daemon-reload. Теперь отчёт, который у одного бухгалтера съел память, завершится внутри его сеанса, а не положит сервер целиком. CPUQuota=200% означает «не больше двух ядер».

Ещё несколько настроек, которые дают заметный эффект:

  • ⚡ Тонкий клиент вместо толстого для клиент-серверной базы: расчёты идут на сервере 1С, в терминальном сеансе остаётся только интерфейс.
  • 💾 Своп небольшой, 4–8 ГБ, как страховка. Если сервер постоянно в нём сидит — нужна память, а не своп побольше.
  • 🎨 Отключите эффекты окружения: композитинг, анимации, обои. По RDP они только нагружают канал.
  • 📁 Кэш 1С лежит в домашнем каталоге пользователя (~/.1cv8). Держите /home на SSD.
  • 🌐 Сервер 1С и СУБД лучше держать на отдельной машине в той же сети, что и терминальный сервер. Задержка между ними важнее, чем между пользователем и терминалом.

Нагрузку смотрите командами htop (по пользователям) и systemd-cgtop (по срезам). Так видно, чей сеанс тормозит всех.

Принтеры, флешки, ключи и торговое оборудование

Периферия — самое слабое место Linux-терминала. Лучше сразу решить, что подключается через сеть, а что через сеанс.

УстройствоРекомендуемый способ
Офисный принтерсетевой, установлен на сервер через CUPS
Локальный принтер пользователяперенаправление через xrdp (работает не со всеми моделями) или печать в PDF и вывод на своём ПК
Флешка, локальный дискперенаправление дисков RDP: в сеансе появляется каталог ~/thinclient_drives
Буфер обменаработает в xrdp и X2Go без настройки
USB-ключ HASP пользователяне пробрасывается штатно; переносите ключ на сервер или используйте сетевой
ККТ, сканер ШК, весысетевые модели или Linux-драйвер производителя на сервере
Токен с электронной подписьюкриптопровайдер под Linux на сервере; проброс токена — через USB over IP

Для USB-устройств, которые всё-таки нужно пробросить из офиса, есть usbip и коммерческие решения USB over IP. Это рабочий вариант для пары рабочих мест, но не для всего офиса.

Онлайн-кассы и сканеры маркировки на терминальном сервере — отдельный проект. Убедитесь, что у драйвера ККТ есть Linux-версия, подключите кассу по сети и проведите тестовый чек до переноса продаж.

Как подключить торговое оборудование к 1С на Linux-терминале?

Безопасность и резервное копирование терминального сервера

Открытый в интернет порт 3389 начинают перебирать в первые часы. Схема защиты минимальная, но обязательная:

  1. Доступ только через VPN. WireGuard или OpenVPN на сервере или на маршрутизаторе офиса. Порт RDP наружу не публикуется.
  2. Межсетевой экран. В Ubuntu: sudo ufw allow from 10.8.0.0/24 to any port 3389 и sudo ufw enable (подставьте свою подсеть VPN). SSH — только по ключам.
  3. fail2ban для SSH и xrdp — блокирует перебор паролей.
  4. Отдельные учётные записи без прав sudo. Бухгалтеру не нужен root, а одна общая учётка «buh» на троих лишает вас журнала, кто что делал.
  5. Обновления безопасности — автоматически, через unattended-upgrades. Обновление платформы 1С — вручную, после проверки на тестовой базе.

Что и как копировать

  • 🗄 Клиент-серверная база — штатным средством СУБД: для PostgreSQL это pg_dump по расписанию, файлы складывать на другой диск или сервер.
  • 📄 Файловая база — копировать каталог с 1Cv8.1CD, когда в базе никого нет (ночью), или выгружать в .dt. Копия работающего файла может оказаться повреждённой.
  • ⚙️ Настройки сервера: /etc/xrdp, общий список баз, файлы 1cestart.cfg, /var/1C/licenses. Без них восстановление превратится в повторную настройку.

Проверяйте восстановление хотя бы раз в квартал: развернуть копию на тестовой машине и открыть базу . Копия, которую ни разу не разворачивали, — это надежда, а не резерв.

Перезагрузку сервера, перезапуск xrdp и обновление платформы делайте вне рабочего времени и с предупреждением пользователей: все открытые сеансы оборвутся, несохранённые документы пропадут.

Linux или Windows Server под терминальную 1С: сравнение

КритерийLinux + xrdpWindows Server + RDS
Лицензии ОСбесплатно (Ubuntu, Debian) или по подписке (российские ОС)лицензия сервера + RDS CAL на каждого пользователя
Клиент 1Сродной Linux-клиентосновной, проверенный
Внешние компонентытолько с Linux-версиейвсе
Печать на локальные принтерыограниченнохорошо
Проброс USB и токеновчерез usbip, вручнуюштатно
Лимиты ресурсов на пользователяsystemd, гибкосложнее
Требования импортозамещениявыполняются на ОС из реестранет

Короткий вывод. Если у вас типовая БП или ЗУП, сетевые принтеры и нет экзотического оборудования — Linux-терминал работает не хуже и обходится дешевле. Если на рабочих местах кассы, ключи и токены, привязанные к USB, сначала соберите пилот на 2–3 пользователя.

Можно ли запустить на Linux-терминале 1С 8.3 через Wine?
Технически да, но смысла нет: у платформы есть родной Linux-клиент. Wine нужен только для отдельных Windows-программ рядом с 1С.
Работает ли ЭЦП и сдача отчётности с Linux-терминала?
Да, если криптопровайдер установлен на сервере в Linux-версии, а токен доступен в сеансе: подключён к серверу или проброшен через USB over IP.
Сколько пользователей выдержит терминальный сервер на 16 ГБ памяти?
Ориентировочно 15–25 пользователей тонкого клиента с XFCE. Если параллельно открыт браузер — меньше.
Подойдёт ли macOS или Linux на рабочем месте для подключения?
Да. Для xrdp подойдёт любой RDP-клиент, например Remmina в Linux или Microsoft Remote Desktop в macOS. Для X2Go есть клиенты под все три системы.
Нужно ли покупать отдельные лицензии 1С для терминального сервера?
Отдельного «терминального» вида нет. Нужны обычные клиентские лицензии по числу одновременных пользователей, их активируют на терминальном сервере или на сервере 1С.