Перейти к содержимому

Внешние сервисы

Эта инструкция для администратора, который хочет подключить к Portal свою инфраструктуру (PostgreSQL, Redis, S3) вместо встроенной из Docker/K8s bundle — или настроить Native, где внешние сервисы обязательны.

Читайте раздел своего канала. После правок конфига обычно нужен повторный install/upgrade или правка .env / portal.env и рестарт.


СервисDocker bundleKubernetesNative
PostgreSQL 16ВстроенSubchart или внешнийТолько ваш
Valkey/Redis 8ВстроенSubchart или внешнийТолько ваш
S3-хранилищеSeaweedFS или внешнийSeaweedFS или внешнийТолько ваш
Portal OfficeВстроен (образ)SubchartОтдельный сервер / пакет

ЗадачаРаздел
K8s + своя БД§2
K8s + свой S3§3
Docker + свой S3§4
Native Linux / Windows§5
Требования к Postgres / S3§6 · §7
LDAP / Active Directory§8
Portal Office§9

В portal-values.generated.yaml (или вашем values):

postgresql:
enabled: false
host: postgres.corp.local
port: 5432
database: portal
user: portal
secrets:
postgresPassword: "ваш-пароль"

Подставьте свои host / database / user / password.

Окно терминала
./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 и доступность хоста БД из кластера.


seaweedfs:
enabled: false
s3:
endpoint: s3.corp.local # hostname без схемы (без https://)
port: 443
useSsl: true
accessKey: portal-rw
bucket: portal-files
secrets:
s3SecretKey: "ваш-секрет"

portal-cli install --mode k8s подставит поля из portal.config.yaml (storage.*), если endpoint ≠ seaweedfs.

После деплоя загрузите тестовый файл в библиотеку документов Portal. В логах API не должно быть ошибок S3.


storage:
endpoint: s3.corp.local
port: 443
useSsl: true
accessKey: portal-rw
secretKey: "..."
bucket: portal-files

Затем portal-cli install / upgrade — установщик запишет S3_* в .env.

Окно терминала
cd /путь/к/portal-*-docker-bundle
nano .env

Задайте:

Окно терминала
# не поднимать встроенный SeaweedFS
COMPOSE_PROFILES=
S3_ENDPOINT=s3.corp.local
S3_PORT=443
S3_USE_SSL=true
S3_ACCESS_KEY=portal-rw
S3_SECRET_KEY=...
S3_BUCKET=portal-files

По умолчанию бывает COMPOSE_PROFILES=seaweedfs и S3_ENDPOINT=seaweedfs — это встроенное хранилище.

Окно терминала
docker compose up -d --force-recreate backend worker
docker compose ps
curl -sS http://127.0.0.1/health

Внешние Postgres, Redis и S3 обязательны.

storage:
endpoint: s3.corp.local
port: 443
useSsl: true
accessKey: portal-rw
secretKey: "..."
bucket: portal-files

Аналогично заполните database.* и cache.*.

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 native
Restart-Service PortalApi, PortalWorker

Linux:

Окно терминала
source /etc/portal/portal.env
psql -h "$POSTGRES_HOST" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c 'SELECT 1'

  1. Версия 16+.
  2. Кодировка UTF8.
  3. Права: CREATE; миграции через Portal.DbInit.
  4. При >100 одновременных соединений рекомендуется PgBouncer.

Проверка версии:

Окно терминала
psql -c 'SHOW server_version;'

  1. API-совместимость с AWS S3 (path-style).
  2. Bucket portal-files (или свой — тогда S3_BUCKET / s3.bucket).
  3. Access key / secret key с правами Read / Write / List (желательно CreateBucket для seed).
  4. Endpoint: только hostname без схемы; порт — S3_PORT / s3.port; TLSS3_USE_SSL / s3.useSsl.
  5. CORS на bucket не требуется (браузер к S3 не ходит).

Настраивается только в админке, не в .env:

  1. Войдите как администратор.
  2. Админка → Службы → Синхронизация AD → Настройки (/services/ad-sync).
  3. Укажите URL, Base DN, Bind DN и пароль.
  4. Проверьте badge «Подключён».
  5. При необходимости включите синхронизацию групп и службу ad-sync (Службы).

Переменные LDAP_* в portal.env не читаются (при обновлении старые значения один раз переносятся в БД автоматически).

Подробнее: Службы → ad-sync, Группы доступа.
Если доменный вход не работает — Устранение неполадок.


В 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.