Инструкция по установке и настройке ПО «1С-ФИНДИР»

Серверная версия (on-premise) — установка на оборудовании Заказчика

1. Минимальные технические требования

Операционная система:
Debian 12 (Bookworm) 64-bit и старше
CPU:
2 ядра, 2.3 GHz
RAM:
4 GB, рекомендовано 8 GB
ROM:
20 GB свободного места
Почта:
SMTP-сервер или релей для отправки почтовых уведомлений

2. Схема архитектуры

Заказчик 1С-ФИНДИР NGINX PostgreSQL Aggregation Service Dashboard Backend API RabbitMQ Notification Service Dashboard Frontend 1С Сторонние сервисы сбора финансовой отчетности Customer SMTP Server Keycloak Customer CRM API до бэкенда Браузер клиента HTTPS 443 HTTPS 443 HTTPS 443 оповещение об обновлении

Весь трафик между сервисами идет по порту HTTP 80, наружу — по порту HTTPS 443. RabbitMQ через Notification Service подключается напрямую к почтовому серверу Заказчика по протоколу SMTP.

3. Описание ПО

Основные компоненты ПО:
  • Aggregation Service — отвечает за получение данных из 1С
  • Backend — предоставляет API, парсинг данных, расчет всех показателей, формирование Excel-файлов, проверки данных
  • Frontend — UI Личного кабинета
  • Notification Service — отвечает за отправку почтовых уведомлений
Вспомогательные компоненты:
  • RabbitMQ — брокер сообщений для отправки почтовых уведомлений
  • PostgreSQL — база для хранения данных
  • Nginx — прокси-сервер
ПО клиента:
  • Customer SMTP Server — почтовый сервер
  • Keycloak — SSO-авторизация (опционально)
  • Кастомное API (CRM) (опционально)
Внешние компоненты:
  • «За честный бизнес» — поиск информации по юридическим лицам из открытых источников
  • СПАРК — поиск информации по юридическим лицам из открытых источников, spark-interfax.ru
  • Любой другой дата-вендор на Ваше усмотрение
  • Курсы валют от ЦБ — cbr.ru
Бухгалтерские системы:
  • 1С
  • 1С:Fresh
  • Мое дело
  • Контур.Бухгалтерия
  • Контур.Эльба

4. Ход установки

Для установки программного обеспечения «1С-ФИНДИР» потребуется около 2–4 часов.

4.1. Загрузка Docker-образов

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

4.2. Настройка перед деплоем

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

Порты для доступа из внешней сети необходимо открыть для запросов клиентов из 1С:

— nginx http: 80

— nginx https: 443

Проверка доступа до сервера из внешней сети:

sudo ping $NGINX_HOST
curl -vI $NGINX_HOST
Для большей безопасности можно использовать DMZ-сегмент для доступа к серверу. Настраивается на стороне Заказчика.

Сертификаты

Необходимо подготовить сертификаты для локальной (внутренней) сети. Если используется DMZ, необходим сертификат для доступа из внешней сети, подписанный GlobalSign.

Сертификаты добавьте в директорию /etc/ssl/certs/smartan с именами:

Локальные сертификаты:
internal.domain.crt, internal.domain.key
Глобальные сертификаты (опционально):
external.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>

4.3. Переменные окружения

Если Вы используете отправку почтовых уведомлений, существует два варианта.

Вариант 1. Отправка напрямую в почтовый сервер (с логином и паролем)

# 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

Вариант 2. Отправка через почтовый релей (без логина и пароля)

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

Backend: обновление информации через сервис «За честный бизнес»

RiskSignalConfig__CronScheduleForZCBGroup="0 10 * * 1"  # планировщик риск-сигналов (crontab), по умолчанию — каждый понедельник
RiskSignalConfig__IsEnabled=true/false                  # активация риск-сигналов
RiskSignalConfig__AllowForAllClients=true/false
# true  — флаг риск-сигнала автоматически проставляется каждому новому клиенту # false — риск-сигнал активируется по каждому клиенту вручную через ЛК

4.4. Деплой ПО с помощью docker-compose

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

— 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

5. Результат установки и доступ

После выполнения вышеуказанных действий приложение будет доступно по адресу https://<NGINX_HOST>. Переменная NGINX_HOST берется из переменных окружения в файле .env.

Для первичной настройки воспользуйтесь учетной записью Администратора — в дальнейшем ее можно удалить. Логин и пароль запросите у администратора.

После успешной авторизации откроется главный экран:

Главный экран 1С-ФИНДИР после авторизации Скриншот: главный экран после авторизации

6. Первичная настройка

6.1. Загрузка плагинов и инструкций для клиента «1С»

Раздел предназначен для настройки сервиса передачи финансовой отчетности из «1С» клиента в систему «1С-ФИНДИР» на стороне Заказчика. Если данный функционал не будет использоваться, п. 6.1 можно пропустить.

Вместе с Docker-образами Вам будут направлены кастомизированные плагины, необходимые для передачи данных из 1С в систему «1С-ФИНДИР», и инструкции для клиентов по их использованию. Клиенты получают их в письме, которое отправляется автоматически после создания запроса в системе.

Актуальные плагины необходимо запросить у менеджера или DevOps-инженера «1С-ФИНДИР».

1. После развертывания ПО перейдите в раздел «Администрирование» (доступен только Администратору системы «1С-ФИНДИР»):

Меню пользователя — пункт Администрирование Скриншот: меню пользователя → «Администрирование»

2. На вкладке «Файлы» нажмите кнопку «Загрузить» и загрузите соответствующие файлы в БД:

Вкладка Файлы в разделе Администрирование Скриншот: вкладка «Файлы» в разделе «Администрирование»

Убедитесь, что название загружаемого файла соответствует его типу:

Тип файлаНазвание файла
1С плагинSmartan_<дата>.epf
1С плагин freshСФпО_<дата>.cfe
Инструкция для 1С плагинаИнструкция 1С.pdf
Инструкция для 1С плагина fresh1С-ФИНДИР_Отправка_пакетов_документов_через_1С_Фреш.pdf
Инструкция для fresh с ЭЦП (функционал в разработке, но инструкцию можно загрузить заранее, чтобы не возвращаться к ней позже)1С-ФИНДИР_Отправка_пакетов_документов_через_1С.pdf

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

6.2. Тестирование интеграции «1С»

Для проверки интеграции необходимо обратиться к системному DevOps-инженеру «1С-ФИНДИР».

7. API 1С-ФИНДИР

Документация по API:
Swagger aggregation service: