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

Быстрый старт: Native Linux

Эта инструкция рассчитана на администратора, который хочет поставить Portal без Docker: службы systemd, nginx и уже готовые PostgreSQL, Valkey/Redis и S3.

Читайте сверху вниз. На каждом шаге есть команда «что ввести» и способ проверить, что шаг удался.
Если ещё не выбрали способ установки — сначала выберите канал.


После всех шагов:

  1. На сервере работают службы portal-api и portal-worker.
  2. nginx отдаёт сайт Portal.
  3. Открывается страница входа (логин admin).
  4. Можно активировать LICENSE.key и пользоваться порталом.

Используйте готовый bundle из дистрибутива поставщика. .NET на сервере не нужен — бинарники уже self-contained.


ЧтоПростыми словамиМинимум
СерверLinux amd64Ubuntu 22.04+, Debian 12+, RHEL 9+
PostgreSQLБаза данныхверсия 16
Valkey или RedisКэшпорт 6379, CACHE_ADAPTER=redis
S3Файлы библиотекMinIO, SeaweedFS, Ceph и т.п.
nginxReverse proxy и статикаустановлен
BundleАрхив поставщикаportal-*-native-linux-amd64.tar.gz

Опционально: Portal Office на этом или отдельном хосте. Без редактора — отключите его в конфиге (см. §8).


Окно терминала
sudo -u postgres createuser portal
sudo -u postgres createdb -O portal portal
sudo -u postgres psql -c "ALTER USER portal PASSWORD 'your-password';"

Подставьте свой пароль вместо your-password. Запомните его — понадобится в конфиге.

Проверка:

Окно терминала
sudo -u postgres psql -c '\l' | grep portal
sudo -u postgres psql -c '\du' | grep portal

Должны быть база portal и пользователь portal.

Redis/Valkey обычно слушает localhost:6379. S3 (MinIO и т.п.) — часто localhost:9000, bucket portal-files. Убедитесь, что они уже запущены, прежде чем ставить Portal.

Подробнее про внешнюю инфраструктуру: Внешние сервисы.


Окно терминала
tar xzf portal-1.0.0-native-linux-amd64.tar.gz
cd portal-1.0.0-native-linux-amd64
pwd
ls -la portal-cli/portal-cli config/

Подставьте свою версию в имени архива. Должны увидеть каталог portal-cli и примеры конфигов.

Окно терминала
cp config/portal.config.native.example.yaml portal.config.yaml
nano portal.config.yaml

Обязательно заполните:

  • database.host, database / пользователь / пароль — ваши данные Postgres из §2;
  • cache.host — обычно 127.0.0.1;
  • storage.endpoint, порт, ключи, bucket — ваш S3;
  • portal.timezone — IANA-зона, например Europe/Moscow.

Сохраните файл (nano: Ctrl+O, Enter, Ctrl+X).


Окно терминала
chmod +x portal-cli/portal-cli
./portal-cli/portal-cli install --mode native

Установщик по шагам:

  1. Копирует бинарники в /opt/portal.
  2. Создаёт /etc/portal/portal.env (секреты, TZ).
  3. Ставит systemd-units и nginx vhost.
  4. Запускает Portal.DbInit (миграции + минимальный seed: admin, узлы portal/admin, страница welcome).
  5. Стартует portal-api и portal-worker.

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

Окно терминала
./portal-cli/portal-cli status --mode native
systemctl status portal-api portal-worker --no-pager

Службы должны быть active (running).


Если поставщик дал .deb, а не tar.gz:

Окно терминала
sudo dpkg -i portal_1.0.0_amd64.deb

Создайте или допишите /etc/portal/portal.env (как при обычной установке через portal-cli), затем:

Окно терминала
sudo systemctl restart portal-api portal-worker
sudo systemctl status portal-api portal-worker --no-pager

Окно терминала
./portal-cli/portal-cli status --mode native
curl -sS http://127.0.0.1/health
curl -sS http://127.0.0.1/api/v1/system/version
systemctl status portal-api portal-worker --no-pager

Ожидается: health отвечает, в version есть номер сборки, службы active.

Логи при проблемах:

Окно терминала
journalctl -u portal-api -n 80 --no-pager

Откройте в браузере адрес вашего сервера (через nginx). Логин admin, пароль — из /etc/portal/portal.env (SEED_ADMIN_PASSWORD), если установщик его сгенерировал.


Без активированного LICENSE.key запись в Portal недоступна. Ключ выдаёт поставщик (коммерческий или trial).

  1. Войдите как администратор.
  2. Админка → Настройки → Продукт и лицензия.
  3. Скопируйте Привязку (нужна для заказа ключа).
  4. Загрузите файл LICENSE.key или вставьте ключ → активируйте.
Окно терминала
./portal-cli/portal-cli license activate --file LICENSE.key
./portal-cli/portal-cli upgrade --mode native

Проверка:

Окно терминала
curl -sS http://127.0.0.1/api/v1/system/license-status

Редактор не входит в native-бандл.

  1. Скачайте пакет на korport.ru/portal-office (LICENSE.key + привязка).
  2. Установите по Portal Office:
    • Linux systemd: sudo ./install/install-root.sh
    • или Docker, если на хосте есть Docker.
  3. В portal.config.yaml включите:
office:
enabled: true
publicUrl: https://office.company.ru
internalUrl: http://office-internal:9980

WOPI_HOST_URL Portal должен быть доступен из хоста Office.

Без редактора:

office:
enabled: false

или в env: PORTAL_OFFICE_ENABLED=false.


В portal.config.yaml задайте portal.timezone (IANA, например Europe/Moscow). Значение попадёт в /etc/portal/portal.env как TZ и подхватится systemd.

После смены:

Окно терминала
sudo systemctl restart portal-api portal-worker
sudo systemctl status portal-api portal-worker --no-pager

Окно терминала
tar xzf portal-1.1.0-native-linux-amd64.tar.gz
cd portal-1.1.0-native-linux-amd64
# Не затирайте рабочий portal.config.yaml и /etc/portal/portal.env
./portal-cli/portal-cli upgrade --mode native

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

Окно терминала
cat /opt/portal/RELEASE
curl -sS http://127.0.0.1/api/v1/system/version

Онлайн из админки: sudo systemctl enable --now portal-update-runner (или portal-cli update-runner), затем Настройки → Продукт и лицензия → Обновить. Полная инструкция: Обновление Portal.


ПутьНазначение
/opt/portal/bin/Бинарники Api, Worker, DbInit
/opt/portal/frontend/Статика SPA
/opt/portal/migrations/SQL-миграции
/etc/portal/portal.envКонфигурация (секреты, TZ)
/var/lib/portal/Данные инсталляции и license.key
/etc/nginx/sites-available/portalnginx vhost

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

Если psql не подключается — исправьте хост/пароль в /etc/portal/portal.env и перезапустите службы.

API не слушает порт 3001:

Окно терминала
ss -tlnp | grep 3001
systemctl status portal-api --no-pager
sudo systemctl restart portal-api
curl -sS http://127.0.0.1:3001/health

Подробнее: Устранение неполадок.