Сервер 1С на Linux с PostgreSQL: что ставить и в каком порядке

Как поднять сервер 1С:Предприятия 8.3 на VPS с Ubuntu 24.04 без Windows: какую сборку PostgreSQL брать, почему локаль идёт первой, как поставить платформу одной командой, создать базу через rac, активировать лицензии без USB-ключа и пустить сотрудников. Отдельно про Astra Linux и про то, какой сервер под это взять по каталогу на 12 октября 2026.

Что получится и что понадобится

Клиент-серверный вариант 1С состоит из двух частей: сервер 1С:Предприятия держит сеансы пользователей и выполняет код, а базу хранит СУБД. На Linux это PostgreSQL, и вся связка обходится без лицензий Windows Server и без лицензий на удалённые столы. Пользователи работают из тонкого клиента на своих компьютерах или из браузера. Для десяти человек в одной бухгалтерии этого хватает с запасом, подробнее про выбор железа в гайде о сервере для 1С на 10 пользователей.

Понадобится VPS с Ubuntu 24.04, пользователь с sudo и доступ по SSH, как в инструкции про первую настройку VPS. В списке поддерживаемых у 1С также Ubuntu 20.04 и 22.04, Debian 10, 11 и 12, Astra Linux SE 1.7 и 1.8, РЕД ОС и Альт. Для десяти пользователей с сервером 1С и PostgreSQL на одной машине берите 4 ядра и 8 ГБ памяти, минимум 2 ядра и 4 ГБ, диск SSD от 40 ГБ. Дистрибутив платформы скачивается с портала releases.1c.ru, доступ к нему даёт договор ИТС или регистрация купленной программы. PostgreSQL для 1С бесплатен. Лицензии 1С нужны программные, серверная и клиентские: USB-ключи на VPS не работают, провайдеры их не подключают.

Проверено 18 октября 2026 по документации 1С и Postgres Pro и по чужим разборам установки на Linux, на живом сервере команды не прогонялись. В примерах платформа 8.3.27 сборки 2074, подставьте номер своей сборки, он входит в имена каталогов и служб.

Шаг 1. Локаль, имя хоста, обновления

С локали начинают не из педантичности. При установке пакета PostgreSQL создаётся кластер, и его локаль берётся из системы. 1С требует ru_RU.UTF-8, и если кластер создался с en_US или C.UTF-8, базу 1С в нём не создать, а поменять локаль можно только пересозданием кластера. Поэтому локаль, потом всё остальное.

sudo apt update && sudo apt upgrade -y
sudo apt install -y locales
sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=ru_RU.UTF-8

Выйдите из SSH и зайдите снова, затем проверьте, что команда locale показывает ru_RU.UTF-8. Заодно задайте имя хоста: сервер 1С запоминает его при создании кластера, и переименование после этого оборачивается пересозданием кластера.

sudo hostnamectl set-hostname srv1c
echo "127.0.1.1 srv1c" | sudo tee -a /etc/hosts
timedatectl

Время должно синхронизироваться, строка System clock synchronized: yes. Если сервер в другом часовом поясе, чем бухгалтерия, поставьте нужный командой timedatectl set-timezone, документы в 1С датируются временем сервера.

Шаг 2. PostgreSQL в сборке для 1С

Обычный PostgreSQL из репозитория Ubuntu для 1С не годится: платформе нужны патчи, у неё свои типы данных и правки планировщика. Сборки две, обе бесплатные. Postgres Pro 1C ставится из репозитория Postgres Pro и есть для Ubuntu, Debian, Альт и РЕД ОС. PostgreSQL с патчем от 1С лежит на releases.1c.ru в виде deb-пакетов, в том числе для Astra Linux. На октябрь 2026 у 1С в списке поддерживаемых версии 18.4, 17.10, 16.14, 15.18 и 14.23. Я беру Postgres Pro 1C 17: восемнадцатая в списке 1С появилась последней, а по семнадцатой больше накопленного опыта и разборов ошибок.

wget https://repo.postgrespro.ru/1c/1c-17/keys/pgpro-repo-add.sh
sudo sh pgpro-repo-add.sh
sudo apt install -y postgrespro-1c-17
sudo systemctl status postgrespro-1c-17 --no-pager

На сайте 1c.postgres.ru сборку предлагают получить через анкету, инструкция приходит письмом, но репозиторий открыт по адресу из скрипта. После установки проверьте локаль кластера:

sudo -u postgres psql -c "SHOW lc_collate;"

Должно быть ru_RU.UTF-8. Если там en_US.UTF-8 или C, значит, шаг 1 пропустили или не перезашли. Кластер пересоздаётся, данных в нём ещё нет, терять нечего. Пути ниже взяты из документации Postgres Pro: данные лежат в каталоге версии внутри /var/lib/pgpro, утилиты в /opt/pgpro. Если psql и pg_dump не находятся по имени, добавьте каталог /opt/pgpro/1c-17/bin в PATH.

sudo systemctl stop postgrespro-1c-17
sudo rm -rf /var/lib/pgpro/1c-17/data
sudo /opt/pgpro/1c-17/bin/pg-setup initdb --locale=ru_RU.UTF-8
sudo systemctl start postgrespro-1c-17

Дальше пароли. Пользователю postgres пароль нужен на всякий случай, а для 1С заведите отдельного пользователя с правами суперпользователя: платформа сама создаёт базы и расширения.

sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'длинный-пароль-1';
CREATE USER usr1cv8 WITH SUPERUSER PASSWORD 'длинный-пароль-2';
\q

Сервер 1С будет на этой же машине, поэтому PostgreSQL оставляем слушать только 127.0.0.1, как он и делает по умолчанию. Порт 5432 наружу не открывайте и в pg_hba.conf ничего не добавляйте.

Шаг 3. Память и параметры под 1С

Postgres Pro публикует рекомендации для 1С в приложении к документации, ниже они пересчитаны на сервер с 8 ГБ, на котором рядом живёт сервер 1С. Документация советует effective_cache_size как память минус shared_buffers, но половину машины съедят рабочие процессы 1С, поэтому здесь 3 ГБ, а не 6. По той же причине work_mem ниже рекомендованных 128 МБ: это память на каждую сортировку в каждом из сотен соединений, и на 8 ГБ с соседом в виде сервера 1С её лучше не раздавать щедро.

ПараметрЗначениеЗачем
shared_buffers2GBчетверть памяти под кэш страниц
effective_cache_size3GBоценка кэша ОС для планировщика
temp_buffers64MBвременные таблицы, 1С создаёт их часто
work_mem64MBсортировки и соединения в памяти
maintenance_work_mem256MBvacuum и построение индексов
max_connections500рабочие процессы 1С держат много соединений
max_locks_per_transaction256иначе ошибки блокировок при обновлении конфигурации
standard_conforming_stringsoffобязательно для 1С
escape_string_warningoffобязательно для 1С
synchronous_commitoffбыстрее запись, при сбое теряются последние секунды транзакций
random_page_cost1.2SSD, случайное чтение дёшево
jitoffкомпиляция запросов 1С только мешает
max_parallel_workers_per_gather0параллельные планы на запросах 1С вредят
checkpoint_timeout15minреже контрольные точки
min_wal_size и max_wal_size512MB и 1GBжурнал не упирается в размер
autovacuum_naptime20sчистка чаще, чем раз в минуту по умолчанию
from_collapse_limit и join_collapse_limit201С генерирует запросы с десятками соединений

Задавать удобнее через ALTER SYSTEM: значения попадают в postgresql.auto.conf, и искать основной конфиг не нужно. Запустите psql от postgres и вставьте блок целиком, затем перезапустите службу.

ALTER SYSTEM SET shared_buffers = '2GB';
ALTER SYSTEM SET effective_cache_size = '3GB';
ALTER SYSTEM SET temp_buffers = '64MB';
ALTER SYSTEM SET work_mem = '64MB';
ALTER SYSTEM SET maintenance_work_mem = '256MB';
ALTER SYSTEM SET max_connections = 500;
ALTER SYSTEM SET max_locks_per_transaction = 256;
ALTER SYSTEM SET standard_conforming_strings = off;
ALTER SYSTEM SET escape_string_warning = off;
ALTER SYSTEM SET synchronous_commit = off;
ALTER SYSTEM SET random_page_cost = 1.2;
ALTER SYSTEM SET jit = off;
ALTER SYSTEM SET max_parallel_workers_per_gather = 0;
ALTER SYSTEM SET checkpoint_timeout = '15min';
ALTER SYSTEM SET min_wal_size = '512MB';
ALTER SYSTEM SET max_wal_size = '1GB';
ALTER SYSTEM SET autovacuum_naptime = '20s';
ALTER SYSTEM SET from_collapse_limit = 20;
ALTER SYSTEM SET join_collapse_limit = 20;
sudo systemctl restart postgrespro-1c-17
sudo -u postgres psql -c "SHOW shared_buffers;"

Часть этих значений пакет Postgres Pro 1C может выставить сам: в поставке есть утилита pgpro_tune с профилем для 1С. Повторная установка тех же чисел ничему не вредит. На сервере с 16 ГБ удвойте shared_buffers, effective_cache_size и maintenance_work_mem, остальное оставьте.

Шаг 4. Платформа 1С:Предприятия

На releases.1c.ru откройте «Технологическая платформа 8.3», нужную версию и скачайте «Установщик для Linux (64-bit)». Кластер серверов ставится только полным установщиком, файл внутри архива называется setup-full-8.3.27.2074-x86_64.run. Скопируйте архив на сервер командой scp, распакуйте и запустите установщик в пакетном режиме с нужными компонентами: server - сам кластер, server_admin - сервер администрирования, через который работает утилита rac, ws - модуль для публикации на веб-сервере, liberica_jre - Java для утилиты лицензирования.

mkdir -p ~/1c && cd ~/1c
tar -xzf ~/server64_8_3_27_2074.tar.gz
sudo ./setup-full-8.3.27.2074-x86_64.run --mode unattended --enable-components server,server_admin,ws,liberica_jre,ru
ls /opt/1cv8/x86_64/

Установщик создаёт пользователя usr1cv8, от имени которого запускается сервер, и кладёт платформу в каталог с номером сборки внутри /opt/1cv8/x86_64. Там же лежат заготовки служб systemd: шаблон кластера и служба сервера администрирования. Их нужно подключить и включить в автозагрузку, подставив свою сборку.

V=8.3.27.2074
sudo systemctl link /opt/1cv8/x86_64/$V/srv1cv8-$V@.service
sudo systemctl enable --now srv1cv8-$V@default
sudo systemctl link /opt/1cv8/x86_64/$V/ras-$V.service
sudo systemctl enable --now ras-$V
ss -ltnp | grep -E ':(1540|1541|1545) '

Три порта должны слушаться: 1540 агент кластера, 1541 менеджер кластера, 1545 сервер администрирования. Рабочие процессы займут порты с 1560 по 1591 по мере подключения пользователей. Если порты не появились, смотрите журнал службы через journalctl -u с именем службы.

Шаг 5. Кластер и первая база

Кластер создаётся сам при первом запуске службы, остаётся узнать его идентификатор и создать базу. Утилита rac лежит в каталоге платформы, добавьте его в PATH на время сессии. Команды rac ниже собраны по справке утилиты и разборам на Хабре, если ключ не принимается, вывод rac с параметром help покажет актуальный набор.

export PATH=$PATH:/opt/1cv8/x86_64/8.3.27.2074
rac cluster list

В выводе строка cluster с длинным идентификатором, он нужен для всех команд ниже. База создаётся одной командой вместе с базой в PostgreSQL, пользователь и пароль те, что вы завели на шаге 2. Параметр license-distribution разрешает серверу выдавать клиентские лицензии, без него пользователи получат отказ при входе.

rac infobase create --cluster=<идентификатор> --name=buh --dbms=PostgreSQL --db-server=localhost --db-name=buh --locale=ru_RU --db-user=usr1cv8 --db-pwd='длинный-пароль-2' --create-database --license-distribution=allow
rac infobase summary list --cluster=<идентификатор>

Пока кластер без администратора, управлять им может любой, кто дотянулся до порта 1541. Задайте администратора кластера сразу, до того как откроете порты наружу.

rac cluster admin --cluster=<идентификатор> register --name=admin --pwd='длинный-пароль-3' --auth=pwd

Конфигурация или выгрузка .dt загружается в пустую базу из конфигуратора с рабочего места: Администрирование, Загрузить информационную базу. Для баз в десятки гигабайт есть серверная утилита ibcmd, которая делает то же самое без клиента, её ключи описаны в руководстве администратора.

Шаг 6. Лицензии без USB-ключа

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

Для серверной лицензии без клиента есть утилита ring из набора «1C Enterprise License Tools», набор скачивается там же, на releases.1c.ru, и ставится на сервер. Команда ring license activate с реквизитами организации, серийным номером и пин-кодом выдаёт лицензию прямо в консоли. Лицензия привязывается к железу: после смены тарифа у провайдера или переезда на другой сервер лицензию придётся активировать заново по той же процедуре, количество активаций на один пин-код ограничено, поэтому тариф выбирайте до активации.

Шаг 7. Доступ сотрудников: тонкий клиент или браузер

Первый путь: тонкий клиент 1С на компьютерах сотрудников подключается к серверу напрямую, в списке баз указывается тип «На сервере 1С:Предприятия», адрес сервера и имя базы buh. Для этого открывают порты кластера, но не всему интернету, а только с адресов офиса или через VPN.

sudo ufw allow from 203.0.113.0/24 to any port 1540:1541 proto tcp
sudo ufw allow from 203.0.113.0/24 to any port 1560:1591 proto tcp
sudo ufw status

Подставьте адрес офиса вместо примера. Если сотрудники работают из дома с разных адресов, порты кластера наружу не открывайте, поднимите VPN или идите вторым путём.

Второй путь: публикация базы на веб-сервере. Тогда пользователи заходят через браузер или тонкий клиент по HTTP, а на сервере открыт только 443 с сертификатом. Компонент ws установлен на шаге 4, остаётся Apache и одна команда публикации.

sudo apt install -y apache2
sudo /opt/1cv8/x86_64/8.3.27.2074/webinst -publish -apache24 -wsdir buh -dir /var/www/buh -connstr "Srvr=localhost;Ref=buh;" -confpath /etc/apache2/apache2.conf
sudo systemctl restart apache2

База откроется по адресу сервера с путём /buh. Сертификат для домена выпускается через certbot так же, как для любого сайта на Apache. Веб-клиент не требует лицензий на удалённые столы, но не все конфигурации и доработки в нём работают, проверяйте на своей базе до того, как перевести на него всех.

Шаг 8. Резервная копия каждую ночь

Копия базы снимается средствами PostgreSQL, пока сервер работает, пользователей выгонять не нужно. Формат custom сжимает дамп и восстанавливается утилитой pg_restore.

sudo mkdir -p /var/backups/1c && sudo chown postgres:postgres /var/backups/1c
sudo -u postgres pg_dump -Fc buh -f /var/backups/1c/buh-$(date +%F).dump
ls -lh /var/backups/1c/

Чтобы копия снималась сама, положите команду в crontab пользователя postgres на три часа ночи и удаляйте дампы старше двух недель командой find с ключом mtime. Копии на том же диске, что и база, не считаются резервными: забирайте их с сервера, хоть через scp на офисный компьютер, хоть в объектное хранилище провайдера. Выгрузка .dt из конфигуратора тоже остаётся: она медленнее, зато переносится между версиями PostgreSQL и даже на Windows с MS SQL.

Если не запускается или база не создаётся

Ошибка про collation или incompatible locale при создании базы. Кластер PostgreSQL создан не с той локалью, возвращайтесь к шагу 2 и пересоздавайте его.

rac отвечает, что не может подключиться к серверу на порту 1545. Не запущена служба ras, проверьте systemctl status с её именем и journalctl.

База создаётся, а при входе тонкий клиент пишет, что лицензия не обнаружена. Либо на сервере нет серверной лицензии, либо базу создали без параметра license-distribution, он меняется командой rac infobase update с тем же ключом.

Сервер не отвечает после перезагрузки. Службы подключены через link, но не включены в автозагрузку, проверьте systemctl is-enabled для обеих. Журналы сервера 1С лежат в домашнем каталоге usr1cv8 в скрытой папке .1cv8.

Память заканчивается. Рабочий процесс rphost на десять пользователей занимает от одного до нескольких гигабайт, и на 8 ГБ вместе с 2 ГБ shared_buffers это впритык при тяжёлых отчётах. Либо снижайте shared_buffers до 1 ГБ, либо берите 16 ГБ, это дешевле, чем ждать, пока сервер убьёт процесс по нехватке памяти.

Astra Linux: что отличается

Astra Linux SE 1.7 и 1.8 в списке поддерживаемых у 1С, с оговоркой про ядро generic. Установщик платформы тот же, пакеты deb, команды из шагов 4 и 5 совпадают. Отличие в PostgreSQL: в репозитории Postgres Pro 1C каталога для Astra нет, поэтому берите сборку с патчем от 1С с releases.1c.ru, там есть пакеты для Astra 1.7 и 1.8, ставьте их через dpkg, а недостающие зависимости доустанавливайте через apt с ключом f. Локаль в Astra обычно русская из коробки, но проверка lc_collate из шага 2 обязательна и здесь. Инструкция рассчитана на базовый уровень защищённости; для режимов с мандатным контролем у 1С есть отдельная документация по Astra.

Какой сервер под это нужен

Сервер 1С и PostgreSQL делят одну машину, поэтому считать надо память и ядра. В нашем каталоге на 12 октября 2026 в России с Linux, без условия о предоплате и без видеокарты тарифов от 4 ядер, 8 ГБ и 80 ГБ диска 90. Самые дешёвые: Selectel VDS 4-8-80 за 1 100 ₽ в месяц, AdminVPS Start с ядрами 3,6 ГГц за 1 289 ₽, FirstVDS Отрыв на SSD за 1 579 ₽. Минимальная конфигурация пресета, 2 ядра, 4 ГБ и 40 ГБ, начинается с 650 ₽ у Selectel VDS 2-4-50, таких тарифов 124, но для десяти человек это без запаса. Для сравнения, та же формула 4/8/80 с Windows стоит от тех же 1 579 ₽ у FirstVDS, разница появляется дальше: лицензия Windows Server у части провайдеров отдельной строкой и лицензии на удалённые столы, которых на Linux нет вовсе.

инструкции1сpostgresql

Серверы под сервер 1С с PostgreSQL

Linux в России, от 4 ядер, 8 ГБ памяти и 80 ГБ диска: сервер 1С и PostgreSQL на одной машине на десять пользователей. Самые дешёвые варианты каталога.

Коды площадок

RU
— Россия

Цены из каталога, обновляются вместе с ним. Остальные варианты — в каталоге.

Сравнить тарифы VPS

Весь каталог с фильтрами и честной сортировкой — цены обновляются автоматически.

Открыть каталог →