23.05.2023 Артем Слатин 20103
Установка сервера взаимодействия 1С на Ubuntu...

Содержание:

1.    Установка серверавзаимодействия 1С
2.    Настройкавиртуального хоста Nginx и получение сертификата с помощью Certbot
3.    Настройка подключения сервера взаимодействия 1С по защищённому протоколу https
4.    Настройка сайта для подключения внешних пользователей 1С
5.    Установка и настройка хранилища файлов MinIO
6.    Установка и настройка stun сервера Coturn
7.    Установка и настройка медиасервера Janus
8.    Подключение системы взаимодействия к платформе 1С  
       

!!!Все команды в статье выполнялись под пользователем root!!!


1.    Установка сервера взаимодействия 1С

 

Первым делом, необходимо передать на Ubuntu Server дистрибутивы сервера взаимодействия 1С и Liberica Full JDK 11-ой версии (например, через утилиту FarManager), скачать их можно с портала ИТС 1С. Лично я бросил их в корневой каталог своего пользователя: 

/home/ИМЯ_ПОЛЬЗОВАТЕЛЯ


https://releases.1c.ru/version_files?nick=CollaborationSystem&ver=22.0.26 

(1С: Сервер взаимодействия версии 22.0.26)

https://releases.1c.ru/version_files?nick=Liberica11FullJDK&ver=11.0.12%2b7

(Liberica 11 Full JDK, версия 11.0.12+7)


«На момент прочтения статьи, может появиться более актуальная версия сервера взаимодействия 1С, лучше самостоятельно проверить доступные версии дистрибутивов на ИТС.»

 

Установка Open JDK

Запустим установочный файл командой:

apt install ./bellsoft_jdk11.0.127_linux_amd64_full.deb


Настройка переменной JAVA_HOME

Узнаем каталог с OpenJDK:

update-alternatives --config java

У меня была установлена лишь одна версия Java OpenJDK, поэтому я получил следующий вывод:


В моём случае путь получился таким: /usr/lib/jvm/bellsoft-java11-full-amd64

Пропишем в файле “environment” полученный из предыдущего шага путь:

nano /etc/environment

Переводим курсор ниже строки “PATH” и прописываем путь следующим образом: JAVA_HOME=Ваш_Путь.

30.png

Сохраним изменения и выйдем из редактора nano сочетанием клавиш CTRL+X, а затем Enter (2 раза).

Применим изменения командой:

source /etc/environment

Для проверки, корректно ли установилась переменная, введём следующую команду:

echo $JAVA_HOME

При успешном выводе, увидим прописанный нами путь:



Установка Postgresql для 1С

Рекомендуется устанавливать postgresql 12, поставим его с помощью команд, указанных на официальном сайте https://www.postgresql.org/ в разделе Linux downloads (Ubuntu).


“На момент прочтения статьи, команды для установки могут измениться, лучше самостоятельно ознакомиться с инструкцией по установке на сайте https://www.postgresql.org/.”

 

По очереди введём следующие команды:

apt-get install –y gnupg2 gnupg gnupg1

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

apt-get update

apt-get install postgresql-12

       

Создание базы postgresql

Подключимся к консоли postgres:

sudo -i -u postgres psql


Зададим пароль пользователю postgres:

\password postgres


Создадим базу cs_db: 

CREATE DATABASE cs_db;

Успешный вывод:

CREATE DATABASE

Подключимся к ней:

\c cs_db


Добавим расширение необходимое для сервера взаимодействия:

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

Успешный вывод:

CREATE EXTENSION


Выйдем обратно в терминал:

\q


Установка 1С: Сервера взаимодействия

Разархивируем .tar архив:

tar –xvf 1c_cs_22.0.26_linux_x86_64.tar.gz

Запустим установочный файл 1С сервера взаимодействия:

./1ce-installer-cli install



Настройка команды ring

Узнаем путь к утилите ring:

find / -name ring

                                                                                                                                           

В моём случае путь получился таким: /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64

Пропишем полученный путь в файле “environment”:

nano /etc/environment

Путь нужно прописать в строке PATH, для этого в конце строки до кавычек поставьте знак “ : ” и пропишите путь к утилите ring


Сохраним изменения и выйдем из редактора nano сочетанием клавиш CTRL+X, а затем Enter (2 раза).

Применим изменения командой:

source /etc/environment


Во избежание ошибок при использовании утилиты ring, установим программу gawk:  

apt-get install gawk

    

!!!Команда ring работает корректно, исключительно, под пользователем root!!!

 

Инициализация сервера взаимодействия 1С:

Добавим пользователя cs_user:

useradd cs_user


В каталоге var создадим папку cs, а в ней папку cs_instance, где будет располагаться сервер взаимодействия, а также все конфигурационные файлы, и лог:

mkdir –p /var/cs/cs_instance

Дадим пользователю cs_user права на папку cs_instance:

chown cs_user:cs_user /var/cs/cs_instance

Создадим инстанс сервера взаимодействия:

ring cs instance create --dir /var/cs/cs_instance --owner cs_user

Настроим инстанс сервера взаимодействия:

ring cs --instance cs_instance service create --username cs_user --java-home $JAVA_HOME --stopped

       

Инициализация сервера Hazelcast

Добавим пользователя hc_user:

useradd hc_user

В каталоге var/cs создадим папку hc_instance:

mkdir -p /var/cs/hc_instance

Дадим пользователю hc_user права на папку hc_instance:

chown hc_user:hc_user /var/cs/hc_instance

Создадим инстанс сервера hazelcast:

ring hazelcast instance create --dir /var/cs/hc_instance --owner hc_user

Настроим инстанс сервера hazelcast:

ring hazelcast --instance hc_instance service create --username hc_user --java-home $JAVA_HOME --stopped


Инициализация сервера Elasticsearch

Добавим пользователя elastic_user:

useradd elastic_user

В каталоге var/cs создадим папку elastic_instance:

mkdir -p /var/cs/elastic_instance

Дадим пользователю elastic_user права на папку elastic_instance:

chown elastic_user:elastic_user /var/cs/elastic_instance


Создадим инстанс сервера elasticsearch:

ring elasticsearch instance create --dir /var/cs/elastic_instance --owner elastic_user


Настроим инстанс сервера elasticsearch:

ring elasticsearch --instance elastic_instance service create --username elastic_user --java-home $JAVA_HOME --stopped


Настройка параметров JDBC драйверов PostgreSQL:

Для этого по очереди введём следующие команды:

ring cs --instance cs_instance jdbc pools --name common set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public

ring cs --instance cs_instance jdbc pools --name common set-params --username postgres

ring cs --instance cs_instance jdbc pools --name common set-params --password <db_user_pwd>

ring cs --instance cs_instance jdbc pools --name privileged set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public

ring cs --instance cs_instance jdbc pools --name privileged set-params --username postgres

ring cs --instance cs_instance jdbc pools --name privileged set-params --password <db_user_pwd>

 <db_user_pwd> - пароль пользователя postgres


Настройка сервера WebSocket

Протокол WebSocket используется для взаимодействия сервера взаимодействия и клиентского приложения.

Для настройки сервера WebSocket введём следующие команды:

ring cs --instance cs_instance websocket set-params --hostname <cs_host>

ring cs --instance cs_instance websocket set-params --port <cs_port>

cs_host - доменное имя или IP адрес сервера

cs_port - порт для подключения к серверу взаимодействия


После окончания настройки

По очереди включим сервисы сервера взаимодействия 1С:

ring elasticsearch --instance elastic_instance service start

ring hazelcast --instance hc_instance service start

ring cs --instance cs_instance service start

apt install curl


Проверим, что 1С сервер взаимодействия запущен и работает:

curl http://localhost:8087/rs/health

Пример успешного ответа:

{"status":"UP","mainDbOk":true,"allShardsOk":true,"hazelcast":{"available":true,"members":["127.0.0.1:5701"]},"elasticsearchOk":true,"mediaClusterOk":false,"mediaServers":{},"pushOk":false}

       
Настраиваем 1С сервер взаимодействия для работы с базой postgresql:

curl -Sf -X POST -H "Content-Type: application/json" -d "{ \"url\" : \"jdbc:postgresql://localhost:5432/cs_db\", \"username\" : \"postgres\", \"password\" : \"\", \"enabled\" : true }" -u : http://localhost:8087/admin/bucket_server

<db_user_pwd> - пароль пользователя postgres

<ia_user>, <ia_password> - имя пользователя и пароль для доступа к интерфейсу обслуживания сервера взаимодействия

Пример успешного ответа:

{"id":"b844212d-9744-4cb0-9e2a-8377185d8222","url":"jdbc:postgresql://localhost:5432/cs_db","username":"postgres","password":"<db_user_pwd>","lastUsedAt":null,"enabled":true,"deleted":false}

 Настроим каталог для хранения бэкапов:

ring cs --instance cs_instance backup set-params –storage /var/cs/cs_instance/dumps


Настройка firewall

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

ufw allow 22

ufw allow <cs_port>

Теперь включим firewall:

ufw enable

Проверим, что наши порты добавились в firewall:

ufw status

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


Порядок подключения системы взаимодействия описан мною в 8-м шаге настоящей статьи.


Для настройки подключения по защищённому протоколу https, подключения возможности обмена файлами, подключения возможности проведения видеоконференций, а также настройки сайта для подключения внешних пользователей, продолжим выполнять следующие шаги.  


2.    Настройка виртуального хоста Nginx и получение сертификата с помощью Certbot

 

Для настройки сервера взаимодействия 1С на подключение по защищённому протоколу https (wss подключение), а также остальных сервисов, таких как MinIO и Janus, которые будут установлены и настроены далее, требуется сертификат. Его можно приобрести или же сгенерировать с помощью программы сertbot. Для генерации сертификата через сertbot требуется настроить виртуальный хост, я сделал это с помощью программы Nginx.


Установка сервера Nginx

apt install nginx

Включим HTTP профиль и добавим порт 80 в firewall:

ufw allow 'Nginx HTTP'

ufw allow 80

Проверим, запустился ли Nginx:

systemctl status nginx

Получим следующий вывод:



Как видите, сервис запущен и работает, однако лучше посетить стандартную посадочную страницу Nginx. Она доступна по домену или IP адресу.


Введите IP адрес или домен в браузер:

http://YOUR_DOMAIN_OR_YOUR_SERVER_IP

   
На экране появится стандартная страница Nginx:


Стоит отметить, что в нашем случае, корректная настройка nginx должна осуществляться именно через доменное имя, потому как certbot не может выписывать сертификаты на IP адрес.


Настройка виртуального хоста

Создадим каталог сайта:

mkdir -p /var/www/<YOUR_DOMAIN>/html

Создадим образец страницы index.html:

nano /var/www/< YOUR_DOMAIN >/html/index.html

Добавим следующее содержимое:

<html>

    <head>

        <title>Welcome to YOUR_DOMAIN </title>

    </head>

    <body>

        <h1>Success! Your Nginx server is successfully configured for <em> YOUR_DOMAIN </em>. </h1>

<p>This is a sample page.</p>

    </body>

</html>

 

Чтобы Nginx смог обслуживать этот контент, необходимо создать файл виртуального хоста с правильным набором директив. Вместо того, чтобы изменять конфигурации по умолчанию, создайте новый файл /etc/nginx/sites-available/YOUR_DOMAIN, а стандартные файлы default в каталогах sites-available и sites-enabled удалите.


Для удаления файлов воспользуемся командой rm:

rm /etc/nginx/sites-available/default

rm /etc/nginx/sites-enabled/default


Для более удобного менеджмента файлов и каталогов можно установить утилиту mc:

apt install mc

Запуск осуществляется командой:

mc


Создадим файл виртуального хоста:

nano /etc/nginx/sites-available/< YOUR_DOMAIN >

Внесём следующее содержимое:

server {

listen 80;

 

server_name <YOUR_DOMAIN>;

charset utf-8;

 

root /var/www/<YOUR_DOMAIN>/html;

index index.html index.htm;

 

access_log /var/log/nginx/<YOUR_DOMAIN>_access.log;

error_log /var/log/nginx/<YOUR_DOMAIN>_error.log;

}

       

Включим файл, создав симлинк в каталоге sites-enabled:

ln -s /etc/nginx/sites-available/YOUR_DOMAIN /etc/nginx/sites-enabled/


Проверим ошибки в конфигурационном файле Nginx:

nginx -t

                                                                                                                                       
Если ошибок нет, получим следующий вывод:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful


Перезапустим Nginx для применения новых параметров:      

systemctl restart nginx


Установка certbot

Прежде всего установим необходимое для работы с PPA программное обеспечение:

apt-get install software-properties-common

 Затем добавим нужный PPA:

add-apt-repository ppa:certbot/certbot

 Установим Certbot:

apt-get install certbot

   

Подготовка к получению сертификатов

В доступной для веб-сервера директории создадим отдельную папку letsencrypt, которую затем мы будем использовать для всех обслуживаемых доменов и установим ее владельцем веб-сервер:

mkdir /var/www/letsencrypt

chown www-data:www-data /var/www/letsencrypt

Теперь нам нужно сделать так, чтобы любой запрос вида:

http:// <your_domain>/.well-known/acme-challenge


Приводил к физическому размещению:

/var/www/letsencrypt/.well-known/acme-challenge


Отредактируем файл виртуального хоста:

nano /etc/nginx/sites-available/< YOUR_DOMAIN >

В секцию server добавим следующее содержимое:

server {

listen 80;

 

server_name <YOUR_DOMAIN>;

charset utf-8;

 

root /var/www/<YOUR_DOMAIN>/html;

index index.html index.htm;

 

access_log /var/log/nginx/<YOUR_DOMAIN> _access.log;

error_log /var/log/nginx/<YOUR_DOMAIN> _error.log;

 

location ^~ /.well-known/acme-challenge/ {

   default_type "text/plain";

   root /var/www/letsencrypt;

}

location = /.well-known/acme-challenge/ {

   return 404;

}

}

    
Дополнения выделены сиреневым цветом

Получение сертификата

Зарегистрируемся в certbot:

certbot register -m <АДРЕС ЭЛ. ПОЧТЫ>

   
Количество запросов на сертификат ограничено (20 запросов на регистрацию в неделю и 5 неудачных запросов в час), поэтому следует убедиться, что все сделано правильно. Для этого следует использовать возможность тестового запуска Certbot.

Выполним тестовое получение сертификата с помощью ключа --dry-run:

certbot certonly --dry-run --webroot -w /var/www/letsencrypt -d <YOUR_DOMAIN>

   
При успешном прохождении теста получим следующий вывод:


Теперь получим сертификат:

certbot certonly --webroot -w /var/www/letsencrypt -d <YOUR_DOMAIN>

   

В каталоге /etc/letsencrypt/live будет создана папка с именем указанного для генерации сертификата домена. Внутри будут находиться четыре файла:

·        cert.pem - сертификат

·        chain.pem - цепочка доверия, включает корневой и промежуточный сертификаты Let's Encrypt

·        fullchain.pem - полная цепочка, включающая кроме содержимого chain.pem сам сертификат

·        privkey.pem - закрытый ключ сертификата.


Нас интересуют двое последних, пути именно к этим файлам мы будем указывать при настройке всех сервисов для подключения по защищённому протоколу.


Автоматическое обновление сертификатов Certbot

Certbot разрешает обновлять сертификат не чаще 5-ти раз в неделю, поэтому, как и при получении сертификата, так и при его обновлении стоит сначала осуществить тестовый запуск.

Проверим возможность продления командой:

certbot renew --dry-run

   
Успешный вывод:

31.png

И так, сертификат создан и успешно проходит проверку на обновление, теперь для автоматизации процесса обновления, создадим сервис файл certbot-renewal.service и таймер для него certbot-renewal.timer.

Для создания сервисных файлов можно использовать редактор vi или nano.

Создадим certbot-renewal.service:

vi /etc/systemd/system/certbot-renewal.service


   
Список команд, которые потребуются для управления редактором vi:

“ i ” – переход в режим ввода;

“ ESC ” – выход из режима ввода;

“ Shift + : ” – переход в режим ввода команд;

“ q “ – выход без сохранения (работает только если не было внесено никаких изменений);

“ q! “ – выход без сохранения с игнорированием внесённых изменений;

“ wq “ – выход с сохранением внесённых изменений.


Добавим в файл следующее содержимое:

[Unit]

Description=Certbot Renewal

 

[Service]

ExecStart=/usr/bin/certbot renew --force-renewal --post-hook "systemctl reload nginx.service"

Такие настройки будут запускать certbot с командой обновления renew, для обновления нашего сертификата, и двумя флагами:

“ --force-renewal “ – отключает проверку устаревания сертификатов и принудительно обновляет их;

“ --post-hook “ – выполнение указанного действия, в нашем случае, перезагрузка сервиса Nginx.


Создадим certbot-renewal.timer:

vi /etc/systemd/system/certbot-renewal.timer


Добавим в файл следующее содержимое:

[Unit]

Description=Timer for Certbot Renewal

 

[Timer]

OnBootSec=300

OnUnitActiveSec=1w

 

[Install]

WantedBy=multi-user.target

   

Такие настройки будут запускать обновление SSL-сертификата раз в неделю, не раньше, чем через 300 секунд с момента включения сервера.


Включим таймер, чтобы он начал свой отсчёт:

systemctl start certbot-renewal.timer

Настроим автоматическое включение таймера на случай перезапуска сервера:

systemctl enable certbot-renewal.timer

Заглянем в статус таймера, чтобы узнать, когда было последнее обновление SSL-сертификата и когда планируется следующее:

systemctl status certbot-renewal.timer

   
32.png

У меня таймер был уже настроен, поэтому вывод показывает, что последний запуск был день назад, а следующий планируется через пять.


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


3.    Настройка подключения сервера взаимодействия 1С по защищённому протоколу https

 

Для настройки защищённого подключения, необходимо создать хранилище ключей в формате JKS и импортировать в него полученный нами в предыдущем шаге сертификат.


Создадим каталог для хранилища ключей JKS: 

mkdir –p /var/cs/cs_instance/data/security

Для того, чтобы импортировать сертификат fullchain.pem и закрытый ключ privkey.pem в хранилище JKS, объединим их в единый файл PKCS12 с помощью утилиты OpenSSL, по умолчанию входящей в стандартный пакет программ Ubuntu Server 22.04, и сохраним его в созданный в предыдущем шаге каталог:

openssl pkcs12 -export -in /etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem -inkey /etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem -out /var/cs/cs_instance/data/security/pkcs.p12 -name letsencrypt

       

Теперь в каталоге /var/cs/cs_instance/data/security, появился файл pkcs.p12.

Сгенерируем хранилище ключей JKS с импортированным файлом pkcs.p12:

keytool -importkeystore -destkeystore /var/cs/cs_instance/data/security/websocket-keystore.jks -srckeystore /var/cs/cs_instance/data/security/pkcs.p12 -srcstoretype PKCS12 -alias letsencrypt

Рекомендуется назвать хранилище ключей websocket-keystore.jks

Включим режим защищённого подключения wss для сервера взаимодействия 1С:

ring cs --instance cs_instance websocket set-params --wss true

Добавим параметр с прописанным путём к хранилищу ключей:

ring cs --instance cs_instance websocket set-params --keystore-path /var/cs/cs_instance/data/security/websocket-keystore.jks

Добавим параметр с указанным к хранилищу ключей паролем:

ring cs --instance cs_instance websocket set-params --keystore-password <ПАРОЛЬ ОТ ХРАНИЛИЩА>

Добавим параметр с прописанным форматом JKS нашего хранилища:

ring cs --instance cs_instance websocket set-params --keystore-format JKS

На этом 3-й шаг установки завершён, теперь сервер взаимодействия 1С будет работать по защищённом протоколу https.  


4.    Настройка сайта для подключения внешних пользователей 1С

 

Для добавления в обсуждения внешних пользователей 1С, необходимо настроить специальный сайт, который устанавливается вместе с сервером взаимодействия 1С, и находится в следующем каталоге: /opt/1C/1CE/components/1c-cs-site-0.2.11-x86_64. Внешние пользователи будут использовать сайт как клиент системы взаимодействия. Сайт будет настраиваться на основе виртуального хоста Nginx, настройка которого была показана во 2-м шаге.


Включим HTTPS профиль для Nginx и добавим 443 порт в firewall:

ufw allow 'Nginx HTTPS'

ufw allow 443


Откроем файл нашего виртуального хоста:

vi /etc/nginx/sites-available/<YOUR_DOMAIN>

   
Внесём в файл следующие изменения:

server {

listen 80;

listen 443 ssl;

server_name janus.koderline-soft.ru;

charset utf-8;

 

root /opt/1C/1CE/components/1c-cs-site-0.2.11-x86_64;

index index.html index.htm;

 

access_log /var/log/nginx/janus.koderline-soft.ru_access.log;

error_log /var/log/nginx/janus.koderline-soft.ru_error.log;

 

location ^~ /.well-known/acme-challenge/ {

   default_type "text/plain";

   root /var/www/letsencrypt;

}

location = /.well-known/acme-challenge/ {

   return 404;

            }

ssl_certificate /etc/letsencrypt/live/janus.koderline-soft.ru/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/janus.koderline-soft.ru/privkey.pem;

include /etc/letsencrypt/options-ssl-nginx.conf;

ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

}


Изменения выделены сиреневым цветом.

В файл виртуального хоста были добавлены: дополнительный прослушиваемый https порт 443, пути к сертификатам и конфигурационным файлам с настройками для работы по защищённому протоколу, а также был изменён путь к html файлу. В каталоге сайта хранится файл index.html, при обращении через браузер к виртуальному хосту, Nginx должен отдать его просто как статику, дальше index.html запустится в браузере пользователя и на базе адреса сервера взаимодействия 1С в config.json сам установит соединение с сервером взаимодействия 1С.


Отредактируем файл config.json:

vi /opt/1C/1CE/components/1c-cs-site-0.2.11-x86_64/config.json

 Пропишем в поле Server URL адрес подключения к серверу взаимодействия 1С:

{

            "serverURL": "wss://<ИМЯ_ДОМЕНА>:<ПОРТ>",

            "VAPIDPublicKey": "****************************************************************"

}

Введём адрес нашего виртуального хоста в браузере и убедимся, что сайт отдаёт статику с index.html



Получим следующий вывод.

Подключим сайт к серверу взаимодействия 1С:

ring cs --instance cs_instance site set-params --public-url https://<ИМЯ_ДОМЕНА>

   

4-й шаг установки завершён, и в системе взаимодействия теперь доступна функция приглашения в обсуждения внешних пользователей.  

 

5.    Установка и настройка хранилища файлов MinIO

 

Установка и настройка сервера MinIO

Загрузим двоичный файл сервера Minio с официального сайта:

wget https://dl.min.io/server/minio/release/linux-amd64/minio

После завершения загрузки в рабочем каталоге появится файл minio. Используем следующую команду, чтобы сделать файл исполняемым:

sudo chmod +x minio

Теперь переместим файл в каталог /usr/local/bin, где его будет искать сценарий запуска systemd для MinIO:

mv minio /usr/local/bin

   
Благодаря этому мы позже сможем написать юнит-файл, чтобы автоматически запускать Minio при запуске системы.

Создадим пользователя, от которого будет запускаться сервер MinIO:

sudo useradd -r minio_user -s /sbin/nologin

   

В этой команде есть флаг -s, он устанавливает /sbin/nologin в качестве оболочки для minio-user. Это оболочка, которая не позволяет пользователю входить в систему т.к. пользователю minio_user этого делать не нужно.


Изменим владельца двоичного файла Minio, передав права собственности пользователю minio_user:

sudo chown minio_user:minio_user /usr/local/bin/minio

Далее создадим каталог, в котором Minio будет хранить файлы:

sudo mkdir /usr/local/share/minio

Передадим права собственности на этот каталог пользователю minio:

sudo chown minio_user:minio_user /usr/local/share/minio

Большинство конфигурационных файлов сервера хранятся в каталоге /etc. Создадим в нем конфигурационный файл Minio:

sudo mkdir /etc/minio

Сделаем пользователя minio-user владельцем этого файла:

sudo chown minio_user:minio_user /etc/minio

Создадим конфигурационный файл MinIO:

nano /etc/default/minio

Добавим следующее содержимое:

MINIO_ACCESS_KEY="ЛОГИН_MinIO"

MINIO_VOLUMES="/usr/local/share/minio/"

MINIO_OPTS="-C /etc/minio --address <IP_АДРЕС_СЕРВЕРА>:<ПОРТ_MinIO>"

MINIO_SECRET_KEY="ПАРОЛЬ_MinIO"

   

Добавление MinIO в автозагрузку

Загрузим официальный файл сервиса Minio:

curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service

После завершения загрузки в рабочем каталоге будет файл по имени minio.service

Переместим файл minio.service в каталог /etc/system/system:

mv minio.service /etc/systemd/system

Перезагрузим все юниты systemd:

systemctl daemon-reload

Включим сервис MinIO, чтобы добавить его в автозагрузку:

systemctl enable minio

Запустим сервис MinIO:

systemctl start minio

Проверим состояние сервиса MinIO: 

systemctl status minio

   
Получим примерно следующий вывод:



Откроем порт MinIO в брандмауэре:

ufw allow <ПОРТ_MinIO>


Настройка подключения MinIO по защищённому протоколу https

Для обеспечения работы серверa MinIO по защищённому протоколу, необходимо скопировать сгенерированные ранее файлы fullchain.pem и privkey.pem в каталог /etc/minio/certs


Скопируем и переименуем файлы fullchain.pem и privkey.pem:

cp /etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem /etc/minio/certs/public.cert

cp /etc/letsencrypt/live/YOUR_DOMAIN/prickey.pem /etc/minio/certs/private.key

Дадим minio_user права на владения этими файлами:

chown minio_user:minio_user /etc/minio/certs/public.crt

chown minio_user:minio_user /etc/minio/certs/private.key

       
Перезапустим сервис MinIO для применения параметров:

systemctl restart minio

       

Создание контейнера cs-bucket

Введите адрес сервера MinIO и порт в адресной строке браузера:

https://<YOUR_DOMAIN>:<ПОРТ_MinIO>

   
Войдите с помощью данных, указанных в полях MINIO_ACCESS_KEY и MINIO_SECRET_KEY при создании конфигурационного файла MinIO

 


 

Далее необходимо перейти во вкладку Bucket на панели администратора, создать контейнер с именем cs-bucket, а затем поменять права доступа на public.

                                            

40.png

                

Подключение MinIO к серверу взаимодействия 1C

Хранилище файлов MinIO установлено и настроено, осталось только подключить его к серверу взаимодействия 1C, на портале ИТС 1C предлагается сделать это с помощью утилиты curl.



Но как я не пытался, подключить MinIO таким способом у меня не вышло. В конечном счёте, я сделал это скриптом postgresql напрямую в базу cs_db, с помощью программы DBeaver, через мой ПК на Windows.


Перед подключением к cs_db через DBeaver, необходимо разрешить внешние подключения для posgtresql.

Перейдём в папку, где хранятся нужные нам конфигурационный файлы для postgre:

/etc/postgresql/12/main


Отредактируем файл postgresql.conf:

nano postgresql.conf

Найдём в файле параметр listen_addresses, раскомментируем его и изменим значение localhost на *

111.png


Вышеуказанное изменение позволяет Postgres прослушивать любые IP-адреса.

Отредактируем файл pg_hba.conf:

nano pg_hba.conf

Найдите параметр:

# IPv4 local connections:

host     all      all    127.0.0.1/32    md5

И измените его на:

# IPv4 local connections:

host     all      all    0.0.0.0/0   md5

Сохраним и закроем файл.

Вышеуказанное изменение позволит всем клиентам подключаться к Postgres.

Перезапустим postgresql, чтобы изменения вступили в силу:

sudo service postgresql stop

sudo service postgresql start

   

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

Лично я пользуюсь DBeaver версии 6.3.5, чтобы скачать его перейдите по ссылке https://dbeaver.io/files/6.3.5/ и выберите из списка следующий файл dbeaver-ce-6.3.5-x86_64-setup.exe, затем запустите и установите его.

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



 

Далее в меню База данных выберите пункт Новое соединение:

 

 

В открывшемся окне выберите тип подключения PostgreSQL и нажмите Далее:


  


Пример заполнения полей для подключения к базе cs_db:

 



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


После подключения к базе она отобразится в поле Базы данных, нам необходимо выделить её однократным нажатием ЛКМ, а затем выбрать Новый Редактор SQL из меню Редактор SQL




В открывшемся редакторе введите следующий скрипт, подставив свои значения в требуемые поля:

INSERT INTO public.storage_server (id, type, base_url, container_url, container_name, region, access_key_id, secret_key, signature_version, is_deleted, upload_limit, download_limit, file_size_limit, created_at, updated_at, cdn_url, cdn_key_id, cdn_secret_key, state, cdn_enabled, path_style_access_enabled, bytes_to_keep, days_to_keep, pricing_url, api_type, storage_type, files_to_keep)

VALUES(

uuid_generate_v4(), 'AMAZON', 'https://<YOUR_DOMAIN>:<ПОРТ_MinIO>','https:// <YOUR_DOMAIN>:<ПОРТ_MinIO>/cs-bucket',

'cs-bucket',

'',

'Логин_ MinIO',

'Пароль_MinIO',

'V2', false, 1073741824, 1073741824, 1048576000, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, NULL, NULL, 'ACTIVE', false, true, 0, 3200, NULL,'AMAZON','DEFAULT',1073741824);

      

Выполните запрос сочетанием клавиш Ctrl+Enter.  

На этом 5-й шаг установки завершён, теперь в системе взаимодействия доступна функция обмена файлами.


6.    Установка и настройка stun сервера Coturn

 

Если для проведения видеоконференций будет использоваться медиасервер janus, то можете пропустить этот шаг установки и сразу перейти к следующему, т.к. stun сервер необязателен в случае использования janus, и настраивается только в том случае, если в видеоконференциях будет принимать участие не более 10-ти человек. Но, в целях ознакомления, я всё же разберу установку и настройку этого сервиса.

Установим coturn:

apt-get install coturn


Отредактируем файл turnserver.conf:

vi /etc/turnserver.conf


Найдём и изменим следующие параметры:

listening-port = 3478

listening-ip = <YOUR_SERVER_IP>

 

#relay-ip=0.0.0.0

external-ip = <YOUR_SERVER_IP>

 

min-port=49152

max-port=65535

 

no-stdout-log

syslog

 

no-tcp

no-tls

no-tcp-relay

stun-only

#secure-stun


Откроем порты 3478 и 3479, а также диапазон UDP портов 49152-65535:

ufw allow 3478

ufw allow 3478

ufw allow 49152:65535/udp

   

Запустим Coturn как сервис:

vi /etc/default/coturn

 
Добавим в файл следующее содержимое:

# Uncomment it if you want to have the turnserver running as

# an automatic system service daemon

#

TURNSERVER_ENABLED=1


Проверим запущен ли сервис:

service coturn status

Получим следующий вывод:



Проверить работает ли stun сервер можно с помощью утилиты NatTypeTester. Скачиваем программу по ссылке: https://github.com/HMBSbige/NatTypeTester/releases, затем распаковываем zip архив и запускаем.




В поле STUN server вводим IP адрес сервера и нажимаем кнопку Test, после чего поля Local end и Public end должны будут автоматически заполниться.


Пропишем stun server в сервер взаимодействия командой:

curl -Sf -X POST -H "Content-Type: application/json" -d "{ \"url\" : \"stun::3478\", \"username\" : \"\", \"password\" : \"\", \"enabled\" : true }" -u admin:admin http://localhost:8087/admin/ice_server

6-й шаг установки завершён, теперь в системе взаимодействия есть возможность проводить видеоконференции до 10-ти человек.  


7.    Установка и настройка медиасервера Janus

 

Для проведения видеоконференций с количеством участников более 10-ти человек, необходимо подключить к серверу взаимодействия медиасервер janus.


Установим и запустим janus:

apt install janus

janus


Создадим папку для хранения лога:

mkdir /var/log/janus


Создадим папку для хранения лога:

vi /etc/janus/janus.jcfg


Найдём, раскомментируем и изменим следующие параметры:

admin_secret = пароль администратора

event_loops = количество ядер

min_nack_queue = 500

rtp_port_range = "49152-65535"

no_media_timer = 2

opaqueid_in_api = true

cert_pem = "/etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem"

cert_key = "/etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem"

log_to_stdout = false

log_lo_file = /var/log/janus/janus.log

Отредактируем файл janus.plugin.videoroom.jcfg:

vi /etc/janus/janus.plugin.videoroom.jcfg

Раскомментируем и изменим следующий параметр:

string_ids = true

Для работы janus, необходимо открыть все UDP порты или указать диапазон открытых UDP портов в параметре rtp_port_range, в моём случае это диапазон значений "49152-65535".


Открыть UDP порты можно следующей командой:

ufw allow 49152:65535/udp


Отредактируем файл janus.transport.http.jcfg:

vi /etc/janus/janus.transport.http.jcfg

Найдём, раскомментируем и изменим следующие параметры:

https = true

secure_port = 8089

 

cert_pem = "/etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem"

cert_key = "/etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem"


Отредактируем файл janus.transport.websockets.jcfg:

vi /etc/janus/janus.transport.websockets.jcfg


Найдём, раскомментируем и изменим следующие параметры:

wss = true

wss_port = 8989

 

cert_pem = "/etc/letsencrypt/live/YOUR_DOMAIN/fullchain.pem"

cert_key = "/etc/letsencrypt/live/YOUR_DOMAIN/privkey.pem"

Если настраивать janus на работу по https не нужно, то оставьте параметры cert_pem и cert_key в файле janus.jcfg по умолчанию, а также не редактируйте файлы janus.transport.http.jcfg и janus.transport.websockets.jcfg.


Настроим Janus в качестве службы создав файл janus.service:

vi /etc/janus/janus.transport.websockets.jcfg

   
Добавим в файл следующее содержимое:

[Unit]

Description=Janus WebRTC Server

After=network.target

[Service]

Type=simple

ExecStart=/usr/bin/janus -o

Restart=on-abnormal

LimitNOFILE=65536

[Install]

WantedBy=multi-user.target


Включим и запустим службу janus.service:

systemctl enable janus.service

systemctl start janus.service

Проверим, запустилась ли служба janus.service:

systemctl status janus.service

   

Получим следующий вывод:

112.png


Откроем порты необходимые для работы janus:

ufw allow 8088

ufw allow 8089

ufw allow 8188

ufw allow 8989

Проверить работоспособность медиасервера janus можно следующей командой:

curl https://<YOUR_DOMAIN>:8089/janus/info

   
В результате получим полную информацию о конфигурации медиасервера.

Подключим janus к серверу взаимодействия 1C:

curl -Sf -X POST -H 'Content-Type: application/json' -d '{ "url": "https://:8089", "name": "Janus 1", "confereeLimit": 1000, "enabled": true }' -u admin:admin http://localhost:8087/admin/media_server


Пример успешного ответа:

{"id":"f4ba9f08-5925-4b71-850b-d353c2ebd38f","name":"Janus 1","url":"http://<YOUR_DOMAIN>:8089/janus/","enabled":true,"confereeLimit":1000,"onlineConferee":0,"lockKey":"MediaServer: f4ba9f08-5925-4b71-850b-d353c2ebd38f","deleted":false}

     
Настроим видеоконференции в системе взаимодействия, отредактировав файл video.yml:

vi /var/cs/cs_instance/config/video.yml


Приведём файл к виду:

video:

enabled: true

conference-server-based-member-limit: 230

conference-server-based-threshold: 3

max-bandwidth: 2000

max-reference-width: 1280

max-reference-height: 720

max-reference-fps: 30

<conference-server-based-member-limit> – максимальное количество участников в конференции;

<conference-server-based-threshold> – количество участников, после которого связь начинает осуществляться через медиасервер janus.


На этом 7-й шаг установки завершён. Теперь в системе взаимодействия доступна возможность проведения видеоконференций с количеством участников свыше 10-ти человек.  


8.    Подключение системы взаимодействия к платформе 1С

 

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


Подключение осуществляется с помощью обработки CollaborationSystemRegister, скачаем её по ссылке: https://releases.1c.ru/version_file?nick=CollaborationSystem&ver=7.0.25&path=CollaborationSystem\7_0_25_\CollaborationSystemRegister.epf.

 

Откроем приложение 1С, перейдём во вкладку Сервис и настройки, затем выберем Файл – Открыть.



Сервис и настройки

 

Найдите и откройте загруженную ранее обработку, а затем выполните подключение, заполнив поля как в нижеуказанном примере:


Регистрация системы взаимодействия


Если всё установлено и настроено корректно, получим сообщение об успешной регистрации системы взаимодействия.



Сообщение об успешной регистрации системы взаимодействия 


Система взаимодействия успешно подключена к платформе 1С:Предприятие.

 

Специалист компании ООО "Кодерлайн"

Артем Слатин

Наши проекты

Автоматизации учета затрат и расчета себестоимости с использованием конфигурации «Koderline: Управление проектами строительства скважин»
ООО «Буровая сервисная компания «ГРАНД»

Отрасль:
Нефтесервис

Внедренное типовое решение:
«Koderline: Управление проектами строительства скважин»

Учет и планирование:
- собственную разработку компании «Кодерлайн» – конф...

ООО «Фипар»
ООО «Фипар»

Отрасль:

Внедренное типовое решение:
1С:Предприятие 8. ERP Управление предприятием 2

Специалисты «Кодерлайн» внедрили «1С:ERP. Управление предприятием 2» и автома...

Внедрение ПП "1С:Бухгалтерия 8 ПРОФ" в ООО «Союз Три» (Кондитерский дом Renardi)
ООО «Союз Три»

Отрасль:
Производство

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Бухгалтерский учет
- Банк и касса
- Расчеты с контрагентами
Налоговый ...

ООО "ТК "Сытый Дом-НН"
ООО "ТК "Сытый Дом-НН"

Отрасль:
Торговля, склад, логистика, транспорт

Внедренное типовое решение:
1С:Управление торговлей 8

Взаиморасчеты с покупателями
Оптовая торговля
Управление складскими за...

ООО "НЦКТ"
ООО "НЦКТ"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:Управление нашей фирмой 8 ПРОФ

Взаиморасчеты с покупателями
Автоматизация бизнес-процессов...

Фармацевтическое предприятие «Оболенское»
АО «Фармацевтическое предприятие «Оболенское»

Отрасль:
Фармацевтическая промышленность

Внедренное типовое решение:
1С:Управление производственным предприятием

- Адаптации блоков/подсистем планирования продаж, закупок и казначейства. ...

Внедрение ПП "1С:Корпоративный инструментальный пакет 8" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

Отрасль:
Производство

Внедренное типовое решение:
1С:Предприятие 8. ERP Управление предприятием 2

Различная отраслевая специфика:
- Переработка давальческого сырья
- Уче...

Внедрение ПП "1С:CRM ПРОФ" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

Отрасль:
Производство

Внедренное типовое решение:
1С:CRM ПРОФ

- Управление отношениями с клиентами (CRM) ...

Доработка конфигурации Заказчика «1С:Управление строительной организацией»
ЗАО «Стройтрансгаз»

Отрасль:
Проектирование

Внедренное типовое решение:
1С:Управление строительной организацией

Взаиморасчеты с поставщиками;
- Оформление заказов поставщикам;
- Склад ...

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

Внедренное типовое решение:
1С:Управление торговлей

Оформление заказов поставщикам Оформление заказов покупателей Управление ...

Внедрение ПП "1С:Управление небольшой фирмой 8 ПРОФ" в
ИП Любо Виктория Александровна (ООО «Рекреация»)

Отрасль:
Производство

Внедренное типовое решение:
1С:Управление небольшой фирмой 8 ПРОФ

Осуществлены разработки:
– отчета по спецификации Заказа;
– загрузки сп...

ООО ХДМ Рус
ООО ХДМ Рус

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

Управление цепочками поставок Оптовая торговля ...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение