DoПорталРедакция от 14.10.2026
Руководство системного администратора

Установка и сопровождение DoПортала

Развёртывание на Windows Server 2019 и новее под IIS: база PostgreSQL, сетевое хранилище объектов, вход по доменной учётной записи и роли из групп Active Directory.

  1. Как устроен портал
  2. Требования
  3. Подготовка сервера
  4. База данных PostgreSQL
  5. Публикация файлов
  6. Сайт и пул приложений IIS
  7. Хранилище объектов
  8. Active Directory и вход без пароля
  9. Настройка конфигуратором
  10. AutoCAD на сервере
  11. Рабочие места
  12. Проверка после установки
  13. Резервное копирование
  14. Обновление версии
  15. Тестовый режим
  16. Наблюдение за работой
  17. Типовые неполадки
01

Как устроен портал

DoПортал — веб-приложение ASP.NET Core (Blazor Server) на .NET 10. Браузер держит с сервером постоянное соединение WebSocket, поэтому протокол WebSocket в IIS обязателен. Фоновые задачи (напоминания о сроках, сборка пояснительной записки, операции AutoCAD) выполняются внутри процесса портала.

Рабочие местаEdge или Chrome, вход по учётной записи WindowsHTTP 80 / HTTPS 443 → сервер
Модуль запускаОткрывает файлы из портала в AutoCAD, Word, проводнике (протокол doportal://)
Сервер порталаWindows Server 2019+, IIS, пул «DoPortal» без управляемого кодаПапка C:\inetpub\DoPortal: портал, конфигуратор, AppData (вложения, подписи)Фоновые очереди, проверка сроков раз в час
AutoCAD (лицензия заказчика)accoreconsole.exe для штампов, моделей и XREF
PostgreSQLБазы doportal и doportal_testTCP 5432
Сетевое хранилище\\fileserver\projects\01НГИ — папки объектовSMB 445
Контроллер доменаВход Kerberos/NTLM, группы ролей, данные сотрудниковLDAP 389, Kerberos 88
02

Требования

КомпонентТребование
Сервер порталаWindows Server 2019, 2022 или 2025 в домене; подходит виртуальная машина. Рекомендуется 4 vCPU, 8 ГБ ОЗУ, 40 ГБ на системном диске плюс место под вложения.
Роли IISВеб-сервер, проверка подлинности Windows, протокол WebSocket, инициализация приложений, консоль управления.
.NETASP.NET Core 10 Hosting Bundle. Конфигуратор публикуется автономным файлом и отдельного runtime не требует.
СУБДPostgreSQL 14 или новее на этом или отдельном сервере.
ХранилищеОбщая папка Windows (SMB), доступная серверу по UNC-пути.
AutoCADЛицензионный AutoCAD 2024, 2025 или 2026 на сервере портала. Необязателен: без него не работают штампы, модели и XREF.
КлиентыMicrosoft Edge или Google Chrome актуальной версии.

Сетевые доступы

ОткудаКудаПорт
Рабочие местаСервер портала80 или 443
Сервер порталаPostgreSQL5432
Сервер портала, рабочие местаФайловый сервер445
Сервер порталаКонтроллеры домена88, 389 (и 636 при LDAPS)
03

Подготовка сервера

  1. Установите роли IIS (PowerShell от имени администратора):
    Install-WindowsFeature Web-Server, Web-Windows-Auth, Web-WebSockets, `
        Web-AppInit, Web-Mgmt-Console
  2. Скачайте с сайта Microsoft ASP.NET Core 10 Runtime — Windows Hosting Bundle, установите и перезапустите IIS:
    iisreset
    Порядок важенHosting Bundle ставится после ролей IIS. Если IIS добавили позже, запустите установщик Hosting Bundle ещё раз и выберите «Исправить».
  3. Создайте DNS-запись doportal (тип A или CNAME) на сервер портала. Сотрудники будут открывать http://doportal.
04

База данных PostgreSQL

Портал сам создаёт и обновляет структуру базы при запуске. Нужно только завести пользователя и пустые базы.

-- psql от имени postgres
CREATE ROLE doportal LOGIN PASSWORD 'надёжный-пароль';
CREATE DATABASE doportal      OWNER doportal ENCODING 'UTF8';
CREATE DATABASE doportal_test OWNER doportal ENCODING 'UTF8';  -- для тестового режима

Если PostgreSQL на отдельном сервере, разрешите подключение с сервера портала в pg_hba.conf и откройте порт 5432 в брандмауэре.

05

Публикация файлов

Сборка на машине разработчика или сборочном сервере:

dotnet publish src/DoPortal.Web -c Release -o publish/DoPortal
dotnet publish src/DoPortal.Configurator -c Release -r win-x64 --self-contained `
    -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true `
    -o publish/DoPortal/Configurator
dotnet publish src/DoPortal.Launcher -c Release -r win-x64 --self-contained `
    -p:PublishSingleFile=true -o publish/Launcher

Скопируйте publish/DoPortal на сервер в C:\inetpub\DoPortal. Должно получиться:

C:\inetpub\DoPortal\
├─ DoPortal.Web.dll, web.config, wwwroot\ …   портал
├─ AutoCAD\DoStructure.XrefPlugin.dll        плагин вставки XREF
├─ Configurator\DoPortal.Configurator.exe    находит ..\appsettings.json сам
├─ !Шаблоны\                                 запасные шаблоны ПЗ (необязательно)
├─ AppData\                                  создаётся порталом: вложения, подписи
└─ appsettings.json                          настройки, правится конфигуратором
Не копируйте на серверappsettings.Development.json — в нём демонстрационные настройки разработчика. Папку HeadlessCAD из репозитория разработчика тоже не переносите: это модули AutoCAD, они распространяются только по лицензии Autodesk.
06

Сайт и пул приложений IIS

  1. Пул приложений и сайт (PowerShell от имени администратора):
    Import-Module WebAdministration
    New-WebAppPool -Name DoPortal
    $p = 'IIS:\AppPools\DoPortal'
    Set-ItemProperty $p managedRuntimeVersion ''              # без управляемого кода
    Set-ItemProperty $p processModel.loadUserProfile $true
    Set-ItemProperty $p processModel.idleTimeout '00:00:00'  # не засыпать: фоновые задачи
    Set-ItemProperty $p startMode AlwaysRunning
    Set-ItemProperty $p recycling.periodicRestart.time '00:00:00'
    
    New-Website -Name DoPortal -PhysicalPath C:\inetpub\DoPortal `
        -ApplicationPool DoPortal -Port 80 -HostHeader doportal
    Set-ItemProperty IIS:\Sites\DoPortal applicationDefaults.preloadEnabled $true
  2. Проверка подлинности: Windows — включить, анонимная — выключить.
    $f = 'system.webServer/security/authentication'
    Set-WebConfigurationProperty -PSPath IIS:\ -Location DoPortal `
        -Filter "$f/windowsAuthentication" -Name enabled -Value $true
    Set-WebConfigurationProperty -PSPath IIS:\ -Location DoPortal `
        -Filter "$f/anonymousAuthentication" -Name enabled -Value $false
  3. Удостоверение пула. Рекомендуется доменная служебная учётная запись, например CORP\svc-doportal: ей проще выдать права на хранилище и базу.
    Set-ItemProperty $p processModel -Value @{
        identityType = 'SpecificUser'; userName = 'CORP\svc-doportal'; password = '…' }

    Если оставить ApplicationPoolIdentity, к сетевым ресурсам портал обращается от имени компьютера сервера CORP\ИМЯСЕРВЕРА$.

  4. Права на данные портала:
    icacls C:\inetpub\DoPortal\AppData /grant "CORP\svc-doportal:(OI)(CI)M"
    icacls C:\inetpub\DoPortal\appsettings.json /grant "CORP\svc-doportal:R"
  5. Для HTTPS добавьте привязку 443 с сертификатом организации и при желании перенаправление с HTTP.
Почему пул не должен засыпатьПо умолчанию IIS останавливает пул после 20 минут без запросов. Тогда ночью не работают проверка сроков и фоновые очереди, а первый утренний вход ждёт запуска приложения.
07

Хранилище объектов \\fileserver\projects\01НГИ

09

Настройка конфигуратором

Запустите C:\inetpub\DoPortal\Configurator\DoPortal.Configurator.exe на сервере портала от имени администратора. Пароли в appsettings.json шифруются ключом этого сервера (DPAPI): сохранённый на другом компьютере файл здесь не расшифруется.

  1. База данных — сервер, порт, база doportal, пользователь и пароль → «Проверить подключение».
  2. Хранилище и AutoCAD — корень \\fileserver\projects\01НГИ → «Проверить доступ». Путь к AutoCAD можно оставить пустым, если AutoCAD установлен в стандартную папку.
  3. Active Directory — корень домена LDAP://DC=corp,DC=local, таблица «Группа AD → роль» → «Проверить группы».
  4. Сохранить настройки, затем на вкладке «Обзор и диагностика» → «Проверить всё» → «Перезапустить портал».
  5. По желанию — Импорт из AD: заводит всех активных сотрудников заранее, с отделами и ролями по группам. Роль «Администратор» при импорте не выдаётся.
  6. В портале под администратором заполните справочники: отделы с руководителем и ВРИО, заказчики, месторождения, типы объектов с шаблонами папок, праздники, шаблоны документов.
Конфигуратор: обзор и диагностика
Обзор и диагностика: восемь проверок и перезапуск пула.
Конфигуратор: хранилище и AutoCAD
Хранилище и AutoCAD.
Конфигуратор: сопоставление групп AD и ролей
Active Directory: группы → роли.
Конфигуратор: пользователи и роли
Пользователи и роли: ручная настройка поверх AD.
10

AutoCAD на сервере

11

Рабочие места

Кнопки «Открыть в AutoCAD / Word / проводнике» используют протокол doportal://. На каждый компьютер (удобно групповой политикой или SCCM):

  1. Скопируйте DoPortal.Launcher.exe из publish/Launcher в C:\DoPortal\.
  2. Импортируйте src\DoPortal.Launcher\install_protocol.reg, или распространите ключ HKEY_CLASSES_ROOT\doportal политикой реестра.

Если сотрудники обращаются к хранилищу по-разному (буква диска, старое имя сервера, IP-адрес), перечислите эти варианты в C:\DoPortal\roots.txt, по одному в строке. Модуль запуска будет подставлять их, если файл не открывается по основному пути. Для самого портала те же варианты задаются в appsettings.json: "Portal": { "NgiRootAliases": [ "Z:\\01НГИ" ] }.

Без модуля запуска портал работает полностью, недоступно только открытие файлов одной кнопкой.

12

Проверка после установки

13

Резервное копирование

Сохраняйте три вещи: базу данных, папку AppData (вложения и сканы подписей) и appsettings.json. Каталог 01НГИ копируется вашими обычными средствами файлового сервера.

# C:\Scripts\doportal-backup.ps1 — ежедневно через Планировщик заданий
$d   = Get-Date -Format 'yyyy-MM-dd'
$dst = 'D:\Backup\DoPortal'
$env:PGPASSFILE = 'C:\Scripts\pgpass.conf'   # localhost:5432:doportal:doportal:пароль
& 'C:\Program Files\PostgreSQL\16\bin\pg_dump.exe' -h localhost -U doportal -F c `
    -f "$dst\doportal-$d.dump" doportal
robocopy C:\inetpub\DoPortal\AppData "$dst\AppData" /MIR /R:1 /W:1 | Out-Null
Copy-Item C:\inetpub\DoPortal\appsettings.json "$dst\appsettings-$d.json"
Get-ChildItem $dst -Filter 'doportal-*.dump' |
    Where-Object LastWriteTime -lt (Get-Date).AddDays(-14) | Remove-Item

Восстановление базы: pg_restore -h localhost -U doportal -d doportal --clean doportal-ГГГГ-ММ-ДД.dump.

Перенос на другой серверПароли в appsettings.json зашифрованы ключом старого сервера. После переноса откройте конфигуратор на новом сервере, введите пароли базы и сетевой папки заново и сохраните.
14

Обновление версии

  1. Сделайте резервную копию базы.
  2. Положите файл app_offline.htm в C:\inetpub\DoPortal: портал покажет страницу обслуживания и освободит файлы.
  3. Скопируйте новую публикацию поверх, кроме appsettings.json и папки AppData.
  4. Удалите app_offline.htm. Изменения структуры базы применятся при первом запуске.
  5. Конфигуратор → «Проверить всё».

Обновление удобно сначала проверить в тестовом режиме на копии базы.

15

Тестовый режим

Конфигуратор → «Режим работы» → «Тестовый режим». Портал переключается на отдельную базу (doportal_test) и отдельную папку хранилища, не обращается к AD и заводит пользователей локально. На каждой странице видна полоса «Тестовый режим». Используйте его для обучения и проверки обновлений; для возврата снимите флажок, сохраните и перезапустите портал.

Конфигуратор: режим работы
Режим работы.
16

Наблюдение за работой

Где смотретьЧто там
/admin/auditЖурнал администрирования: изменения ролей, настроек, импорт из AD. Только для администраторов.
/hangfireФоновые задачи: сборка ПЗ, операции AutoCAD, ошибки и повторы. Только для администраторов.
Журнал Windows «Приложение»Ошибки запуска модуля ASP.NET Core (источник «IIS AspNetCore Module V2»).
C:\inetpub\DoPortal\logsПодробный вывод портала. Включается в web.config: stdoutLogEnabled="true"; после разбора проблемы выключите.
17

Типовые неполадки

ПризнакПричина и решение
HTTP 500.19Не установлен Hosting Bundle или он поставлен до IIS. Переустановите Hosting Bundle, выполните iisreset.
HTTP 500.30 при запускеПортал не стартовал. Чаще всего недоступна база или неверный пароль, либо appsettings.json сохранён на другом сервере и пароль не расшифровывается. Проверьте журнал «Приложение», пересохраните настройки конфигуратором.
Браузер спрашивает логин и парольСайт не в зоне «Местная интрасеть», включена анонимная проверка подлинности или портал открыт по IP. См. раздел 08.
HTTP 401Выключена проверка подлинности Windows на сайте.
Страница постоянно переподключаетсяНе установлен протокол WebSocket в IIS или соединение режет прокси. Установите Web-WebSockets, добавьте портал в исключения прокси.
Папки объектов не создаются, «Доступ запрещён»У удостоверения пула нет прав на \\fileserver\projects\01НГИ, либо в настройках указана буква диска вместо UNC-пути. Конфигуратор → «Проверить доступ».
Роли из AD не применилисьПодождите до 10 минут или перезапустите пул; проверьте, что группа есть в сопоставлении и что у пользователя не стоит отметка «Роли заданы вручную». В тестовом режиме AD не используется.
Не обновляются штампы, не создаются моделиAutoCAD не найден или не активирована лицензия. Конфигуратор → «Проверить всё», пункт AutoCAD.
Нет утренних напоминаний, первый вход долгийПул засыпает. Проверьте idleTimeout = 0, startMode = AlwaysRunning, preloadEnabled = true (раздел 06).
Кнопка «Открыть в AutoCAD» ничего не делаетНа рабочем месте не установлен модуль запуска или не импортирован install_protocol.reg.