Терминальный доступ к 1С:Предприятию через сервер на Linux
Содержание
Терминальный сервер
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 | ОЗУ | Диск |
|---|---|---|---|
| до 10 | 4 | 8–12 ГБ | SSD 100 ГБ |
| 10–25 | 8 | 16–32 ГБ | SSD 200 ГБ |
| 25–50 | 12–16 | 48–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С, обновляется вместе с платформой и работает стабильнее эмуляции.
Шаги установки
- Скачайте с портала поддержки дистрибутив «Технологическая платформа для Linux» нужной разрядности. В актуальных версиях это один файл вида
setup-full-8.3.xx.xxxx-x86_64.run. - Сделайте его исполняемым и запустите от root:
chmod +x setup-full-*.run && sudo ./setup-full-*.run. - В мастере отметьте нужные компоненты: клиент 1С:Предприятия, при необходимости — тонкий клиент и интерфейс на русском языке .
- Платформа встанет в
/opt/1cv8/x86_64/8.3.xx.xxxx/. - Поставьте шрифты Microsoft: в Ubuntu это пакет
ttf-mscorefonts-installer. Без них печатные формы «плывут»: текст вылезает за рамки, накладные уходят на две страницы. - Запустите клиент под тестовым пользователем в 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-версия, подключите кассу по сети и проведите тестовый чек до переноса продаж.
Безопасность и резервное копирование терминального сервера
Открытый в интернет порт 3389 начинают перебирать в первые часы. Схема защиты минимальная, но обязательная:
- Доступ только через VPN. WireGuard или OpenVPN на сервере или на маршрутизаторе офиса. Порт RDP наружу не публикуется.
- Межсетевой экран. В Ubuntu:
sudo ufw allow from 10.8.0.0/24 to any port 3389иsudo ufw enable(подставьте свою подсеть VPN). SSH — только по ключам. - fail2ban для SSH и
xrdp— блокирует перебор паролей. - Отдельные учётные записи без прав
sudo. Бухгалтеру не нужен root, а одна общая учётка «buh» на троих лишает вас журнала, кто что делал. - Обновления безопасности — автоматически, через
unattended-upgrades. Обновление платформы 1С — вручную, после проверки на тестовой базе.
Что и как копировать
- 🗄 Клиент-серверная база
— штатным средством СУБД: для PostgreSQL это
pg_dumpпо расписанию, файлы складывать на другой диск или сервер. - 📄 Файловая база — копировать каталог с
1Cv8.1CD, когда в базе никого нет (ночью), или выгружать в.dt. Копия работающего файла может оказаться повреждённой. - ⚙️ Настройки сервера:
/etc/xrdp, общий список баз, файлы1cestart.cfg,/var/1C/licenses. Без них восстановление превратится в повторную настройку.
Проверяйте восстановление хотя бы раз в квартал: развернуть копию на тестовой машине и открыть базу . Копия, которую ни разу не разворачивали, — это надежда, а не резерв.
Перезагрузку сервера, перезапуск xrdp и обновление платформы делайте вне рабочего времени и с предупреждением пользователей: все открытые сеансы оборвутся, несохранённые документы пропадут.
Linux или Windows Server под терминальную 1С: сравнение
| Критерий | Linux + xrdp | Windows Server + RDS |
|---|---|---|
| Лицензии ОС | бесплатно (Ubuntu, Debian) или по подписке (российские ОС) | лицензия сервера + RDS CAL на каждого пользователя |
| Клиент 1С | родной Linux-клиент | основной, проверенный |
| Внешние компоненты | только с Linux-версией | все |
| Печать на локальные принтеры | ограниченно | хорошо |
| Проброс USB и токенов | через usbip, вручную | штатно |
| Лимиты ресурсов на пользователя | systemd, гибко | сложнее |
| Требования импортозамещения | выполняются на ОС из реестра | нет |
Короткий вывод. Если у вас типовая БП или ЗУП, сетевые принтеры и нет экзотического оборудования — Linux-терминал работает не хуже и обходится дешевле. Если на рабочих местах кассы, ключи и токены, привязанные к USB, сначала соберите пилот на 2–3 пользователя.
Можно ли запустить на Linux-терминале 1С 8.3 через Wine?
Работает ли ЭЦП и сдача отчётности с Linux-терминала?
Сколько пользователей выдержит терминальный сервер на 16 ГБ памяти?
Подойдёт ли macOS или Linux на рабочем месте для подключения?
xrdp подойдёт любой RDP-клиент, например Remmina в Linux или Microsoft Remote Desktop в macOS. Для X2Go есть клиенты под все три системы.