Серверная версия (on-premise) — установка на оборудовании Заказчика
Весь трафик между сервисами идет по порту HTTP 80, наружу — по порту HTTPS 443. RabbitMQ через Notification Service подключается напрямую к почтовому серверу Заказчика по протоколу SMTP.
Для установки программного обеспечения «1С-ФИНДИР» потребуется около 2–4 часов.
Docker-образы ПО «1С-ФИНДИР» необходимо скачать из Docker Registry.
1. Добавьте Docker Registry (Harbor) в доверенные — файл /etc/docker/daemon.json:
{
"registry-mirrors": ["https://registry.xn--80aa8agndk.xn--p1ai"],
"insecure-registries": ["registry.xn--80aa8agndk.xn--p1ai"]
} 2. Перезапустите Docker:
sudo systemctl restart docker
3. Авторизуйтесь. Логин и пароль от Docker Registry уточняйте у системного администратора «1С-ФИНДИР».
docker login registry.xn--80aa8agndk.xn--p1ai \
-u "${REGISTRY_USER}" \
-p "${REGISTRY_PASSWORD}" 4. Скачайте все Docker-образы:
docker pull registry.xn--80aa8agndk.xn--p1ai/smartan/smartanmvp-postgres:latest docker pull registry.xn--80aa8agndk.xn--p1ai/smartan/smartanmvp-rabbitmq:latest docker pull registry.xn--80aa8agndk.xn--p1ai/smartan/smartanmvp-emailer:latest docker pull registry.xn--80aa8agndk.xn--p1ai/smartan/smartanmvp-aggregation:latest docker pull registry.xn--80aa8agndk.xn--p1ai/smartan/smartanmvp-backend:latest docker pull registry.xn--80aa8agndk.xn--p1ai/smartan/smartanmvp-frontend:latest docker pull registry.xn--80aa8agndk.xn--p1ai/smartan/smartanmvp-nginx:latest
Порты для доступа из внешней сети необходимо открыть для запросов клиентов из 1С:
— nginx http: 80
— nginx https: 443
Проверка доступа до сервера из внешней сети:
sudo ping $NGINX_HOST curl -vI $NGINX_HOST
Необходимо подготовить сертификаты для локальной (внутренней) сети. Если используется DMZ, необходим сертификат для доступа из внешней сети, подписанный GlobalSign.
Сертификаты добавьте в директорию /etc/ssl/certs/smartan с именами:
internal.domain.crt, internal.domain.keyexternal.domain.crt, external.domain.keyВ директорию /opt/smartan/nginx добавьте шаблоны nginx. Скачать их можно по ссылке.
| Шаблон | Назначение | Когда нужен |
|---|---|---|
internal.conf.template | Маршрутизация трафика внутри локальной сети Заказчика. Используется самоподписанный сертификат локальной сети | Обязательно |
external.conf.template | Маршрутизация трафика для глобальной сети. Используется сертификат, подписанный GlobalSign | Если используется запрос финансовой отчетности от клиентов из 1С |
emailer.conf.template | Маршрутизация почтового сервиса | Если используется отправка почтовых уведомлений |
В шаблоне nginx можно переопределить имя сертификата.
Локальная сеть — internal.conf.template:
… ssl_certificate /etc/nginx/ssl/internal.domain.crt; ssl_certificate_key /etc/nginx/ssl/internal.domain.key; …
Глобальная сеть — external.conf.template:
… ssl_certificate /etc/nginx/ssl/external.domain.crt; ssl_certificate_key /etc/nginx/ssl/external.domain.key; …
Для развертывания сервисов необходимо проверить доступность портов:
— PostgreSQL: 5432
— nginx http: 80
— nginx https: 443
— RabbitMQ: 5672, 15672
Для проверки занятых портов используйте команду:
sudo netstat -tlpn | grep -E "(:443|:80|:5432|:5672|:15672)"
Если порты заняты другим ПО, найдите процесс по номеру порта, затем по PID завершите его:
sudo lsof -i :80 sudo kill -9 <PID>
Если Вы используете отправку почтовых уведомлений, существует два варианта.
# Mail
SmtpClientOptions__Host="Хост почтового сервера"
SmtpClientOptions__Port="Порт почтового сервера"
SmtpClientOptions__Username="Логин почтового сервера"
SmtpClientOptions__Password="Пароль почтового сервера"
SmtpClientOptions__SenderName="Имя отправителя"
SmtpClientOptions__SenderAddress="Адрес, с которого отправляется письмо" В docker-compose.yml проверьте параметры:
emailer:
…
environment:
SmtpClientOptions__Host: ${SmtpClientOptions__Host}
SmtpClientOptions__Port: ${SmtpClientOptions__Port}
SmtpClientOptions__UseSsl: ${SmtpClientOptions__UseSsl}
SmtpClientOptions__Username: ${SmtpClientOptions__Username}
SmtpClientOptions__Password: ${SmtpClientOptions__Password}
SmtpClientOptions__SenderName: ${SmtpClientOptions__SenderName}
SmtpClientOptions__SenderAddress: ${SmtpClientOptions__SenderAddress}
… Убедитесь, что Emailer подключился через SMTP-сервер: в логах не должно быть ошибок уровня fail от Emailer.Infrastructure.Services.EmailSender.
docker logs emailer
EmailSenderFactoryOptions__EmailSenderType="CorporateRelay" # параметр по умолчанию CorporateRelayOptions__Host="Хост почтового релея" CorporateRelayOptions__Port="Порт почтового релея" CorporateRelayOptions__SenderName="SmartAn System" # имя отправителя CorporateRelayOptions__SenderAddress="noreply@company" # адрес отправителя
В docker-compose.yml проверьте параметры:
emailer:
…
environment:
EmailSenderFactoryOptions__EmailSenderType: ${EmailSenderFactoryOptions__EmailSenderType}
CorporateRelayOptions__Host: ${CorporateRelayOptions__Host}
CorporateRelayOptions__Port: ${CorporateRelayOptions__Port}
CorporateRelayOptions__SenderName: ${CorporateRelayOptions__SenderName}
CorporateRelayOptions__SenderAddress: ${CorporateRelayOptions__SenderAddress}
… Убедитесь, что Emailer подключился через корпоративный релей:
docker logs emailer … info: Emailer.Startup[0] Successful connection attempt to RabbitMQ (rabbitmq). … info: Emailer.Infrastructure.Services.EmailSenderCorporateRelay[0] … sent to '…' via corporate relay
RiskSignalConfig__CronScheduleForZCBGroup="0 10 * * 1" # планировщик риск-сигналов (crontab), по умолчанию — каждый понедельник RiskSignalConfig__IsEnabled=true/false # активация риск-сигналов RiskSignalConfig__AllowForAllClients=true/false # true — флаг риск-сигнала автоматически проставляется каждому новому клиенту # false — риск-сигнал активируется по каждому клиенту вручную через ЛК
Заказчику предоставляется ссылка на директорию с файлами:
— docker-compose.yml — файл с описанием развертывания Docker-контейнеров;
— .env — файл с конфигурационными настройками.
Их необходимо добавить в созданную ранее директорию /opt/smartan/docker. В файле .env замените значение NGINX_HOST на DNS-имя Вашей внутренней сети.
Для запуска сервиса перейдите в директорию с файлами и выполните команду:
sudo docker compose up -d
Если docker-compose.yml лежит в другой директории или имеет другое имя:
sudo docker compose -f path/to/docker-compose.yml up -d
Если .env лежит в другой директории или имеет другое имя:
sudo docker compose --env-file path/to/env/file up -d
Или оба варианта:
sudo docker compose -f path/to/docker-compose.yml --env-file path/to/env/file up -d
После выполнения вышеуказанных действий приложение будет доступно по адресу https://<NGINX_HOST>. Переменная NGINX_HOST берется из переменных окружения в файле .env.
После успешной авторизации откроется главный экран:
Скриншот: главный экран после авторизации Вместе с Docker-образами Вам будут направлены кастомизированные плагины, необходимые для передачи данных из 1С в систему «1С-ФИНДИР», и инструкции для клиентов по их использованию. Клиенты получают их в письме, которое отправляется автоматически после создания запроса в системе.
Актуальные плагины необходимо запросить у менеджера или DevOps-инженера «1С-ФИНДИР».
1. После развертывания ПО перейдите в раздел «Администрирование» (доступен только Администратору системы «1С-ФИНДИР»):
Скриншот: меню пользователя → «Администрирование» 2. На вкладке «Файлы» нажмите кнопку «Загрузить» и загрузите соответствующие файлы в БД:
Скриншот: вкладка «Файлы» в разделе «Администрирование» Убедитесь, что название загружаемого файла соответствует его типу:
| Тип файла | Название файла |
|---|---|
| 1С плагин | Smartan_<дата>.epf |
| 1С плагин fresh | СФпО_<дата>.cfe |
| Инструкция для 1С плагина | Инструкция 1С.pdf |
| Инструкция для 1С плагина fresh | 1С-ФИНДИР_Отправка_пакетов_документов_через_1С_Фреш.pdf |
| Инструкция для fresh с ЭЦП (функционал в разработке, но инструкцию можно загрузить заранее, чтобы не возвращаться к ней позже) | 1С-ФИНДИР_Отправка_пакетов_документов_через_1С.pdf |
Выполнить эти действия нужно при первом развертывании, а также при выходе обновлений плагинов и инструкций.
Для проверки интеграции необходимо обратиться к системному DevOps-инженеру «1С-ФИНДИР».