Содержание:
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=Ваш_Путь.
Сохраним изменения и выйдем из редактора 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_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С сервер взаимодействия запущен и работает:
Пример успешного ответа:
|
{"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 адрес или домен в браузер:
На экране появится стандартная страница 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 |
Успешный вывод:
И так, сертификат создан и успешно проходит проверку на обновление, теперь для автоматизации процесса обновления, создадим сервис файл 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 |

У меня таймер был уже настроен, поэтому вывод показывает, что последний запуск был день назад, а следующий планируется через пять.
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.
Подключение 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 на *
Вышеуказанное изменение позволяет 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 |
Получим следующий вывод:
Откроем порты необходимые для работы 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С:Предприятие.
Специалист компании ООО "Кодерлайн"
Артем Слатин






















