Быстрый старт: Native Linux
Эта инструкция рассчитана на администратора, который хочет поставить Portal без Docker: службы systemd, nginx и уже готовые PostgreSQL, Valkey/Redis и S3.
Читайте сверху вниз. На каждом шаге есть команда «что ввести» и способ проверить, что шаг удался.
Если ещё не выбрали способ установки — сначала выберите канал.
0. Что вы получите в итоге
Заголовок раздела «0. Что вы получите в итоге»После всех шагов:
- На сервере работают службы
portal-apiиportal-worker. - nginx отдаёт сайт Portal.
- Открывается страница входа (логин
admin). - Можно активировать
LICENSE.keyи пользоваться порталом.
Используйте готовый bundle из дистрибутива поставщика. .NET на сервере не нужен — бинарники уже self-contained.
1. Что нужно заранее
Заголовок раздела «1. Что нужно заранее»| Что | Простыми словами | Минимум |
|---|---|---|
| Сервер | Linux amd64 | Ubuntu 22.04+, Debian 12+, RHEL 9+ |
| PostgreSQL | База данных | версия 16 |
| Valkey или Redis | Кэш | порт 6379, CACHE_ADAPTER=redis |
| S3 | Файлы библиотек | MinIO, SeaweedFS, Ceph и т.п. |
| nginx | Reverse proxy и статика | установлен |
| Bundle | Архив поставщика | portal-*-native-linux-amd64.tar.gz |
Опционально: Portal Office на этом или отдельном хосте. Без редактора — отключите его в конфиге (см. §8).
2. Подготовьте PostgreSQL
Заголовок раздела «2. Подготовьте PostgreSQL»sudo -u postgres createuser portalsudo -u postgres createdb -O portal portalsudo -u postgres psql -c "ALTER USER portal PASSWORD 'your-password';"Подставьте свой пароль вместо your-password. Запомните его — понадобится в конфиге.
Проверка:
sudo -u postgres psql -c '\l' | grep portalsudo -u postgres psql -c '\du' | grep portalДолжны быть база portal и пользователь portal.
Redis/Valkey обычно слушает localhost:6379. S3 (MinIO и т.п.) — часто localhost:9000, bucket portal-files. Убедитесь, что они уже запущены, прежде чем ставить Portal.
Подробнее про внешнюю инфраструктуру: Внешние сервисы.
3. Распакуйте bundle и настройте конфиг
Заголовок раздела «3. Распакуйте bundle и настройте конфиг»Шаг 3.1. Распаковка
Заголовок раздела «Шаг 3.1. Распаковка»tar xzf portal-1.0.0-native-linux-amd64.tar.gzcd portal-1.0.0-native-linux-amd64pwdls -la portal-cli/portal-cli config/Подставьте свою версию в имени архива. Должны увидеть каталог portal-cli и примеры конфигов.
Шаг 3.2. Файл portal.config.yaml
Заголовок раздела «Шаг 3.2. Файл portal.config.yaml»cp config/portal.config.native.example.yaml portal.config.yamlnano 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).
4. Установите Portal
Заголовок раздела «4. Установите Portal»chmod +x portal-cli/portal-cli./portal-cli/portal-cli install --mode nativeУстановщик по шагам:
- Копирует бинарники в
/opt/portal. - Создаёт
/etc/portal/portal.env(секреты,TZ). - Ставит systemd-units и nginx vhost.
- Запускает
Portal.DbInit(миграции + минимальный seed: admin, узлыportal/admin, страницаwelcome). - Стартует
portal-apiиportal-worker.
Проверка сразу после установки:
./portal-cli/portal-cli status --mode nativesystemctl status portal-api portal-worker --no-pagerСлужбы должны быть active (running).
5. Установка из .deb (если передали пакет)
Заголовок раздела «5. Установка из .deb (если передали пакет)»Если поставщик дал .deb, а не tar.gz:
sudo dpkg -i portal_1.0.0_amd64.debСоздайте или допишите /etc/portal/portal.env (как при обычной установке через portal-cli), затем:
sudo systemctl restart portal-api portal-workersudo systemctl status portal-api portal-worker --no-pager6. Проверьте, что всё работает
Заголовок раздела «6. Проверьте, что всё работает»./portal-cli/portal-cli status --mode native
curl -sS http://127.0.0.1/healthcurl -sS http://127.0.0.1/api/v1/system/versionsystemctl 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), если установщик его сгенерировал.
7. Активируйте лицензию
Заголовок раздела «7. Активируйте лицензию»Без активированного LICENSE.key запись в Portal недоступна. Ключ выдаёт поставщик (коммерческий или trial).
Через админку
Заголовок раздела «Через админку»- Войдите как администратор.
- Админка → Настройки → Продукт и лицензия.
- Скопируйте Привязку (нужна для заказа ключа).
- Загрузите файл
LICENSE.keyили вставьте ключ → активируйте.
Через CLI
Заголовок раздела «Через CLI»./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-status8. Portal Office (редактор документов)
Заголовок раздела «8. Portal Office (редактор документов)»Редактор не входит в native-бандл.
- Скачайте пакет на korport.ru/portal-office (
LICENSE.key+ привязка). - Установите по Portal Office:
- Linux systemd:
sudo ./install/install-root.sh - или Docker, если на хосте есть Docker.
- Linux systemd:
- В
portal.config.yamlвключите:
office: enabled: true publicUrl: https://office.company.ru internalUrl: http://office-internal:9980WOPI_HOST_URL Portal должен быть доступен из хоста Office.
Без редактора:
office: enabled: falseили в env: PORTAL_OFFICE_ENABLED=false.
9. Часовой пояс
Заголовок раздела «9. Часовой пояс»В portal.config.yaml задайте portal.timezone (IANA, например Europe/Moscow). Значение попадёт в /etc/portal/portal.env как TZ и подхватится systemd.
После смены:
sudo systemctl restart portal-api portal-workersudo systemctl status portal-api portal-worker --no-pager10. Обновление
Заголовок раздела «10. Обновление»tar xzf portal-1.1.0-native-linux-amd64.tar.gzcd portal-1.1.0-native-linux-amd64
# Не затирайте рабочий portal.config.yaml и /etc/portal/portal.env./portal-cli/portal-cli upgrade --mode nativeПроверка версии:
cat /opt/portal/RELEASEcurl -sS http://127.0.0.1/api/v1/system/versionОнлайн из админки: sudo systemctl enable --now portal-update-runner (или portal-cli update-runner), затем Настройки → Продукт и лицензия → Обновить. Полная инструкция: Обновление Portal.
11. Структура на сервере
Заголовок раздела «11. Структура на сервере»| Путь | Назначение |
|---|---|
/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/portal | nginx vhost |
12. Типичные проблемы
Заголовок раздела «12. Типичные проблемы»API не стартует
Заголовок раздела «API не стартует»source /etc/portal/portal.envpsql -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 и перезапустите службы.
502 от nginx
Заголовок раздела «502 от nginx»API не слушает порт 3001:
ss -tlnp | grep 3001systemctl status portal-api --no-pagersudo systemctl restart portal-apicurl -sS http://127.0.0.1:3001/healthПодробнее: Устранение неполадок.
13. Связанные документы
Заголовок раздела «13. Связанные документы»- Какой вариант установки выбрать
- Внешние сервисы
- Portal Office
- Обновление Portal
- Устранение неполадок
- Отладка расширений — Attach из IDE к
portal-api/portal-workerна хосте