Pull to refresh

В облаке, как дома: Устраиваемся поудобнее. Рабочее место пользователя 1С на базе РЕД ОС (HTTPS и архивирование)

Level of difficultyEasy
Reading time6 min
Views6.9K
На прошедшем вебинаре «В облаке, как дома: Как настроить рабочее место пользователя 1С на базе РЕД ОС» мы договорились, что продолжением будет установка соединения по HTTPS и архивирование. Это финальные штрихи в настройке рабочего места. Вот и оно (продолжение) или они (штрихи), прошу под кат…


кто не смотрел начальный вебинар, может заглянуть.

Статья ориентирована на компании 50+- пользователей, а возможно 1+-, без сложных сетей.


Тем не менее, если уровень вебинара был в терминологии изучения английского языка Basic, то для этой статьи уровень Pre-Intermediate.


Это значит, что некоторые вещи могут не получаться так как показано в публикации и вам придется немного погуглить, особенно если вы выберете другой путь получения доменного имени.
Но так же как и в начальном вебинаре, если аккуратно копировать команды, то все получится возможно с первого раза и за то же самое время.


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

Что получится в результате:
  • Вы сможете подключиться к развернутому в облаке рабочему месту по защищенному протоколу.

  • У вас будут по расписанию создаваться архивы в облако Яндекс Диск



Приступим


Первым делом (в том случае если вы произвели все действия начального вебинара и у вас уже есть работающий сервер 1С с опубликованной базой) нужно получить имя домена на которое будем получать бесплатный сертификат Let's Encrypt.

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

Для остальных напомню, что Let's Encrypt предоставляет бесплатный сертификат на 90 дней в первую очередь для удостоверения подлинности владения доменом. Это нам полностью подходит для нашей задачи.

Доменное имя мы получим так же бесплатно на сервисе duckdns, он хорош еще тем, что позволяет авторизовываться через github и имеет API для управления записями TXT DNS, а это именно тот способ подтверждения владения доменом для Let's Encrypt который нам нужен.

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



Это некоторый предварительные действия после выполнения которых можно переходить в консоль сервера.

Команды консоли будут выделены курсивом.

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


Для этого через менеджер пакетов snap установим certbot и плагин certbot-dns-duckdns.

yum install snapd -y
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap

ln -s /snap/bin/certbot /usr/bin/certbot
snap install certbot --classic


snap install certbot-dns-duckdns
snap set certbot trust-plugin-with-root=ok
snap connect certbot:plugin certbot-dns-duckdns
certbot plugins




После этого достаточно длинной строкой получаем сертификат, ее краткий смысл: плагин создает запись TXT для нашего домена по запросу Let's Encrypt.

certbot certonly --non-interactive --agree-tos --email serverspace.1c@yandex.ru  --preferred-challenges dns  --authenticator dns-duckdns  --dns-duckdns-token "3297727f-e3cb-4e15-8ad4-a954311f957a" --dns-duckdns-propagation-seconds 30  -d "serverspace1c.duckdns.org, *.serverspace1c.duckdns.org"

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

Посмотреть TXT записи можно сервисом www.digwebinterface.com



Очистить TXT записи можно запросом к API вида 

www.duckdns.org/update?domains=serverspace1c.duckdns.org&token=3297727f-e3cb-4e15-8ad4-a954311f957a&txt=txt&verbose=true&clear=true

где токен, это ваш токен и нас интересует окончание &clear=true

После этого можно повторить запрос и успешно получить сертификат.



Устанавливаем nginx


dnf install nginx -y
systemctl enable nginx --now


И правим его конфигурацию.

Заманчиво редактировать /etc/nginx/nginx.conf  т.к. в нем уже есть но закомментирована часть для HTTPS, но это не комильфо.

Гораздо правильнее скопировать его в каталог /etc/nginx/conf.d и удалить лишнее, оставив настройку HTTPS и добавив пути к полученному сертификату и перенаправление запросов на наш сервер 1С.

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



Settings for a TLS enabled server

# Settings for a TLS enabled server.



    server {
        listen       443 ssl;
        listen       [::]:443 ssl;
        server_name  serverspace1c.duckdns.org;
        root         /usr/share/nginx/html;



        ssl_certificate /etc/letsencrypt/live/serverspace1c.duckdns.org/fullchain.pem; 
        ssl_certificate_key /etc/letsencrypt/live/serverspace1c.duckdns.org/privkey.pem; 



        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;



        # Load configuration files for the default server block.
        # include /etc/nginx/default.d/*.conf;



        error_page 404 /404.html;
        location = /404.html {
        }



        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
        location /edo_demo {
        proxy_pass localhost:8314/edo_demo;
        }   
}




Желательно перед перезапуском nginx проверить, что все без ошибок.

nginx -t
systemctl restart nginx
systemctl status nginx --no-pager


На это все. Публикация HTTPS выполнена. Надо добавить правило SeLinux и перезагрузить сервер для верности

setsebool -P httpd_can_network_connect 1



Устанавливаем Яндекс Диск по инструкции с официального сайта

wget -dv repo.yandex.ru/yandex-disk/yandex-disk-latest.x86_64.rpm
rpm -ivh yandex-disk-latest.x86_64.rpm
yandex-disk setup




Желательно еще поправить его файл конфигурации, чтобы не синхронизировать лишние каталоги, добавив в него exclude-dirs=<каталоги которые не надо синхронизировать>.

yandex-disk start
yandex-disk status
yandex-disk stop



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

Скрипты

backup.sh



#!/bin/bash
declare -r DIRNAME=${BASH_SOURCE[0]}
if [ $# -lt 2 ] 
  then
    echo "No arguments supplied"
else
  tar cfz $1/$2_backup_$(date +%Y_%m_%d_%H_%M_%S).tar.gz ${DIRNAME%/*/*}/bases/$2/* --ignore-failed-read > /dev/null 2>&1
fi  



yandex-disk.sh



#!/bin/bash
yandex-disk sync -c /root/.config/yandex-disk/config.cfg > /dev/null 2>&1



Проверяем что все работает в командной строке:

mkdir -p /1c/scripts
chmod -R +777 /1c
chmod +x /1c/scripts/*.sh


/1c/scripts/backup.sh /root/Yandex.Disk/backups/ edo_demo
yandex-disk sync




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

timedatectl
timedatectl list-timezones
timedatectl set-timezone Europe/Moscow


mcedit /etc/crontab
30 20 * * * root /1c/scripts/backup.sh /root/Yandex.Disk/backups/ edo_demo
35 20 * * * root /1c/scripts/yandex-disk.sh
43 6 2 */2 * certbot renew --post-hook "systemctl reload nginx"


systemctl restart crond.service
systemctl status crond.service --no-pager


На этом все цели поставленные в вебинаре достигнуты.





Статья продолжает серию публикаций:

Благодарю компанию ©Serverspace за предоставленное оборудование.

Из планов развития как обычно два варианта на выбор:
  • Методы работы и возможности автономного сервера платформы 1С
  • Собрать небольшой домен и рассмотреть доменную авторизацию

Голосование в комментариях.
Tags:
Hubs:
Total votes 4: ↑3 and ↓1+2
Comments12

Articles