# Установка CSP 3

# Системные требования

#### Сервер

x64 совместимая архитектура CPU

- Intel - Архитектура Sandy Bridge (Sandy Bridge-E) и выше
- AMD - Архитектура Zen1 (Ryzen/Epyc) и выше

Память:

- RAM: 4GB (рекомендуется 16GB и выше, в зависимости от нагрузки и задач)
- Диск: 16GB минимально

Операционная система:

- Debian 12
- Альт Сервер 11.1
- Ред ОС Сервер 8.0

Дополнительное ПО, необходимое для работы:

- PostgresSQL 15 совместимая СУБД
- NATS-server 2.6
- Node.JS 18 и выше
- Nginx - опционально, для настройки https соединения

#### Клиент

Любая ОС с браузером версии 2024 года и выше:

- Mozilla Filefox 133
- Google Chrome 131
- Яндекс.Браузер 24.10
- Apple Safari 17.6

Рекомендуется 8Гб RAM или больше

#### Дистрибутив

Способ получения дистрибутива определяется лицензионным договором и включает в себя 1 архив: distrib-2025-05-01.tar.zx, где 2025-05-01 — дата сборки в формате ISO

# Установка CSP3 на Альт Сервер 11.1

## Рекомендации по установке ОС

1. Выбрать редакцию "Альт Сервер"
2. Автоматическая разметка диска ( 3 раздела: efi, swap, ext4 корневой )
3. Дополнительные приложения не требуются

## Включение SSH сервера

Не обязательно, но упростит установку на удаленный сервер. После установки можете выключить сервер через: `systemctl disable sshd`

`mcedit /etc/openssh/sshd_config` - Откройте редактор В редакторе надо найти и поменять строку с "PermitRootLogin", на `PermitRootLogin yes`, и UseDNS - `UseDNS no`

`systemctl enable --now sshd` - включите сервер

## Распаковка дистрибутива

1. Подключитесь по SSH из под **root**.
2. Загрузите дистрибутив CSP (`distrib-XXX.tar.zx`, вместо XXX - дата) в директорию `/root`
3. Распаковка:

```bash
# Распаковка дистрибутива
mkdir -p /root/distrib
tar -xvf /root/distrib-XXX.tar.xz -C /root/distrib

```

## Установка через скрипт

```bash
bash /root/distrib/install-alt.sh

```

В процессе скрипт будет запрашивать пароль от postgres

## Установка лицензии

- Скопируйте поставляемый `license.json` в директорию `/opt/csp3/data`
- Перезапустите сервер: `systemctl restart csp3`

## Приложение 1: Установка вручную (без скриптов)

Метод, если нужно контроллировать процесс установки

#### Подключение официальных репозиториев

```bash
mcedit /etc/apt/sources.list.d/alt.list

```

Проверьте, что присутвуют строки и они раскомментированы (уберите в начале строк #)

```
rpm [p11] http://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64 classic
rpm [p11] http://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/x86_64-i586 classic
rpm [p11] http://ftp.altlinux.org/pub/distributions/ALTLinux p11/branch/noarch classic

```

Запустите `apt-get update`

#### Установка локальной PostgresDB

CSP поддерживает любую СУБД, совместимую с PostgresSQL 15

В процессе инициализации нужно будет задать пароль, он потребуется для настройки CSP сервера

```bash
apt-get install postgresql18-server postgresql18-contrib -y
/etc/init.d/postgresql initdb # Инициализация БД
systemctl enable --now postgresql.service # Включение и запуск

```

#### Загрузка первоначальной базы

Загрузите первоначальный дамп `postgres.sql.xz` из дистрибутива на сервер (например в директорию `/srv`)

```bash
cd /srv
createdb -U postgres csp3 # создание базы
xz -dc ./postgres.sql.xz | psql -U postgres csp3 # загрузка
psql -d csp3 -U postgres -c "SELECT * FROM model_documents.doc_kind LIMIT 5;" # Проверка

```

#### Установка зависимостей CSP сервера

Загрузите дистрибутив CSP (`distrib.tar.zx`) в директорию `/srv`

```bash
cd /srv
# Распаковка дистрибутива
mkdir -p /srv/distrib
tar -xvf ./distrib.tar.xz -C /srv/distrib
cd /srv/distrib
# Работа CSP сервера требует nats-server
apt-get nats-server -y
cp ./nats/nats.conf /etc/nats-server.conf
mkdir -p /var/run/nats
chown -R nats:nats /var/run/nats /etc/nats-server.conf
systemctl enable --now nats-server.service
# Установка node.js 18+ версии (npm не обязателен)
apt-get install nodejs

```

#### Установка приложения

```bash
cp ./app /srv/csp3
cp ./systemd/csp3.service /etc/systemd/system/csp3.service

## Настройка global-config.json

`mcedit /srv/csp3/global-config.json`

Пример конфигурации:

```json
{}

```

Проверьте соединение: Подключитесь через браузер(http) к порту CSP сервера (порт, который указали в global-config.json)

#### Установка Nginx

Опционально, установите nginx (или любой другой reverse proxy), это позволит настроить https

# Установка CSP3 на РЕД ОС 8.0

## Рекомендации по установке ОС

1. Базовое окружение - минимальный сервер (Без дополнительного ПО)
2. Включить root доступ по ssh (после установки - можно выключить)
3. Не делить диск на дополнительные разделы (только корневой раздел, boot, swap и efi)

## Распаковка дистрибутива

1. Подключитесь по SSH из под **root**.
2. Загрузите дистрибутив CSP (`distrib-XXX.tar.zx`, вместо XXX - дата) в директорию `/root`
3. Распаковка:

```bash
# Распаковка дистрибутива
mkdir -p /root/distrib
tar -xvf /root/distrib-XXX.tar.xz -C /root/distrib

```

## Установка через скрипт

```bash
bash /root/distrib/install-redos.sh

```

## Проверка и установка лицензии

Проверить работу можно через браузер подключившись к `http://[ip-сервера]/admin/`

Логин: `admin`, пароль такой же, как задан в установке для PostgreSQL

## Приложение 1: Установка вручную (без скриптов)

Метод, если нужно контроллировать процесс установки

### Установка локальной PostgresDB

CSP поддерживает любую СУБД, совместимую с PostgresSQL 15, необходимо наличие расширения pgcrypto

```bash
dnf install postgresql18-server postgresql18-contrib -y
/usr/pgsql-18/bin/postgresql-18-setup initdb # Инициализация БД
systemctl enable --now postgresql-18 # Включение и запуск

```

### Загрузка первоначальной базы

Загрузите первоначальный дамп `postgres.sql.xz` из дистрибутива на сервер (например в директорию `/srv`)

**Не забудьте поменять пароль с "123" в команде ниже**

```bash
chown postgres /srv/postgres.sql.xz
sudo -i -u postgres
createdb csp3 # создание базы
xz -dc postgres.sql.xz | psql -v ON_ERROR_STOP=on csp3 # загрузка дампа
psql -d csp3 -c "SELECT * FROM model_documents.doc_kind LIMIT 5;" # проверка
psql -c "ALTER USER postgres WITH ENCRYPTED PASSWORD '123';" # смена пароля
exit

```

### Установка зависимостей CSP сервера

Загрузите дистрибутив CSP (`distrib.tar.zx`) в директорию `/srv`

```bash
cd /root
mkdir -p /root/distrib
tar -xvf distrib.tar.xz -C /root/distrib
cd /srv/distrib
# Работа CSP сервера требует nats
dnf install nats-server -y
cp ./nats/nats.conf /etc/nats-server.conf
mkdir -p /var/run/nats
chown -R nats:nats /var/run/nats /etc/nats-server.conf
systemctl enable --now nats-server.service
# Установка node.js 18+ версии (npm не обязателен)
dnf install nodejs

```

### Установка приложения

```bash
cp ./app -r /srv/csp3
chmod +x /srv/csp3/start.sh
cp ./systemd/csp3.service /etc/systemd/system/csp3.service

```

# Установка CSP3 на Debian 12.14

## Рекомендации по установке ОС

- Установка ОС производится с образа: debian-12.14.0-amd64-netinst.iso
- Рекомендуется разметка диска "Все файлы в одном разделе"
- В разделе "Выбор программного обеспечения" установить только: SSH-сервер, Стандартные системные утилиты

## Включение SSH сервера

Не обязательно, но упростит установку на удаленный сервер. После установки можете выключить сервер через: `systemctl disable sshd`

```
apt-get install -y mc
mcedit /etc/ssh/sshd.config
# Изменить PermitRootLogin на yes
systemctl restart sshd

```

## Распаковка дистрибутива

1. Подключитесь по SSH из под **root**.
2. Загрузите дистрибутив CSP (`distrib-XXX.tar.zx`, вместо XXX - дата) в директорию `/root`
3. Распаковка:

```bash
mkdir -p /root/distrib
tar -xvf /root/distrib-XXX.tar.xz -C /root/distrib

```

## Установка через скрипт

```bash
bash /root/distrib/install-debian.sh

```

## Приложение 1: Установка вручную (без скриптов)

Метод, если нужно контроллировать процесс установки

#### Установка sudo

Требуется для работы с postgres

```
apt-get install -y sudo

```

#### Установка локальной PostgresDB

CSP поддерживает любую СУБД, совместимую с PostgresSQL 15

```bash
apt install -y postgresql postgresql-contrib
# задать пароль, он потребуется для настройки CSP сервера
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '123';"

```

#### Загрузка первоначальной базы

Загрузите первоначальный дамп `postgres.sql.xz` из дистрибутива на сервер (например в директорию `/srv`)

```bash
cd /root/distrib/postgres
sudo -u postgres createdb -U postgres csp3 # создание базы
 xz -dc ./postgres.sql.xz | sudo -u postgres psql -U postgres csp3 # загрузка
sudo -u postgres psql -d csp3 -U postgres -c "SELECT * FROM model_documents.doc_kind LIMIT 5;" # Проверка

```

#### Установка nats-server

```bash
cd /root/distrib/nats
# Работа CSP сервера требует nats-server
apt-get install nats-server -y
cp ./nats-server.conf /etc/nats-server.conf
mkdir -p /var/run/nats
chown -R nats:nats /var/run/nats /etc/nats-server.conf
systemctl enable --now nats-server.service
systemctl restart nats-server.service

```

#### Установка node.js

Установка node.js 18+ версии (npm не обязателен)

```bash
apt-get install nodejs -y

```

#### Установка приложения

```bash
cd /root/distrib/app
cp -r ./csp3 /opt/csp3
cp ./systemd/csp3.service /etc/systemd/system/csp3.service
mcedit /opt/csp3/global-config.json
# Измените pgpassw на пароль postgres
systemctl enable --now csp3.service

```

Проверьте соединение: Подключитесь через браузер(http) к порту CSP сервера (порт, который указали в global-config.json)

#### Установка Nginx

Опционально, установите nginx (или любой другой reverse proxy), это позволит настроить https

# Настройка конфигурации CSP3

Стандартная установка разместит csp сервер в директории `/opt/csp3`

## global-config.json

Этот файл обязателен для запуска сервера, должен находится в корне приложения, рядом с `start.sh`. Эта конфигурация влияет на первоначальный запуск всех компонентов, при ее изменении необходимо перезапустить весь CSP. Пример:

```
{
  "common":{
    "postgresUri": "postgresql://postgres:123@127.0.0.1:5432/csp3",
    "ghostScriptPath": "gs",
    "timeZone": "Europe/Moscow",
    "baseUrl": "http://127.0.0.1",
    "database": "postgres"
  },
  "Logger" : {
    "disable" : false
  },
  "NatsConnection" : {
    "server": "127.0.0.1:4222",
    "prefix": "main.",
    "timeout": 60000,
    "format": "msgpack",
    "requestMode": "long"
  },
  "Auth": {
    "admin": {
      "login" : "admin",
      "password" : "123"
    }
  },
  "HttpProxy": {
    "host" : "0.0.0.0",
    "port" : 80
  },
  "PkgUpdater" : {
    "updateServerUrl": "https://carabi.csp.carabisol.ru"
  }
}

```

#### Секция `common` – общие настройки

- `postgresUri` – Строка подключения к PostgreSQL. Формат: `postgresql://[user]:[password]@[host]:[port]/[database]`
- `ghostScriptPath` – (опционально) Путь к исполняемому файлу GhostScript (`gs`). GhostScript используется для обработки PDF. Значение `"gs"` означает, что программа находится в `PATH` системы
- `timeZone` – Временная зона, в которой работает приложение
- `baseUrl` – Базовый URL, по которому доступен сервис (используется для формирования ссылок, редиректов, CORS и т.п.) При использовании https reverse proxy указывать его адрес, напр `https://demo.csp.carabisol.ru`
- `database` – Указывает имя используемой СУБД – всегда `postgres`

#### Секция `Logger` – настройки логирования

- `disable` – Флаг отключения логирования. При `true` системя логирования полностью отключается, увеличивает производительность приложения

#### Секция `NatsConnection` – подключение к NATS (message broker)

- `server` – Адрес сервера NATS в формате `хост:порт`. `127.0.0.1:4222` – стандартный адрес локального NATS‑сервера (порт по умолчанию 4222)
- `prefix` – Префикс, добавляемый ко всем темам (subject) NATS. Необходим для запуска нескольких CSP на одном nats-server
- `timeout` – Должен быть всегда 60000, реальный таймаут реализован на более высоком уровне
- `format` – Формат сериализации данных сообщений (json/msgpack). `msgpack` предпочтительнее
- `requestMode` – Должен быть всегда `long`.

#### Секция `Auth` – аутентификация и учётные записи

Администратор – виртуальная учетная запись. Позволяет входить в систему, даже при отказе стандартной системы авторизции (или первоначальной настройки)

- `admin.login` – Логин администратора
- `admin.password` – Пароль администратора

#### Секция `HttpProxy` – настройки встроенного Reverse HTTP‑прокси

HttpProxy - является единой точкой подключения к системе, которая направляет трафик до нужного сервиса.

- `host` – IP‑адрес или имя хоста, на котором будет слушать HTTP‑сервер. `0.0.0.0` открывает доступ с любого адреса. `127.0.0.1` - только для локальных приложений, если доступ к серверу осуществляется доступ через локальный внешний reverse proxy (напр. nginx)
- `port` – Номер порта для HTTP‑сервера

#### Секция `PkgUpdater` – настройки системы обновления

- `updateServerUrl` - (опционально) URL внешнего сервера, с которого приложение будет получать обновления.

## Настройка реестра CSP

Реестр, в отличии от `global-config.json`, можно изменять в процессе работы приложения, через специальный раздел в панели администратора. Также можно изменить файл `./data/common-registry-data.json` напрямую, но это нужно делать при остановленном сервере. При добавлении новых компонентов приложения, реестр может расширятся.

Пример, с параметрами, необхоимыми для запуска:

```
{
  "main": {
    "name": "CSP3",
    "description": "Тестовый сервер"
  },
  "logger": {
    "minLevel": 50,
    "minRecords": 1000,
    "maxRecords": 5000
  },
  "PkgUpdater": {
    "token": null,
    "timer": 300000
  },
  "queries": {
    "type": "ora"
  },
  "pgQueryPool": {
    "connectionCount": 25
  }
}

```

- `main.name` - системное имя программы, используется для получения обновлений
- `main.description` - текстовое описание сервера, отображается в интерфейсах
- `logger.minLevel` - минимальный уровень логирования (числовое значение, например, 50 — предупреждения и выше)
- `logger.minRecords` - минимальное количество записей в логе, при котором начинается их обработка или ротация
- `logger.maxRecords` - максимальное количество записей в логе, после превышения которого старые записи удаляются
- `PkgUpdater.token` - токен для авторизации при доступе к репозиторию обновлений пакетов (значение `null` - обновление отключено)
- `PkgUpdater.timer` - интервал проверки наличия обновлений в миллисекундах (300000 = 5 минут)
- `queries.type` - всегда `ora`, система использует встроенный "ora" адаптер, для отправки запросов в PostgreSQL
- `pgQueryPool.connectionCount` - количество одновременно поддерживаемых соединений в пуле подключений к PostgreSQL

## Лицензия

Файл лицензии хранится в `./data/license.json`. Его можно разместить напрямую или измениь в панели администратора (Нажать на красную панель вверху экрана).

После изменения лицензии, реккомендуется перезагрузить сервер: `systemctl restart csp3`

# Установка https без сертификации (самоподписной сертификат)

При использовании самоподписного сертификата, ничего не требуется, однако:

- Соединение не является безопасным
- Браузер будет выдавать предупреждения, необходимо добавить исключение
- Нельзя использовать CSP, как PWA приложение
- Использовать CSP Client можно полноценно

## Самоподписной сертификат

```
export MYSITE=csp
mkdir -p /etc/nginx/ssl/${MYSITE}
openssl req -x509 -nodes -days 3650 -subj /C=CA/ST=None/L=NB/O=None/CN=${MYSITE} -newkey rsa:2048 -keyout /etc/nginx/ssl/${MYSITE}/ssl.key -out /etc/nginx/ssl/${MYSITE}/cert.crt

```

В MYSITE можно указать свой домен (напр. mysite.ru)

## Установка nginx

```
apt install nginx  
rm /etc/nginx/sites-enabled/default  

```

Создать файл /etc/nginx/sites-enabled/csp

```
  server {
    listen 80;
    listen [::]:80;

    error_log /var/log/nginx/csp-error.log warn;

    location / {
      #Websocket support
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $http_connection;
      proxy_http_version 1.1;

      #Proxy
      client_max_body_size 100m;
      add_header       X-Served-By $host;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Scheme $scheme;
      proxy_set_header X-Forwarded-Proto  $scheme;
      proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
      proxy_set_header X-Real-IP          $remote_addr;
      proxy_pass       http://127.0.0.1:8080;
    }

    location ^~ /.well-known/acme-challenge/ {
        default_type "text/plain";
        root /var/www/acme;
    }

    listen 443 ssl;
    listen [::]:443 ssl;

    ssl_certificate /etc/nginx/ssl/csp/cert.crt;
    ssl_certificate_key /etc/nginx/ssl/csp/ssl.key;
  }


```

```
ln -s /etc/nginx/sites-available/csp /etc/nginx/sites-enabled/csp
service nginx restart

```