Внешние сервисы
Эта инструкция для администратора, который хочет подключить к Portal свою инфраструктуру (PostgreSQL, Redis, S3) вместо встроенной из Docker/K8s bundle — или настроить Native, где внешние сервисы обязательны.
Читайте раздел своего канала. После правок конфига обычно нужен повторный install/upgrade или правка .env / portal.env и рестарт.
0. Что внутри, а что снаружи
Заголовок раздела «0. Что внутри, а что снаружи»| Сервис | Docker bundle | Kubernetes | Native |
|---|---|---|---|
| PostgreSQL 16 | Встроен | Subchart или внешний | Только ваш |
| Valkey/Redis 8 | Встроен | Subchart или внешний | Только ваш |
| S3-хранилище | SeaweedFS или внешний | SeaweedFS или внешний | Только ваш |
| Portal Office | Встроен (образ) | Subchart | Отдельный сервер / пакет |
1. Выберите свой раздел
Заголовок раздела «1. Выберите свой раздел»| Задача | Раздел |
|---|---|
| K8s + своя БД | §2 |
| K8s + свой S3 | §3 |
| Docker + свой S3 | §4 |
| Native Linux / Windows | §5 |
| Требования к Postgres / S3 | §6 · §7 |
| LDAP / Active Directory | §8 |
| Portal Office | §9 |
2. Kubernetes: внешняя БД
Заголовок раздела «2. Kubernetes: внешняя БД»Шаг 2.1. Отключите встроенный PostgreSQL
Заголовок раздела «Шаг 2.1. Отключите встроенный PostgreSQL»В portal-values.generated.yaml (или вашем values):
postgresql: enabled: false host: postgres.corp.local port: 5432 database: portal user: portal
secrets: postgresPassword: "ваш-пароль"Подставьте свои host / database / user / password.
Шаг 2.2. Примените
Заголовок раздела «Шаг 2.2. Примените»./portal-cli/portal-cli upgrade --mode k8s# или install при первой установкеkubectl -n portal get podsПроверка с пода API (имя уточните):
kubectl -n portal get pods | grep -i backendЕсли db-init падает — смотрите логи Job и доступность хоста БД из кластера.
3. Kubernetes: внешний S3
Заголовок раздела «3. Kubernetes: внешний S3»Шаг 3.1. Отключите SeaweedFS и укажите S3
Заголовок раздела «Шаг 3.1. Отключите SeaweedFS и укажите S3»seaweedfs: enabled: false
s3: endpoint: s3.corp.local # hostname без схемы (без https://) port: 443 useSsl: true accessKey: portal-rw bucket: portal-files
secrets: s3SecretKey: "ваш-секрет"Шаг 3.2. Откуда берутся значения
Заголовок раздела «Шаг 3.2. Откуда берутся значения»portal-cli install --mode k8s подставит поля из portal.config.yaml (storage.*), если endpoint ≠ seaweedfs.
Шаг 3.3. Проверка
Заголовок раздела «Шаг 3.3. Проверка»После деплоя загрузите тестовый файл в библиотеку документов Portal. В логах API не должно быть ошибок S3.
4. Docker: внешний S3
Заголовок раздела «4. Docker: внешний S3»Шаг 4.1. Через portal.config.yaml (предпочтительно)
Заголовок раздела «Шаг 4.1. Через portal.config.yaml (предпочтительно)»storage: endpoint: s3.corp.local port: 443 useSsl: true accessKey: portal-rw secretKey: "..." bucket: portal-filesЗатем portal-cli install / upgrade — установщик запишет S3_* в .env.
Шаг 4.2. Или вручную в .env
Заголовок раздела «Шаг 4.2. Или вручную в .env»cd /путь/к/portal-*-docker-bundlenano .envЗадайте:
# не поднимать встроенный SeaweedFSCOMPOSE_PROFILES=
S3_ENDPOINT=s3.corp.localS3_PORT=443S3_USE_SSL=trueS3_ACCESS_KEY=portal-rwS3_SECRET_KEY=...S3_BUCKET=portal-filesПо умолчанию бывает COMPOSE_PROFILES=seaweedfs и S3_ENDPOINT=seaweedfs — это встроенное хранилище.
Шаг 4.3. Пересоздайте сервисы
Заголовок раздела «Шаг 4.3. Пересоздайте сервисы»docker compose up -d --force-recreate backend workerdocker compose pscurl -sS http://127.0.0.1/health5. Native Linux / Windows
Заголовок раздела «5. Native Linux / Windows»Внешние Postgres, Redis и S3 обязательны.
Шаг 5.1. portal.config.yaml
Заголовок раздела «Шаг 5.1. portal.config.yaml»storage: endpoint: s3.corp.local port: 443 useSsl: true accessKey: portal-rw secretKey: "..." bucket: portal-filesАналогично заполните database.* и cache.*.
Шаг 5.2. Установка / обновление
Заголовок раздела «Шаг 5.2. Установка / обновление»portal-cli запишет S3_* (и остальное) в portal.env:
- Linux:
/etc/portal/portal.env - Windows:
C:\ProgramData\Portal\portal.env
# Linux./portal-cli/portal-cli install --mode native# или после правки:sudo systemctl restart portal-api portal-worker# Windows.\portal-cli\portal-cli.ps1 install -Mode nativeRestart-Service PortalApi, PortalWorkerШаг 5.3. Проверка Postgres
Заголовок раздела «Шаг 5.3. Проверка Postgres»Linux:
source /etc/portal/portal.envpsql -h "$POSTGRES_HOST" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c 'SELECT 1'6. Требования к PostgreSQL
Заголовок раздела «6. Требования к PostgreSQL»- Версия 16+.
- Кодировка UTF8.
- Права: CREATE; миграции через
Portal.DbInit. - При >100 одновременных соединений рекомендуется PgBouncer.
Проверка версии:
psql -c 'SHOW server_version;'7. Требования к S3
Заголовок раздела «7. Требования к S3»- API-совместимость с AWS S3 (path-style).
- Bucket
portal-files(или свой — тогдаS3_BUCKET/s3.bucket). - Access key / secret key с правами Read / Write / List (желательно CreateBucket для seed).
- Endpoint: только hostname без схемы; порт —
S3_PORT/s3.port; TLS —S3_USE_SSL/s3.useSsl. - CORS на bucket не требуется (браузер к S3 не ходит).
8. LDAP / Active Directory
Заголовок раздела «8. LDAP / Active Directory»Настраивается только в админке, не в .env:
- Войдите как администратор.
- Админка → Службы → Синхронизация AD → Настройки (
/services/ad-sync). - Укажите URL, Base DN, Bind DN и пароль.
- Проверьте badge «Подключён».
- При необходимости включите синхронизацию групп и службу ad-sync (Службы).
Переменные LDAP_* в portal.env не читаются (при обновлении старые значения один раз переносятся в БД автоматически).
Подробнее: Службы → ad-sync, Группы доступа.
Если доменный вход не работает — Устранение неполадок.
9. Portal Office
Заголовок раздела «9. Portal Office»В Docker/Kubernetes редактор Portal Office (portal/office) уже в images/portal-images.tar.
Для Native (и выделенного хоста) скачайте пакет на korport.ru/portal-office по ключу и привязке — Linux systemd или Docker. См. Portal Office.
Укажите office.publicUrl и доступный из Office WOPI_HOST_URL.