Перейти к содержанию

Настройка интеграции с Почтой VK WorkSpace

Назначение документа

В документе описана настройка интеграции Почты VK WorkSpace версии не ниже 1.18 и VK Teams версии не ниже 24.1.

Документ предназначен для использования администраторами организации.

Предварительные требования

Для настройки интеграции Почты и VK Teams вам потребуется:

  1. Доступ к веб-интерфейсу установщика Почты VK WorkSpace

    http://<адрес_сервера_Почты_VK_WorkSpace>:8888.

  2. Доступ к виртуальной машине, на которой установлен VK Teams.

Внимание

Для production-систем рекомендуется производить настройки во время технологического окна.

Настройки на стороне VK Teams

Внимание

Все команды в консоли выполняются под пользователем root.

Шаг 1. Создайте бот для календаря

  1. В списке контактов в Мессенджере найдите @Metabot.

  2. Отправьте в чат сообщение /start.

  3. Нажмите Создать нового бота.

  4. Введите ник для нового бота. Он должен заканчиваться на bot, например vkcalendarbot.

  5. Сохраните полученные ID и токен.

  6. Разрешите боту отправлять сообщение первым, выполнив на сервере VK Teams команду:

    echo "row_add bots_can_write_first <botID>" | nc stdb.vkteams.svc.cluster.local. 4020
    
    где <botID> — ID созданного бота для календаря.

    В случае распределенной инсталляции выполните команду на сервере в состоянии main. Найти такой сервер можно при помощи команды ic map stdb на любом сервере.

Шаг 2. Создайте почтовый бот

  1. Используя чат с @Metabot, создайте почтовый бот mailbot по аналогии с ботом для календаря.

  2. Сохраните его ID и токен.

  3. Разрешите боту отправлять сообщение первым, выполнив на сервере VK Teams команды:

    echo "row_add bots_can_write_first <botID>" | nc stdb.vkteams.svc.cluster.local. 4020
    

    где <botID> — ID созданного почтового бота.

  4. Разрешите боту отправлять DeepLink:

    1. На сервере VK Teams проверьте наличие таблицы:

      echo "table_get bots_can_send_deeplink" | nc stdb.vkteams.svc.cluster.local. 4020
      

      Если таблицы нет, создайте ее:

      echo "stdb_table_add bots_can_send_deeplink sn@string" | nc stdb.vkteams.svc.cluster.local. 4020
      
    2. Добавьте бота в таблицу:

      echo "row_add bots_can_send_deeplink <botId>" | nc stdb.vkteams.svc.cluster.local. 4020
      

      где <botID> — ID созданного почтового бота.

Шаг 3. Создайте токен biz-admin

  1. Перейдите в конфигурационный файл /usr/local/etc/import_prismtokens.yaml:

    vim /usr/local/etc/import_prismtokens.yaml
    
  2. В секции prismtokens создайте секцию biz-admin, как в примере ниже, и задайте токен в поле key:

    prismtokens:
      biz-admin:
        methods:
          - _any
        ips: // список ip-адресов гипервизоров-фронтов Почты VK WorkSpace
          - 192.0.2.1 
          - 192.0.2.2 
        akes: true
        key: <your_token>
    
  3. Чтобы изменения вступили в силу, выполните команду:

    /usr/local/bin/import_prismtokens.py -f /usr/local/etc/import_prismtokens.yaml
    

    При распределенной инсталляции VK Teams команда выполняется на одном из серверов.

Шаг 4. Откройте доступ в окружение администратора

Примечание

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

  1. Перейдите в файл конфигурации /usr/local/nginx-im/confv2/conf.d/myteam-admin_allow_hosts.inc:

    vim /usr/local/nginx-im/confv2/conf.d/myteam-admin_allow_hosts.inc
    
  2. В поле allow вместо <real.mail.ip> укажите список IP-адресов гипервизоров-фронтов Почты VK WorkSpace:

    allow 192.0.2.1 192.0.2.2;
    
  3. Чтобы изменения вступили в силу, выполните команду:

    nginx.sh reload
    

Шаг 5. Добавьте CN-группы администраторов

  1. Перейдите в конфигурационный файл /usr/share/tarantool/extra_config/nomail-1/nomail-1_extra_conf.lua

    vim /usr/share/tarantool/extra_config/nomail-1/nomail-1_extra_conf.lua
    
  2. В поле myteam-admin укажите CN-группы администраторов:

    cfg.otp_permission.apps = {
        ['myteam-client'] = '*',
        ['download_ios_application'] = '*',
        ['myteam-admin'] = {
            'myteam-admin'
        },
    }
    
  3. Чтобы изменения вступили в силу, выполните команду:

    echo "dofile('/usr/share/tarantool/extra_config/nomail-1/nomail-1_extra_conf.lua')" | tarantoolctl enter nomail-1
    
  4. Проверить актуальные настройки можно командой:

    echo "cfg.otp_permission.apps" | tarantoolctl enter nomail-1
    

Шаг 6. Создайте учетную запись с доступом в окружение администратора

  1. В любой удобной папке создайте файл users.yaml и заполните его данными учетной записи (в примере ниже это <admin@admin.qdit>):

    users:  
        admin@admin.qdit:  
            email: admin@admin.qdit
            firstName: admin
            lastName: admin
            attributes:              
                memberOf: ["myteam-admin"] #член группы "myteam-admin" с доступом в окружение администратора
    

    где memberOf: — название группы пользователей с доступом в окружение администратора.

    Объект users имеет тип Hash. При использовании расширенного формата yaml-файла username должен совпадать с email. В примере выше это <admin@admin.qdit>.

  2. После создания users.yaml выполните в консоли команду:

    users.py --cmd add -c users.yaml 
    
  3. Получите adminSn и adminRid созданной учетной записи:

     echo "show admin@admin.qdit" | nc 127.1 4281
    

    Значения rid и sn будут в выводе команды:

Шаг 7. Отредактируйте секцию mpop в файле myteam-admin.yml

  1. Перейдите в файл конфигурации myteam-admin.yml:

    cd /usr/local/etc/k8s/helmwave/
    vim projects/godmod/values/myteam-admin.yml
    
  2. В секции mpop укажите домен Почты VK WorkSpace, sn (adminSn) и rid (adminRid), полученные на предыдущем шаге:

    mpop:
      enable: true
      swa_host: http://swa.<домен Почты VK WorkSpace>
      swa_url: /int/CheckSession
      adminSn: admin@admin.qdit // указать значение adminSn, полученное на предыдущем шаге    
      adminRid: 0:100504  // указать значение adminRid, полученное на предыдущем шаге
    
  3. Чтобы изменения вступили в силу, поочередно выполните команды:

    Для инсталляции на 1 виртуальную машину:

    helm delete myteam-admin -n vkteams 
    export HELMWAVE_USE_LOCAL_REPO_CACHE=1
    helmwave up --build --tpl helmwave.yml.tpl --yml --templater gomplate -t myteam-admin
    

    Для распределенной инсталляции VK Teams версии 23.8 и выше выполните команду на одном из первых трех серверов:

    im_deployer --helmwave --update --hw-project godmod --hw-once
    
  4. Для проверки изменений выполните команду:

    kubectl exec -n vkteams -i myteam-admin-<Pod ID> -c myteam-admin -- cat /usr/local/etc/config.yaml
    

    Актуальное значение pod ID можно получить с помощью команды:

    kubectl get pods -A | grep myteam-admin
    

Шаг 8. Настройте сервис Stentor

  1. Перейдите в конфигурационный файл /usr/local/nginx-im/confv2/conf.d/stentor.conf:

    vim /usr/local/nginx-im/confv2/conf.d/stentor.conf
    
  2. В поле allow вместо <real.mail.ip> укажите IP-адреса гипервизоров-фронтов Почты:

    location / {
        include /usr/local/nginx-im/confv2/conf.d/myteam-admin_allow_hosts.inc;
        proxy_pass http://$upstream_stentor$uri$is_args$args;
    
        allow 127.0.0.0/8;
        allow 10.32.0.0/16;
        allow <real.mail.ip>; // вместо <real.mail.ip> укажите IP-адреса гипервизоров-фронтов Почты
            deny all;
    }
    

Шаг 9. Настройте CORS

  1. Перейдите в конфигурационный файл /usr/local/nginx-im/confv2/nginx.conf

    vim /usr/local/nginx-im/confv2/nginx.conf
    
  2. Перед комментарием «# static global maps and geos» добавьте новую секцию map $http_origin $cors_enabled:

    map $http_origin $cors_enabled {
        ~webim\.<домен_Мессенджер_и_ВКС>$ 1;
        ~calendarx\.<домен_Почты>$ 1;
        ~calendarmsg\.<домен_Почты>$ 1;
        ~calendartouch\.<домен_Почты>$ 1;
        ~e\.<домен_Почты>$ 1;
        ~cloud\.<домен_Почты>$ 1;
        ~dl\.<домен_Мессенджер_и_ВКС>$ 1;
        default 0;
    }
    # static global maps and geos
    
  3. В секции variables geos from hiera допишите:

    # variables geos from hiera
        geo $realip_remote_addr $allow_biz_grafana {
            127.0.0.1 1;
            10.32.0.0/16 1;
            <real.mail.ip>/32 1; //  вместо <real.mail.ip> указать IP-адреса гипервизоров-фронтов Почты VK WorkSpace
            default 0;
        }
    

    Пример заполнения файла:

  4. Чтобы изменения вступили в силу, выполните команду:

    nginx.sh reload
    

Шаг 10. Настройте отображение сервисов в клиентском приложении VK Teams

  1. В конфигурационном файле /usr/local/nginx-im/html/myteam/myteam-config.json добавьте в секцию templates-urls:

    "templates-urls": {
        "mail": "https://e.<домен Почты VK WorkSpace>.ru/api/v1/user/webauth/vkteams",
        "cloud": "https://cloud.<домен Почты VK WorkSpace>.ru",
        "calendar": "https://calendarx.<домен Почты VK WorkSpace>.ru",
        "mobile_calendar_main_url": "https://calendartouch.<домен Почты VK WorkSpace>.ru",
        "mobile_calendar_create_event_url": "https://calendartouch.<домен Почты VK WorkSpace>.ru/create"
    },
    
  2. Добавьте в секцию mini-apps:

    "mini-apps": {
        "calendar-enabled": true
    },
    

  3. Добавьте в секцию services" – “config:

    "services": {
        "config": {
          "calendar-desktop": {
            "url": "https://calendarmsg.<домен Почты VK WorkSpace>.ru?nolanding=1",
            "is-public": false,
            "needs_auth": true,
            "needs_offline_bundle": true,        
            "template-domains": ["calendarx.<домен Почты VK WorkSpace>.ru"],
            "bundle": {
              "all-hosts": {
                "root-url": "https://calendar.<домен Почты VK WorkSpace>.ru/",
                "touch-root-url": "https://calendartouch.<домен Почты VK WorkSpace>.ru/",
                "auth-url": "https://auth.<домен Почты VK WorkSpace>.ru/cgi-bin/auth",
                "base-static-url": "https://imgs.<домен Почты VK WorkSpace>.ru/",
                "avatar-url": "https://filin.<домен Почты VK WorkSpace>.ru/pic?email=",
                "email-url": "e.<домен Почты VK WorkSpace>.ru",
                "account-url": "https://account.<домен Почты VK WorkSpace>.ru",
                "oauth-url": "https://corsapi.<домен для облачных хранилищ>.ru",
                "oauth-host": "https://o2.<домен Почты VK WorkSpace>.ru",
                "myteam-api-url": "https://webim.<домен VK Teams>.ru"
              },
              "base-static-img-url": "https://imgs.<домен Почты VK WorkSpace>.ru/static.promo/calendar/",
              "base-static-imgs2-url": "https://imgs.<домен Почты VK WorkSpace>.ru/pkgs/static/calendar/",
              "cloud-public-url": "https://cloud.<домен Почты VK WorkSpace>.ru/public",
              "cloud-thumb-url": "https://thumb.cloud.<домен Почты VK WorkSpace>.ru",
              "cloud-url": "https://openapi.cloud.<домен Почты VK WorkSpace>.ru",
              "dns-prefetch-domains": "imgs.<домен Почты VK WorkSpace>.ru",
              "fonts-path": "https://imgs.<домен Почты VK WorkSpace>.ru/pkgs/static/fonts/v1.100",
              "foundation-calls-locations": "calls[.]mail[.]ru,meet[.]megafon[.]ru,ivcs[.]hi-tech[.]org,meet[.]google[.]com,hangouts[.]google[.]com,saas[.]videomost[.]com,discord[.]gg,join[.]skype[.]com,(([a-z0-9-]+)[.])?zoom[.]us,(([a-z0-9-]+)[.])?ktalk[.]ru,call[.]agent[.]mail[.]ru,call[.]icq[.]com,call[.]myteam[.]mail[.]ru,call[.]internal[.]myteam[.]mail[.]ru,next[.]granatum[.]solutions[.]/register-course,telemost[.]yandex[.]ru,teams[.]microsoft[.]com/l/meetup-join,vk[.]com/call,meet[.]jit[.]si,vks[.]sfr[.]gov[.]ru,call[.]<домен VK Teams>",
              "portal-url": "https://portal.<домен Почты VK WorkSpace>.ru",
              "preconnect-domains": "imgs.<домен Почты VK WorkSpace>.ru",
              "sharing-calendar-with-no-auth-url": "https://shared.calendarx.<домен Почты VK WorkSpace>.ru",
              "static-img-url": "https://imgs.<домен Почты VK WorkSpace>.ru/calendarx/",
              "staticHost": "https://imgs.<домен Почты VK WorkSpace>.ru",
              "staticTestHost": "https://imgs.<домен Почты VK WorkSpace>.ru",
              "themes-paths-v4": {
                  "default": {
                      "base": "https://imgs.<домен Почты VK WorkSpace>.rupkgs/themes.outsource/1.18.0",
                      "js": "https://imgs.<домен Почты VK WorkSpace>.rupkgs/themes.outsource/1.18.0/ru_RU"
                  }
              }
            }
          },
          "cloud-desktop": {
            "url": "https://cloud.<домен Почты VK WorkSpace>.ru?wv=1&need_silent=0",
            "is-public": false,
            "needs_auth": true,
            "needs_offline_bundle": false
          },
          "mail-desktop": {
            "url": "https://e.<домен Почты VK WorkSpace>.ru/?wv=1",
            "compose_url": "https://e.<домен Почты VK WorkSpace>.ru/compose/?wv=1",
            "external": false,
            "is-public": false,
            "needs_auth": true,
            "needs_offline_bundle": true,
            "bundle": {
              "amp-proxy-host": "https://ampproxy.<домен для облачных хранилищ>.ru/",
              "ab-calendarUrl": "//calendarx.<домен Почты VK WorkSpace>.ru",
              "ab-composeUrl": "https://e.<домен Почты VK WorkSpace>.ru/compose",
              "ab-export-base-url": "https://e.<домен Почты VK WorkSpace>.ru",
              "ab-readMessageUrl": "https://e.<домен Почты VK WorkSpace>.ru/search/${folder}/${thread}/${message}/?q_from=${email}&q_to=${activeEmail}&x-email=${activeEmail}",
              "ab-searchAttachesToMyselfUrl": "https://e.<домен Почты VK WorkSpace>.ru/search/?q_from=${email}&q_to=${activeEmail}&q_attach=1&q_folder=500000&x-email=${activeEmail}",
              "ab-searchAttachesUrl": "https://e.<домен Почты VK WorkSpace>.ru/search/?q_from=${email}&q_to=${activeEmail}&q_attach=1&x-email=${activeEmail}",
              "ab-searchMessagesToMyselfUrl": "https://e.<домен Почты VK WorkSpace>.ru/search/?q_from=${email}&q_to=${activeEmail}&q_folder=500000&x-email=${activeEmail}",
              "ab-searchMessagesUrl": "https://e.<домен Почты VK WorkSpace>.ru/search/?q_from=${email}&q_to=${activeEmail}&x-email=${activeEmail}",
              "ab-viewAttachUrl": "https://e.<домен Почты VK WorkSpace>.ru/attach/${message}/${part}/?folder-id=${folder}&x-email=${activeEmail}",
              "avatar-base-url": "https://filin.<домен Почты VK WorkSpace>.ru",
              "avatar-filin-host": "https://filin.<домен Почты VK WorkSpace>.ru/pic",
              "all-hosts": {
                "adUrl": "https://ad.<домен Почты VK WorkSpace>.ru",
                "ampIframePath": "//imgs.<домен Почты VK WorkSpace>.ru/pkgs/amp.viewer/2.5.5-b2b.2/iframe.html",
                "ampRedirectUrl": "https://e.<домен Почты VK WorkSpace>.ru/inbox",
                "authUrl": "https://auth.<домен Почты VK WorkSpace>.ru",
                "avatarUrl": "https://filin.<домен Почты VK WorkSpace>.ru",
                "calendarUrl": "https://calendarx.<домен Почты VK WorkSpace>.ru/",
                "cdnPackagesUrl": "https://imgs.<домен Почты VK WorkSpace>.ru/pkgs",
                "cloudHomeUrl": "https://cloud.<домен Почты VK WorkSpace>.ru/home",
                "cloudOpenApiUrl": "https://openapi.cloud.<домен Почты VK WorkSpace>.ru/api/v1/",
                "detectHttpUrl": "https://imgs.<домен Почты VK WorkSpace>.ru/detect_http_version.js",
                "hbPackagesUrl": "https://imgs.<домен Почты VK WorkSpace>.ru/pkgs",
                "helpUrl": "https://help.<домен Почты VK WorkSpace>.ru",
                "imgRadarUrl": "https://stat.radar.<домен Почты VK WorkSpace>.ru",
                "loginUrl": "https://account.<домен Почты VK WorkSpace>.ru/login",
                "mailAttachPreviewHost": "apf.<домен Почты VK WorkSpace>.ru",
                "notificationsUrl": "https://e.<домен Почты VK WorkSpace>.ru/settings/general#notifications",
                "packagesUrl": "https://imgs.<домен Почты VK WorkSpace>.ru",
                "radarUrl": "https://xray.<домен Почты VK WorkSpace>.ru",
                "signatureUrl": "https://e.<домен Почты VK WorkSpace>.ru/settings/general#signature",
                "singleDomainName": "<домен Почты VK WorkSpace>.ru",
                "staticUrl": "https://imgs.<домен Почты VK WorkSpace>.ru/octavius",
                "vktAuthUrl": "https://e.<домен Почты VK WorkSpace>.ru/api/v1/user/webauth/vkteams",
                "widgetXCalendarUrl": "https://calendarx.<домен Почты VK WorkSpace>.ru/",
                "xCalendarUrl": "https://calendarx.<домен Почты VK WorkSpace>.ru/",
                "zipViewUrl": "//zipview.<домен Почты VK WorkSpace>.ru"
              },
              "async_notify": "e.<домен Почты VK WorkSpace>.ru/api-proxy/notifier/v2/ws|240000|5|10000|300000",
              "calendar-graphql-api-url": "https://corsapi.<домен для облачных хранилищ>.ru/calendar/graphql",
              "change-expired-password-url": "https://e.<домен Почты VK WorkSpace>.ru/settings/general?change_password=1",
              "custom-themes-previews-paths": {
                "default": "https://imgs.<домен Почты VK WorkSpace>.ru/pkgs/static/themes-previews/vk_wm/default/preview",
                "t5000": "https://imgs.<домен Почты VK WorkSpace>.ru/pkgs/static/themes-previews/vk_wm/t5000/preview",
                "t6000": "https://imgs.<домен Почты VK WorkSpace>.ru/pkgs/static/themes-previews/vk_wm/t6000/preview"
              },
              "cloud-host": "cloud.<домен Почты VK WorkSpace>.ru",
              "exp-cloud-viewer-host": "cloud.<домен Почты VK WorkSpace>.ru",
              "folder-password-captcha-url": "https://c.<домен Почты VK WorkSpace>.ru/c/0",
              "forgot-password-url": "https://e.<домен Почты VK WorkSpace>.ru/settings/folders",
              "mailAttachPreviewHost": "apf.<домен Почты VK WorkSpace>.ru",
              "messages-attaches-blobcloud-path": "//blobcloud.e.<домен Почты VK WorkSpace>.ru/upload/",
              "mobile-addressbook-url": "https://e.<домен Почты VK WorkSpace>.ru/addressbook",
              "oauth_host": "https://o2.<домен Почты VK WorkSpace>.ru",
              "settings-url": "https://e.<домен Почты VK WorkSpace>.ru/settings/?octaviusMode=1",
              "singleDomainName": "<домен Почты VK WorkSpace>.ru",
              "themes-paths-v4": {
                "default": {
                  "base": "https://imgs.<домен Почты VK WorkSpace>.ru/pkgs/themes.outsource/2.0.8",
                  "js": "https://imgs.<домен Почты VK WorkSpace>.ru/pkgs/themes.outsource/2.0.8/ru_RU"
                }
              },
              "xCalendarUrl": "https://calendarx.<домен Почты VK WorkSpace>.ru/",
              "clicker-whitelist-hosts": "<домен Почты VK WorkSpace>.ru,e.<домен Почты VK WorkSpace>.ru,account.<домен Почты VK WorkSpace>.ru,id.<домен Почты VK WorkSpace>.ru,cloud.<домен Почты VK WorkSpace>.ru,calendarx.<домен Почты VK WorkSpace>.ru,calendar.<домен Почты VK WorkSpace>.ru,calls.<домен Почты VK WorkSpace>.ru,sharing-calendars.<домен Почты VK WorkSpace>.ru,mailer.<домен Почты VK WorkSpace>.ru,sharing.<домен Почты VK WorkSpace>.ru,miniapp",
              "enable-vkteams-call": false,
              "cache_preload_throttle_ms": 300000,
              "enable-aimsid-sso": true
            }
          },
          "orgstructure": { // добавьте эту секцию, если пользуетесь функциональностью структуры организаций
            "external": false,
            "needs_auth": true,
            "new": true,
            "url": "https://webim.<url-dark-domain>/webapps/orgstructure",
            "url-dark": "https://webim.<vkt-domain>/webapps/orgstructure"
          },
          "mail-ios":{
                 "main_api_host": "https://e.<домен Почты VK WorkSpace>.ru",
                 "oauth_host": "https://oauth.<домен Почты VK WorkSpace>.ru",
                 "push-me-host": "https://alt-push-me.<домен Почты VK WorkSpace>.ru", 
                 "custom_mailto_host": "https://e.<домен Почты VK WorkSpace>.ru/compose/",
                 "avatar_host": "https://filin.<домен Почты VK WorkSpace>.ru/pic",
                 "auth_client_id": "__IOS_MAIL_AUTH_CLIENT_ID__",
                 "auth_secret": "__IOS_MAIL_AUTH_SECRET__",
                 "auth_redirect_uri": "__IOS_MAIL_AUTH_REDIRECT_URI__",
                 "ssoauth_client_id": "__IOS_MAIL_AUTH_CLIENT_ID__",
                 "sso_x_mobile_app_header": "e552fda2e6c711eaadc10242ac120002", 
          },
          "calendar-ios":{
                 "auth_client_id": "__IOS_CALENDAR_AUTH_CLIENT_ID__",
                 "auth_secret": "__IOS_CALENDAR_AUTH_SECRET__",
                 "auth_redirect_uri": "__IOS_CALENDAR_AUTH_REDIRECT_URI__",
                 "ssoauth_client_id": "__IOS_CALENDAR_AUTH_CLIENT_ID__",
                 "sso_x_mobile_app_header": "e552fda2e6c711eaadc10242ac120002", 
                 "web-root-url": "https://calendar.<домен Почты VK WorkSpace>.ru/",
                 "web-oauth-url": "https://corsapi.<домен для облачных хранилищ>.ru", 
                 "web-touch-root-url": "https://calendartouch.<домен Почты VK WorkSpace>.ru/", 
                 "web-auth-url": "https://auth.<домен Почты VK WorkSpace>.ru/cgi-bin/auth",
                 "web-base-static-url": "https://imgs.<домен Почты VK WorkSpace>.ru/", 
                 "web-avatar-url": "https://filin.<домен Почты VK WorkSpace>.ru/pic?email="
          },
          "mail-android":{
                "main_api_host":"https://e.<домен Почты VK WorkSpace>.ru",
                "mail_to_host":"",
                "onprem_config": "https://imgs.<домен Почты VK WorkSpace>.ru/pkgs/static/omicron/mail_android_omicron.json",
                "files_host":"https://files.<домен Почты VK WorkSpace>.ru",
                "avatar_host":"https://filin.<домен Почты VK WorkSpace>.ru/pic?",
                "attach_preview_host":"https://apf.<домен Почты VK WorkSpace>.ru",
                "attachments_url_host":"https://af.<домен Почты VK WorkSpace>.ru",
                "avatar_host_filin":"https://filin.<домен Почты VK WorkSpace>.ru",
                "auth_client_id":"kMF54Wmke3VT7ssgVKyJAihptNZdRgqD",
                "auth_secret":"__AUTH_SECRET__",
                "auth_redirect_uri":"https://localhost/",
                "ssoauth_client_id":"kMF54Wmke3VT7ssgVKyJAihptNZdRgqD",
                "sso_x_mobile_app_header":"e552fda2e6c711eaadc10242ac120002",
                "is-public":true,
                "needs_auth":true,
                "url":"",
                "oauth_host":"https://o2.<домен Почты VK WorkSpace>.ru/",
                "sso_host":"https://auth.<домен Почты VK WorkSpace>.ru/",
                "aimsid_host":"https://e.<домен Почты VK WorkSpace>.ru/",
                "pusher_host":"push-me.<домен Почты VK WorkSpace>.ru"
          },
          "calendar-android":{
                "auth_client_id":"kMF54Wmke3VT7ssgVKyJAihptNZdRgqD",
                "auth_secret":"__AUTH_SECRET__",
                "auth_redirect_uri":"https://localhost/",
                "ssoauth_client_id":"kMF54Wmke3VT7ssgVKyJAihptNZdRgqD",
                "sso_x_mobile_app_header":"e552fda2e6c711eaadc10242ac120002",
                "oauth_host":"https://o2.<домен Почты VK WorkSpace>.ru/",
                "sso_host":"https://auth.<домен Почты VK WorkSpace>.ru/",
                "aimsid_host":"https://e.<домен Почты VK WorkSpace>.ru/",
                "pusher_host":"push-me.<домен Почты VK WorkSpace>.ru",
                "is-public":true,
                "needs_auth":true,
                "url":"",
                "calendar_url":"https://calendartouch.<домен Почты VK WorkSpace>.ru/",
                "calendar_new_event_url":"https://calendartouch.<домен Почты VK WorkSpace>.ru/create",
                "offline_intercept_request_urls":[
                   "https://calendartouch.<домен Почты VK WorkSpace>.ru/?",
                   "https://calendartouch.<домен Почты VK WorkSpace>.ru/create?",
                   "https://touch.calendar.mini-mail.ru/?",
                   "https://touch.calendar.mini-mail.ru/create?"
                ],
                "offline_critical_urls":[
                   ".*calendartouch.<домен Почты VK WorkSpace>.ru/\\?.*",
                   ".*calendartouch.<домен Почты VK WorkSpace>.ru/create\\?.*",
                   ".*touch.calendar.mini-mail.ru/\\?.*",
                   ".*touch.calendar.mini-mail.ru/create\\?.*",
                   ".*account.mail.*"
                ],
                "bundle_update_enabled":false,
                "bundle_update_auto":false,
                "bundle_update_delay":0,
                "bundle_update_host_url":"",
                "bundle_update_manifest_name":"asset-manifest.json",
                "bundle_update_versions":{
    
                },
                "install_test_bundle_by_deeplink_enabled":true,
                "install_test_bundle_by_deeplink_allowed_cdn_hosts":[
                   "calendarx.imgsmail.ru",
                   "static.mail.corpcloud.devmail.ru"
                ],
                "install_test_bundle_by_deeplink_auto_restart":true,
                "open_message_deeplink_enabled":true,
                "open_attach_deeplink_enabled":true,
                "inner_domains_set_key":"calendar_portal",
                "calendar_webview_inner_domains":[
                   ".*calendar\\.mail\\.ru",
                   "auth\\.mail\\.ru",
                   "account\\.mail\\.ru"
                ],
                "graph_ql_host_url":"https://corsapi.<домен для облачных хранилищ>.ru/calendar/graphql",
                "prefetch_network_content_enabled":true,
                "prefetch_network_content_timeout_hours":168,
                "calendar_urls":[
                   "https://calendartouch.<домен Почты VK WorkSpace>.ru/",
                   "https://calendar.mail.ru/",
                   "https://m.calendar.mail.ru/",
                   "https://alpha.calendar.mail.ru/",
                   "https://touch.calendar.mail.ru/",
                   "https://x.calendar.mail.ru/",
                   "https://calendar.mini-mail.ru/",
                   "https://m.calendar.mini-mail.ru/",
                   "https://alpha.calendar.mini-mail.ru/",
                   "https://touch.calendar.mini-mail.ru/",
                   "https://x.calendar.mini-mail.ru/"
                ],
                "fullscreen_url_action_param_regexp":[
                   "^/selectVacationDate/?$",
                   "^/congratulations/?$",
                   "^/create/?$"
                ],
                "fullscreen_url_path_regexp":[
                   "^/selectVacationDate/?$",
                   "^/congratulations/?$",
                   "^/create/?$"
                ],
                "network_checking_enabled":false,
                "webview_disable_service_worker":true,
                "webview_dark_theme_enabled":true,
                "webview_compose_mail_urls":[
                   "https://e.mail.ru/compose"
                ],
                "url_schemes_for_webview":[
                   "https://telegram.me/",
                   "skype:",
                   "http://www.icq.com",
                   "http://www.icq.im",
                   "https://tamtam.chat/",
                   "https://play.google.com/",
                   "market://",
                   "https://calls.mail.ru/"
                ],
                "calendar_old_url_handler_enabled":true,
                "calendar_web_url":"https://calendar.<домен Почты VK WorkSpace>.ru/",
                "calendar_web_touch_url":"https://calendartouch.<домен Почты VK WorkSpace>.ru/",
                "calendar_web_auth_url":"https://auth.<домен Почты VK WorkSpace>.ru/cgi-bin/auth",
                "calendar_web_base_static_url":"https://img.<домен Почты VK WorkSpace>.ru",
                "calendar_web_avatar_url":"https://filin.<домен Почты VK WorkSpace>.ru/pic?email",
                "calendar_web_myteam_avatar_url":"https://ub.<домен VK Teams>.ru/api/v65",
                "calendar_web_myteam_api_url":"https://u.<домен VK Teams>.ru/api/v65",
                "calendar_web_oauth_url":"https://corsapi.<домен для облачных хранилищ>.ru"
          },
          "mail": {
                "external": false,
                "mail-android-app-urlscheme": "mail-onpremise-auth://",
                "mail-ios-app-urlscheme": "mailrumail-x-callback://",
                "mail-mobile-url": "https://e.<домен Почты VK WorkSpace>.ru/inbox?wv=1",
                "needs_auth": true,
                "service-worker-enabled": true,
                "is-public": false,
                "url": "https://e.<домен Почты VK WorkSpace>.ru/inbox?wv=1", // для версии Почты VK WorkSpace 1.20.2 и выше
                "url": "https://e.<домен Почты VK WorkSpace>.ru/api/v1/user/webauth/vkteams?wv=1", // для версии Почты VK WorkSpace 1.20 и ниже
                "compose_url": "https://e.<домен Почты VK WorkSpace>.ru/compose?wv=1",
                "use-native-instead": true
          },
          "calendar": {
            "use-native-instead": true,
            "external": false,
            "is-public": false,
            "needs_auth": true,
            "template-domains": [
              "calendarx.<домен Почты VK WorkSpace>.ru"
            ],
            "url": "https://calendarmsg.<домен Почты VK WorkSpace>.ru",
            "mobile-url": "https://calendartouch.<домен Почты VK WorkSpace>.ru",
            "mobile-create-event-url": "https://calendartouch.<домен Почты VK WorkSpace>.ru/create",
            "touch-web-enabled": true,
            "touch-web-url": "https://calendartouch.<домен Почты VK WorkSpace>.ru"
          },
          "cloud": {
            "use-native-instead": true,
            "external": false,
            "needs_auth": true,
            "is-public": false,
            "template-domains": [
              "cloud.<домен Почты VK WorkSpace>.ru"
            ],
            "url": "https://cloud.<домен Почты VK WorkSpace>.ru?wv=1&need_silent=0"
          },
          "auth":{
            "o2host":"https://o2.<домен Почты VK WorkSpace>.ru/",
            "ssohost":"https://auth.<домен Почты VK WorkSpace>.ru",
            "email_request_host":"https://e.<домен Почты VK WorkSpace>.ru",
            "aimsidhost": "https://e.<домен Почты VK WorkSpace>.ru"
          }
        }
    }
    

  4. Добавьте в секцию disposition:

    "disposition": {
        "desktop": {
            "leftbar": [
                "tasks",
                "calls",
                "mail",
                "calendar",
                "cloud", 
                "orgstructure" // добавьте, если пользуетесь функциональностью структуры организаций
            ]
        },
        "mobile": {
            "services": [
                "discover",
                "cloud"
            ],
            "tabs": [
                "calls",
                "tasks",
                "mail",            
                "calendar",            
                "orgstructure" // добавьте, если пользуетесь функциональностью структуры организаций
            ]
        }
    }
    
  5. Для инсталляции на одну виртуальную машину выполните команду:

    HELMWAVE_USE_LOCAL_REPO_CACHE=true hwup -t godmod
    

Для кластерной инсталляции:

HELMWAVE_USE_LOCAL_REPO_CACHE=true HELMWAVE_ENV_NAME=cluster hwup -t godmod

Шаг 11. Пересоздайте pod админ-консоли

Перезапустите под в технологическое окно (может приводить к сбою в новых подключениях):

kubectl delete pods -n vkteams -l app=myteam-admin

Шаг 12. Настройте сервис Skywalker

Примечание

Этот шаг выполняется, если используется Диск VK WorkSpace.

  1. Получите access_token <webapi-token>:

    1. Подключитесь по SSH к серверу Почты VK WorkSpace (к машине, где запущен onpremise-depoyer_linux в случае распределенной установки).

    2. Выполните команду:

      grep -i webapi_vkt_token /home/deployer/main.yaml
      

      Примечание

      В команде используется директория /home/deployer/. Но если при установке Почты вы распаковали архив с дистрибутивом в другую директорию, укажите ее в команде.

  2. На сервере VK Teams выполните команды:

    1. В конфигурационном файле /usr/local/nginx-im/html/myteam/myteam-config.json включите флаг save-to-cloud-enabled:true.

    2. Для инсталляции на одну виртуальную машину выполните команду:

      HELMWAVE_USE_LOCAL_REPO_CACHE=true hwup -t godmod
      

      Для кластерной инсталляции:

      HELMWAVE_USE_LOCAL_REPO_CACHE=true HELMWAVE_ENV_NAME=cluster hwup -t godmod
      
    3. Перезапустите под в технологическое окно (может приводить к сбою в новых подключениях):

      kubectl delete pods -n vkteams -l app=myteam-admin
      
    4. В файле vim /usr/local/go.files.icq.com/files.icq.com.config.yaml включите флаг show_cloud_file_status: true.

    5. Перезапустите службу:

      systemctl restart gofiles_httpd
      
    6. Отредактируйте файл /usr/local/etc/k8s/helmwave/store/skywalker.yml:

      cloud:
          host: "cloud-serverside-api.<домен_Почты>"
          timeout: 60s
          upload_timeout: 1m
          domain: "cloud.<домен_Почты>"
          default_folder_to_save_file: "/Файлы мессенджера"
          force_loader_url: "http://cloclo-int.<домен_Почты>/dupload"
          access_token: "<webapi-token>"
      mail:
          host: "serverside-api.<домен_Почты>"
          timeout: 5s    
      
    7. Включите Skywlaker для вашего оружения. Перейдите в конфигурационный файл /usr/local/etc/k8s/helmwave/projects.yml и в секции disabled удалите skywalker:

      envs:
          all:
              projects:
                  disabled:
                      ...
                      skywalker: # удалите строчку
                      ...
      
    8. Примените изменения.

      Для инсталляции на одну виртуальную машину выполните команды:

      export HELMWAVE_USE_LOCAL_REPO_CACHE=1
      helmwave up --build --tpl helmwave.yml.tpl --yml --templater gomplate -t myteam-admin
      

      Для распределенной инсталляции VK Teams версии 23.8 и выше выполните команду на одном из первых трех серверов:

      im_deployer --helmwave --update --hw-project skywalker --hw-once
      

Настройки на стороне Почты VK WorkSpace

Все описанные ниже действия выполняются в веб-интерейсе установщика Почты VK WorkSpace:

http://адрес_сервера_Почты_VK_WorkSpace:8888

Шаг 1. Включите интеграцию с VK Teams

Если при первичной установке Почты VK WorkSpace не были включены компоненты интеграции с VK Teams, их необходимо включить.

  1. Нажмите на кнопку в правом верхнем углу, выберите пункт Продукты.
  2. Включите следующие компоненты:

    • Интеграция с VK Teams.
    • Календарь: бот календаря для VK Teams.
    • Бот новых почтовых сообщений для VK Teams.
  3. Нажмите на кнопку Сохранить.

  4. Перейдите на вкладку AdminPanel.
  5. Сгенерируйте новые контейнеры:

    • Если Почта VK WorkSpace установлена на одной машине, нажмите на кнопку Сгенерировать автоматически.
    • В случае распределенной установки:

      1. Нажмите Добавить Несколько контейнеров.
      2. Установите фильтр Установлено не более 0.
      3. Распределите недостающие контейнеры по гипервизорам с учетом дублируемости.
      4. Нажмите на кнопку Добавить.

Шаг 2. Укажите настройки интеграции веб-интерфейсе установщика Почты

  1. В веб-интерфейсе установщика перейдите на вкладку Настройки.
  2. Выберите ИнтеграцииИнтеграция с VK Teams.
  3. Включите флаг Использовать SSL шифрование.
  4. Заполните все поля:

    Название поля Значение
    Адрес API VK Teams для добавления/удаления пользователей stentor.<домен VK Teams>.ru
    Адрес API управления VK Teams admin.<домен VK Teams>
    Адрес API бинарных данных VK Teams ub.<домен VK Teams>
    Адрес клиентского API VK Teams u.<домен VK Teams>
    Адрес веб-версии VK Teams webim.<домен VK Teams>
    Адрес Mini App API files-n.<домен VK Teams>
    Адрес API звонков (ссылок на звонок) call.<домен VK Teams>
    Адрес сервера документации VK Teams Укажите адрес портала организации, по которому доступно клиентское приложение VK Teams и инструкции VK Teams, например:
    dl.<домен VK Teams>
    Адрес сервера VK Teams, где находится Grafana Для версии VK Teams 24.2 и ниже:
    stentor.<домен VK Teams>/myteam-grafana

    Для версий VK Teams 24.3 и 24.9:
    stentor.<домен VK Teams>/grafana

    Начиная с версии VK Teams 25.2:
    stentor.<домен VK Teams>/dashboards
    Путь URL-адреса для Grafana в домене панели администрирования myteam-grafana
    Токен VK Teams для получения структуры организаций в панели администрирования Значение key из шага 3 «Создайте токен biz-admin»
    Пользователь ClickHouse VK Teams biz
    Пароль пользователя ClickHouse VK Teams Чтобы получить пароль, выполните команду:
    cat /usr/local/etc/k8s/helmwave/projects/godmod/secrets/clickhouse-metric-cluster.yml | grep password: | cut -d':' -f2 | sed 's/ //'
    Список IP адресов/подсетей VK Teams (для ACL в SWA) <IP-адрес сервера VK Teams>

    Примечание

    На скриншоте ниже в качестве домена VK Teams используется vkt-02.on-premise.ru. Используйте ваш домен VK Teams.

Шаг 3. Импортируйте сертификаты

Внимание

Этот шаг необходимо выполнить, если вы используете свой центр сертификаци.

Подключение к компонентам VK Teams происходит по SSL, поэтому может возникать ошибка с недоверием к сертификату. Поскольку проверка SSL происходит при развертывании контейнеров calendarbot, то установить их вручную нельзя. Ошибка недоверия сертификатов происходит и для контейнеров mailbot, mailapi, calendarapi.

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

  1. Подключитесь к виртуальным машинам-фронтам, на которых развернуты контейнеры calendarbot-api*, calendarbot-processor*, mailbot*, mailapi*, calendarapi*.

  2. Создайте директории certs для контейнеров:

    mkdir /opt/mailOnPremise/dockerVolumes/calendarbot-api1/certs 
    mkdir /opt/mailOnPremise/dockerVolumes/calendarbot-processor1/certs 
    mkdir /opt/mailOnPremise/dockerVolumes/mailbot1/certs 
    mkdir /opt/mailOnPremise/dockerVolumes/mailapi1/certs 
    mkdir /opt/mailOnPremise/dockerVolumes/calendarapi1/certs 
    
  3. Скопируйте подготовленные заранее выпускающий и корневой сертификаты (только в формате .crt):

    cp <your_cert.crt> /opt/mailOnPremise/dockerVolumes/calendarbot-api<номер_контейнера>/certs/
    cp <your_cert.crt> /opt/mailOnPremise/dockerVolumes/calendarbot-processor<номер_контейнера>/certs/
    cp <your_cert.crt> /opt/mailOnPremise/dockerVolumes/mailbot<номер_контейнера>/certs/
    cp <your_cert.crt> /opt/mailOnPremise/dockerVolumes/mailapi<номер_контейнера>/certs/
    cp <your_cert.crt> /opt/mailOnPremise/dockerVolumes/calendarapi<номер_контейнера>/certs/
    
  4. Создайте файл custom_roles.yaml:

    nano /home/deployer/custom_roles.yaml
    
  5. Добавьте в файл:

    Внимание

    Перечень команд нужно передавать с помощью командного интерпретатора bash -с, иначе контейнер упадет.

    calendarbot-api:
      volumes:
        - src: etc
          dst: /usr/local/etc
        - src: certs
          dst: /etc/pki/ca-trust/source/anchors
      command: bash -c "update-ca-trust extract && /usr/local/bin/calendarbot_api --config /usr/local/etc/calendar-bot-api.yaml"
    
    calendarbot-processor:
      volumes:
        - src: etc
          dst: /usr/local/etc
        - src: certs
          dst: /etc/pki/ca-trust/source/anchors
      command: bash -c "update-ca-trust extract && /usr/local/bin/calendarbot_processor --config /usr/local/etc/calendar-bot-processor.yaml"
    
    mailbot:
      volumes:
        - src: conf
          dst: /usr/local/etc/
        - src: certs
          dst: /etc/pki/ca-trust/source/anchors
      entrypoint: bash -c 'update-ca-trust extract; exec /usr/local/bin/mailbot -config /usr/local/etc/mailbot.yaml -log /dev/stdout'
    
    mailapi:
      volumes:
        - src: conf
          dst: /usr/local/etc
        - src: tmp
          dst: /tmp
        - src: log
          dst: /var/log
        - src: aestat
          dst: /var/log/aestat
        - src: static
          dst: /usr/local/www
        - src: entrypoint
          dst: /entrypoint.d
        - src: certs
          dst: /etc/pki/ca-trust/source/anchors
      command: bash -c "update-ca-trust extract && /entrypoint.d/mailapi.sh" 
    
    calendarapi:
      volumes:
        - src: etc
          dst: /usr/local/etc
        - src: entrypoint
          dst: /entrypoint.d
        - src: certs
          dst: /etc/pki/ca-trust/source/anchors
    
  6. В контейнере calendarapi, в файл /home/deployer/configs/calendar/calendarapi.sh добавьте команду для обновления сертификата:

    update-ca-trust extract || true
    

    Итоговый вид файла:

    #!/bin/bash
    
    export WAITING_DB_MYSQL=""
    export WAITING_DB_PGSQL="calendarpg"
    
    source /entrypoint.d/waiting_dbs.sh
    
    update-ca-trust extract || true
    
    exec $@
    
  7. Перезапустите установщик:

    sudo systemctl restart deployer.service
    
  8. Остановите и удалите контейнеры calendarapi-envoy*:

    docker stop calendarapi-envoy1
    docker rm calendarapi-envoy1
    
  9. Выполните шаг up_container в веб-интерфейсе установщика, для контейнеров: calendarbot-api*, calendarbot-processor*, mailbot*, mailapi*, calendarapi*.

  10. Запустите автоматическую установку.

Шаг 4. Заполните данные ботов в веб-интерфейсе установщика Почты

  1. В веб-интерфейсе установщика перейдите на вкладку Настройки.
  2. Выберите Интеграции Боты для VK Teams.
  3. Включите флаг Использовать SSL-шифрование.
  4. Заполните поля:

    Название поля Значение
    Адрес bot-api VK Teams api.<домен VK Teams>
    ID бота календаря VK Teams ID бота, созданного на шаге 1 «Создайте бот для календаря»
    Токен бота календаря VK Teams token бота, созданного на шаге 1 «Создайте бот для календаря»
    Токен бота новых почтовых сообщений VK Teams token бота, созданного на шаге 2 «Создайте почтовый бот»

    Примечание

    На скриншоте ниже используется адрес bot-api VK Teams с тестового стенда. Используйте ваш адрес bot-api VK Teams.

Шаг 5. Завершите настройку

  1. В веб-интерфейсе установщика перейдите на вкладку AdminPanel.
  2. Запустите автоматическую установку, нажав на кнопку Play .