# [1С:Предприятие. Облачная подсистема Фреш](https://v8.1c.ru/tekhnologii/1cfresh/o-tekhnologii/ "1С:Предприятие. Облачная подсистема Фреш") в Docker Позволяет в течении ~30 минут развернуть рабочий стенд облачной подсистемы Фреш с использованием технологии docker. Может пригодиться для: - Разработки конфигурации которая должна работать в облаке - Разработки самой технологии Фреш - Тестирования средств адаптации конфигураций - Так же Фреш можно использовать для централизированной поддержки информационных баз, планирования обновлений, обновления, завершения работы пользователей. - и т.д. ## Видеоинструкция [![Click to go to video](https://i.ibb.co/JcZXS3Q/1.png)](http://www.youtube.com/watch?v=0GESUCIFXwI) ## Системные требования - Оперативная память от 4Гб - лучше от 8Гб - Свободное место от 50Гб - Необходимое ПО: - [Python 3+](https://www.python.org/downloads/ "Python 3+") - [Docker. Инструкция по установке](https://docs.docker.com/engine/install/ "Docker. Инструкция по установке") - [Docker Compose. Инструкция по установке](https://docs.docker.com/compose/install/ "Docker Compose. Инструкция по установке") ## Использование команды docker без sudo на linux Для использования на ОС симейства linux команды docker без sudo необходимо добавить пользователя в группу docker. ```bash sudo usermod -aG docker ${USER} ``` ## Дистрибутивы необходимые для развертывания Для развертывания стенда потребуются дистрибутивы платформы 1С Предприятие и подсистемы Фреш - [Платформа 1С Предприятие 8.3](https://releases.1c.ru/project/Platform83 "Платформа 1С Предприятие 8.3") требуется два файла - Клиент 1С:Предприятия (64-bit) для RPM-based Linux-систем - Cервер 1С:Предприятия (64-bit) для RPM-based Linux-систем - [Дистрибутивы компонентов 1cFresh](https://releases.1c.ru/project/FreshPublic "Дистрибутивы компонентов 1cFresh") - Сайт 1cFresh - Форум 1cFresh - Шлюз приложений для DEB-based Linux-систем - Конфигурация **Менеджер сервиса** - Конфигурация **Агент сервиса** - Конфигурация **Менеджер доступности** - [1С:Библиотека технологии сервиса, редакция 1.2](https://releases.1c.ru/version_files?nick=SMTL12&ver=1.2.2.26 "1С:Библиотека технологии сервиса, редакция 1.2") или [1С:Библиотека технологии сервиса, редакция 2.0](https://releases.1c.ru/project/SMTL20 "1С:Библиотека технологии сервиса, редакция 2.0") ##### Компоненты используемые для тестирования - [1С Предприятие 8.3.15.1869](https://releases.1c.ru/version_files?nick=Platform83&ver=8.3.15.1869 "1С Предприятие 8.3.15.1869") - [Клиент 1С:Предприятия (64-bit) для RPM-based Linux-систем](https://releases.1c.ru/version_file?nick=Platform83&ver=8.3.15.1869&path=Platform\8_3_15_1869\client_8_3_15_1869.rpm64.tar.gz "Клиент 1С:Предприятия (64-bit) для RPM-based Linux-систем") - [Cервер 1С:Предприятия (64-bit) для RPM-based Linux-систем](https://releases.1c.ru/version_file?nick=Platform83&ver=8.3.15.1869&path=Platform\8_3_15_1869\rpm64_8_3_15_1869.tar.gz "Cервер 1С:Предприятия (64-bit) для RPM-based Linux-систем") - [1С:Предприятие. Облачная подсистема Фреш 1.0.28.1](https://releases.1c.ru/version_files?nick=FreshPublic&ver=1.0.28.1 "1С:Предприятие. Облачная подсистема Фреш 1.0.28.1") - [Сайт 1cFresh 1.2.14.1](https://releases.1c.ru/version_file?nick=FreshPublic&ver=1.0.28.1&path=FreshPublic\1_0_28_1\Extrafiles\site_1.2.14.zip "Сайт 1cFresh 1.2.14.1") - [Форум 1cFresh 1.0.41.1](https://releases.1c.ru/version_file?nick=FreshPublic&ver=1.0.28.1&path=FreshPublic\1_0_28_1\Extrafiles\forum_1.0.41.zip "Форум 1cFresh 1.0.41.1") - [Шлюз приложений 1.1.1.8 для DEB-based Linux-систем ](https://releases.1c.ru/version_file?nick=FreshPublic&ver=1.0.28.1&path=FreshPublic\1_0_28_1\Extrafiles\appgate_1.1.1.8_1_all.deb "Шлюз приложений 1.1.1.8 для DEB-based Linux-систем ") - [Менеджер сервиса. Версия 1.0.94.20](https://releases.1c.ru/version_file?nick=FreshPublic&ver=1.0.28.1&path=SM\1_0_94_20\SM_1_0_94_20_setup1c.exe "Менеджер сервиса. Версия 1.0.94.20") - [Агент сервиса. Версия 1.0.29.4](https://releases.1c.ru/version_file?nick=FreshPublic&ver=1.0.28.1&path=SA\1_0_29_4\SA_1_0_29_4_setup1c.exe "Агент сервиса. Версия 1.0.29.4") - [Менеджер доступности. Версия 1.0.3.4](https://releases.1c.ru/version_file?nick=FreshPublic&ver=1.0.28.1&path=AM\1_0_3_4\AM_1_0_3_4_setup1c.exe "Менеджер доступности. Версия 1.0.3.4") - [1С:Библиотека технологии сервиса, редакция 1.2. Версия 1.2.2.26](https://releases.1c.ru/version_files?nick=SMTL12&ver=1.2.2.26 "1С:Библиотека технологии сервиса, редакция 1.2. Версия 1.2.2.26") ##### Для версий платформ начиная с 8.3.20 Необходимо так же [скачать](https://releases.1c.ru/project/EnterpriseLicenseTools) и разместить архив с утилитой лицензирования в каталог `/docker_fresh/distr/` ## 1. Подготовка к развертыванию Данный стенд для простоты развертывания использует домен 1cfresh-dev.ru и валидные, выданные let's encrypt сертификаты. Использование данного доменного имени и сертификатов может быть не безопасным, поэтому предлагается использовать их в только в целях тестирования и ознакомления. Для более надежного использования данного стенда, поменяйте в файле **start.py** доменное имя 1cfresh-dev.ru на имя вашего домена и разместите сертификаты в каталоге `/docker_fresh/certs/` ##### Клонирование репозитория ```bash git clone https://github.com/1C-Company/docker_fresh.git cd docker_fresh ``` ##### Размещение дистрибутитов Все ранее скачанные дистрибутивы необходимо разместить в каталоге `/docker_fresh/distr/`. После добавления всех дистрибутивов в каталог, он должен выглядить примерно следующим образом ![](https://i.ibb.co/S50sF96/2020-04-10-16-03-22.png) Файл **smtl.cf** это файл **demo/1cv8_service.cf** из комплекта поставки **1С:Библиотека технологии сервиса** Для **1С:Библиотека технологии сервиса** версии 2.0 и выше, нужно взять файл расширения из комплекта поставки **1cv8.cfe** или **fresh.cfe** и разместить его рядом с файлом **smtl.cf**, назвав **smtl.cfe** ##### Настройка списка создаваемых информационных баз В файле `/docker_fresh/other_files/params.json` расположен список информационных баз в формате **JSON** которые требуется создать - Информационная база **SM** всегда должна быть первой в списке - Для каждой базы необходимо прописать имя **CF** файла расположенного в каталоге`/docker_fresh/distr/` - В данный список можно добавить свои информационные базы ## При возникновении проблем при работе со скриптами start.py или install.py Выполните повторый запуск данной команды с ключем `-debug` сделайте скриншот результата и [зарегистрируйте ошибку](https://github.com/1C-Company/docker_fresh/issues/new/choose "зарегистрируйте ошибку") ##### Сборка образов Данный стенд содержит следующие контейнеры: - **centos** - является базовым образом для образов **core** и **db** - **core** - платформа 1С, клиентская и серверная часть. Дополнительно содержит **ring, onescript** - **db** - сервер баз дынных Postgres - **site** - компонент сайт Фреша - **forum** - компонент форум Фреша - **gate** - компонент шлюз приложений Фреша Сборка образов запускается командой ```bash sudo python3 install.py -v 8.3.15.1869 ``` **install.py** имеет возможность запуска с флагом **-debug**. При запуске с данным флагом весь процесс сборки будет подробно отображаться на экране. **-v** необходимо указать номер версии платформы дистрибутивы который вы скачали ## 2. Настройка лицензирования Для работы данного стенда необходимо два вида лицензий - Серверная - Клиентская На операционных системах семейства Linux поддерживается проброс HASP ключей в контейнеры. На остальных, работа возможна только с помощью программных лицензий или указания сервера лицензирования в файле **nethasp.ini** для получения клиентских лицензий. ### Проброс HASP ключей Проброс в контейнер выполняется в файле **docker-compose.yml** путем монтирования файла **/tmp/.aksusb** в контейнер **srv**(контейнер содержащий сервер 1С). Что бы данный файл появился необходимо установить драйвера для HASP ключей, скачать можно по [ссылке](https://supportportal.thalesgroup.com/csm?id=kb_search&query=kbcat_drivers_%26_runtime_packages "ссылке") выбрав подходящий для вашей ОС. ### Настройка nethasp.ini Файл расположен по пути `docker_fresh/conf/core/nethasp.ini`. Если вы хотите указать сервер с лицензиями нужно раскоментировать каждую строку в этом файле и вместо **server** указать имя реально существующего сервера ### Активация программных лицензий Активация программных лицензий выполняется с помощью утилиты **ring** которая присутствует в образе **core**. Пример строки активации лицензии ```bash docker run --rm -it -v /Users/wizaxxx/Documents/projects/docker_fresh/licenses_1c:/var/1C/licenses fresh/core bash -l -c 'ring license activate --first-name "myname" --middle-name "mymiddlename" --last-name "mylastname" --email "myemail@email.com" --country "Russia" --zip-code "101000" --town "Moscow" --street "mystree" --house "myhouse" --apartment "myapart" --serial "myRegNumber" --pin "MyPIN" --send-statistics "false"' ``` Где `-v /Users/wizaxxx/Documents/projects/docker_fresh/licenses_1c:/var/1C/licenses` является пробросом каталога с лицензиями `/var/1C/licenses` из контейнера в локальный каталог `/Users/wizaxxx/Documents/projects/docker_fresh/licenses_1c` для дальнейшего использования. Все остальный параметры заполняются согласно [документации](https://its.1c.ru/db/v8315doc#bookmark:adm:TI000000683 "документации") утилиты **ring** ## 3. Запуск стенда ### Создание нового стенда Запуск стенда выполняется командой ```bash sudo python3 start.py -new -h mystandname ``` Флаг **-new** сообщает скрипту что требуется именно создать новый стенд а не запускать существующий. Параметр **-h** используется для указания наименования и адреса по которому стенд будет доступен. Если указать значение параметра **-h** mystand тогда адрес сайта будет **https://mystand.1cfresh-dev.ru**. Скрипт **start.py** имеет возможность запуска с флагом **-debug**. При запуске с данным флагом весь процесс запуска будет подробно отображаться на экране. При запуске скрипта **start.py** происходит создание каталога **workdir**. В данный каталог копируются необходимые для работы стенда файлы и выполняется их конфигурирование. ### Повторный запуск/перезагрузка существующего стенда Для повторного запуска стенда необходимо использовать скрипт **start.py** без указания дополнительных параметров. ```bash sudo python3 start.py ``` ### Настройка файла hosts Для доступа к сайту, веб клиентам информационных баз или доступу через конфигуратор необходимо сконфигурировать файл **hosts**. В файл **hosts** требуется добавить следующю строку ```bash 192.168.1.6 mystandname.1cfresh-dev.ru srv.mystandname.1cfresh-dev.ru s3.1cfresh-dev.ru ``` Где вместо **192.168.1.6** необходимо указать ip адрес сервера на котором вы развернули стенд Фреша, а вместо **mystandname** необходимо использовать имя указанное при развертывании стенда. При запуске стенда в **windows** с использованием **wsl2** корректный ip адрес для записи в файл **hosts** можно получить выполнить в **wsl2** следующую команду ```bash ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}' ``` ## 4. Адреса для доступа к компонентам стенда - Сайт - https://mystandname.1cfresh-dev.ru - Менеджер сервиса веб клиент - https://mystandname.1cfresh-dev.ru/a/adm?Oida- - Для доступа через конфигуратор - Srvr="srv.mystandname.1cfresh-dev.ru";Ref="ibname"; в качестве имен информационных баз используются указанные в файле`/docker_fresh/other_files/params.json` данные. Для выключения стенда достаточно зайти в каталог `/docker_fresh/workdir` и выполнить команду ```bash docker-compose down ```