Яндекс

Консоль администрирования 1С на Astra Linux

Консоль администрирования 1С на Astra Linux

(3 Votes)

В нашей стране с недавних времен задан тренд импортозамещения и если сервер 1С или клиент не составит труда развернуть на Astra Linux, то вот администрировать его без Windows трудно. Да, можно использователь терминальные команды и управлять сервером с терминала, но не все владеют этим кунг-фу и не у каждого есть в запасе блокнот со всеми командами под рукой.
На помощь в этом вопросе приходит «Панель Управления Сервисами и Компонентами» (ПУСК) — бесплатный кроссплатформенный инструмент для администрирования кластеров серверов 1С. От компании «ИТ-Экспертиза». За что им низкий поклон. Приложение реализовано в виде веб-приложения, которое работает в любом современном браузере. ПУСК имеет единый интерфейс и одинаковое поведение в Linux и Windows. Если в вашей инфраструктуре отсутствует Windows, то это отличное решение по администрированию сервера 1С на базовом уровне.
Но у данного решения к сожалению из коробки не работает https. Приложение написано на Java, а так как я им не владею, значит будем задавать правила хорошего тона через ограничения работы приложения по localhost, обратным прокси nginx и SSL-шифрованием.


Установка

Консоль можно поставить на любую машину, но лучше и канон на самом сервер 1С. Я буду ставить на тестовом сервере, где установлен сервер 1С x86 и база данных postgres.

Переходим в директорию /opt:

cd /opt

Ставим Java (согласно документации, требуется не ниже Java-17)

sudo apt install -y openjdk-17-jre-headless

Проверяем нашу Java

sudo java --version

java --version
openjdk 17.0.14 2025-01-21
OpenJDK Runtime Environment (build 17.0.14+7-Astra-1deb12u1)
OpenJDK 64-Bit Server VM (build 17.0.14+7-Astra-1deb12u1, mixed mode, sharing)

Загружаем "Панель Управления Сервисами и Компонентами (ПУСК)" (прямая ссылка ite-pusk-1.2.3.tar.gz) и закидываем в /opt

Распаковываем

sudo tar -xvf ite-pusk-1.2.3.tar.gz -C /opt/

Качаем библиотеки java для 1С согласно инструкции.

Тут вы можете загрузить сами (ссылка на библиотеки), но я же предлагаю загрузить пересобранный архив, так как загружая с сайта 1С, у архива большая вложенность самих библиотек, скриншот ниже. Я же упаковал все необходимое в один архив.

sudo wget -O /opt/pusk/lib/lib_1C.zip https://entnet.ru/images/1C/pusk/lib_1C.zip

cd /opt/pusk/lib

sudo unzip /opt/pusk/lib/lib_1C.zip

Устанавливаем графику

cd /opt/pusk

sudo ./ite-pusk-linux.sh install

sudo service ite-pusk start

Проверяем службу

sudo service ite-pusk status

Далее переходим в браузер http://ip_adress:8080

Теперь нам нужно задать логин и пароль администратора, если этого не сделать, любой сможет попасть в консоль. Справа вверху нажать на человечка и выбрать "Администрирование", а затем создать.

Дальше нас перекидывает на страницу входа. Вводим только что созданную учетную запись admin1c

После успешного ввода попадаем на главную страницу, только уже доступ ограничен учетной записью.

(Опционально) Теперь давайте зададим немного красоты и сменим светлый дизайн на темный.
Жмем на человечка и выбираем "Настройки". В открывшемся окне нажимаем "Темная тема" и кнопку "Сохранить".

Теперь совсем другое дело 😊
Для администрирования серверов 1С на Linux, требуется запущенная утилита ras из состава 1С. По умолчанию, она выключена. 

ВАЖНО! Чтобы мы смогли в веб-консоль подцепить наш сервер 1С, нам нужно ее запустить (ras). Это можно сделать разными способами.

1) Вручную (sudo /opt/1cv8/i386/8.3.24.1586/ras cluster --daemon)

2) При добавлении сервера в веб-консоль (выбрав пункт "Запускать автоматически" при добавлении сервера)

3) Привязать службу по запуску ras в веб-консоль (рекомендую этот способ). Если наш сервер перезагрузится, то ras нам придется запускать вручную как в 1 пункте, а в нашем варианте, достаточно нажать правой кнопкой на службу и выбрать "Запустить" прямо в окне браузера и мы снова получим доступ к серверу в веб.

Перейдем от слов к действиям. Находим на главной "Службы" и нажимаем "Добавить" -> "службу сервера администрирования ras".

Находим "Путь к исполняемому файлу ras". Там где "Версия V8" вводим: /opt/1cv8/i386/8.3.24.1586/

Там где "Укажите путь к ras" вводим: /opt/1cv8/i386/8.3.24.1586/ras

и нажимаем "Создать"

Как мы видим, службу мы создали, но она горит красным. Теперь необходимо ее запустить.
Для этого правой кнопкой нажимаем на нее и выбираем "Запустить".

Теперь можно добавлять наш сервер 1С в консоль.
Ищем на главной "Подключения" и нажимаем "Добавить". Вводим описание (которое будет видно в подключениях), выбираем пункт "Уже запущен", так как мы уже запустили ras, вводим localhost (так как панель на этом же сервере, можно указать IP если это другой сервер или консоль не на этом сервере). Порт по умолчанию, если не меняли.


Отлично, наша веб-консоль работает, но меня напрягает http протокол. Давайте это исправим. Я заменю стандартный порт 8080 на свой и ограничу работу проекта на localhost, настрою nginx и выпущу самоподписанный сертификат (на первое время пойдет, но лучше использовать certbot).

Создаем директорию для самоподписанного ключа

sudo mkdir -p /etc/ssl/localcerts

cd /etc/ssl/localcerts

Создаем сертификат

sudo openssl genrsa -out server.key 2048

sudo openssl req -new -x509 -key server.key -out server.crt -days 3650 -subj "/C=RU/ST=RU/L=NN/O=ENTNET/CN=entnet"

sudo chmod 600 server.key

sudo chmod 644 server.crt

Ставим nginx

sudo apt install -y nginx

Создаем конфиг pusk-ssl

sudo vim /etc/nginx/sites-available/pusk-ssl

Незабываем заменять порт на свой в proxy_pass!

 

server {
    listen 80;
    server_name _
	    localhost
	    IP
	    DOMAIN_NAME.DOMAIN;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;

    server_name _
               localhost
               IP
               DOMAIN_NAME.DOMAIN;

    ssl_certificate /etc/ssl/localcerts/server.crt;
    ssl_certificate_key /etc/ssl/localcerts/server.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;

    add_header Strict-Transport-Security "max-age=63072000" always;

    location / {
        proxy_pass http://127.0.0.1:8077;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_connect_timeout 7d;
        proxy_send_timeout 7d;
        proxy_read_timeout 7d;
    }

    access_log /var/log/nginx/pusk-access.log;
    error_log /var/log/nginx/pusk-error.log;
}

 

Создаем симлинк на наш конфиг

sudo ln -s /etc/nginx/sites-available/pusk-ssl /etc/nginx/sites-enabled/

Проверим правильность конфига на синтаксис

sudo nginx -t

Если видим надпись syntax is ok и test is successful - значит проблем с конфигом нет.

Теперь внесем небольшие изменения в проект "ПУСК". Заменим стандартный порт и ограничим работу только на localhost.

Переходим в директорию проекта

cd /opt/pusk/data/

Копируем конфиг с примером в конфиг

cp application.properties.sample application.properties

sudo vim application.properties

Изменяем server.port=${PORT:8080} на свой порт, я поставил 8077 и дописаем ниже строчку server.address=127.0.0.1. Должно быть так

server.port=${PORT:8077}
server.address=127.0.0.1

Проверяем, чтобы порт, который вы поставили в application.properties совпадал с конфигом nginx

Перезапускаем проект (ite-pusk) и nginx

sudo service ite-pusk restart

sudo systemctl reload nginx

Если все сделали правильно, то при переходе DOMAIN_NAME.DOMAIN или по IP адресу, вас должно перекидывать на https://

А при переходе по IP:8077 (или ваш порт), вы не должны подключаться. Должны получить ошибку, как у меня на скриншоте.

Можно проверить так же через curl

curl -v http://IP:8077

Если получаете данную ошибку, то значит вы настроили все правильно. * connect to IP port 8077 failed: В соединении отказано

Так же можно проверить на самом сервере по портам

ss -tulnp | grep 8077

Если все хорошо, то должна быть строчка:

 

tcp   LISTEN 0      100             127.0.0.1:8077       0.0.0.0:*

 

Если вы видите вот такую:

 

tcp   LISTEN 0      100               0.0.0.0:8077       0.0.0.0:*

То значит доступ к проекту имеют все.

Теперь попробуем зайти с другой машины, по IP и порту уже показал выше, а теперь если по доменному имени.

На этом наша задача выполнена. Мы настроили проект на работу на localhost, настроили обратных прокси на nginx и настроили SSL. Теперь мы можем управлять нашим сервером 1С прямо в браузере с любой машины.

Добавить комментарий

Будьте взаимовежливы и корректны.

Все сообщения проходят премодерацию.

Рекламные сообщения и комментарии с ссылками, не несущими смысловую нагрузку по тематике материала будут удаляться.


На развитие проекта

Вход