# Описание

> Пассворк упрощает совместную работу с корпоративными паролями. Все данные безопасно хранятся на вашем сервере, а сотрудники быстро находят нужные пароли. Администратор управляет правами пользователей, отслеживает все действия и изменения.

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

### Минимальные системные требования

Пассворк не требователен к ресурсам сервера(-ов). Объемы необходимых ресурсов (RAM, CPU, HDD) и количество серверов зависят от количества активных пользователей, объема хранимых данных, а также требований к отказоустойчивости системы.

> Показатель IOPS имеет большое значения для скорости работы базы данных, поэтому желательно использовать SSD диски.

Варианты установки Пассворк на выделенных или виртуальных серверах

### 1. Все на одном сервере

Обычно подходит для редакций до 500 пользователей, без специальных требований по хранению данных:

Кол-во пользователей | RAM | CPU | HDD
--- | --- | --- | ---
до 50 | 2-4 ГБ | 4 | 100 ГБ
до 100 | 4-8 ГБ | 8 | 150 ГБ
до 500 | 8-16 ГБ | 8 | 200 ГБ

2. Сервер приложения и база данных на разных серверах

База данных и сервер приложения разносятся по разным серверам.

RAM-1, CPU-1, HDD-1 — сервер приложения.

RAM-2, CPU-2, HDD-2 — база данных.

Кол-во пользователей | RAM-1 | CPU-1 | HDD-1 | RAM-2 | CPU-2 | HDD-2
--- | --- | --- | --- | --- | --- | ---
до 50 | 2-4 ГБ | 4 | 100 ГБ | 2-4 ГБ | 4 | 100 ГБ
до 100 | 4 ГБ | 8 | 100 ГБ | 4 ГБ | 4 | 150 ГБ
до 500 | 8-16 ГБ | 8 | 100 ГБ | 8 ГБ | 8 | 200 ГБ
до 1000 | 8-16 ГБ | 8 | 100 ГБ | 16 ГБ | 8 | 200 ГБ
до 10000 | 16-32 ГБ | 16 | 100 ГБ | 16-32 ГБ | 16 | 200 ГБ

# Установка

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

Скачайте и установите Docker CE (https://docs.docker.com/engine/installation/).

Cкачайте и установите Docker-сompose (https://docs.docker.com/compose/install/)

Обновите систему:

    sudo –i
    apt-get update
    apt-get upgrade

Установите Git:

    apt-get install git

Скачайте файлы управления и шаблонные конфиг-файлы

Создайте директорию /server и склонируйте файлы:

    rm /server/sites/prod/.gitkeep

Склонируйте репозиторий. Укажите логин и пароль, которые вам сообщили менеджеры Пассворк.

    git clone http://passwork.download/passwork/passwork.git /server/sites/prod

    cd /server/sites/prod/
    git checkout v5

> Где взять логин и пароль

> Мы отправляем логин и пароль к нашему репозиторию после покупки Пассворк.

Перейдите в каталог для Docker Compose

    cd /server/docker-compose/

В каталоге есть файл docker-compose.override.yml , в котором можно указать назначение портов, на случай если порты могут быть заняты.

Запустите Docker Compose

    docker-compose up -d

Проверьте, что контейнеры запустились и работают:

    docker ps

### Инсталляция

При первом открытии Пассворк вы увидите диалог инсталляции, который проверит корректность настройки сервера и позволит ввести базовые параметры.

Тут нужно подправить сервер и указать строчку: mongodb://db:27017

Нужно будет сохранить ключ шифрования для восстановления, если появится такая необходимость.

Зарегистрируйте администратора Пассворк

Введите логин и пароль для первого пользователя. Пользователь автоматически станет администратором и владельцем организации.

# Обслуживание

## Настройка фоновых задач

Фоновые задачи — это задачи, которые выполняются по планировщику в фоновом режиме. Например, синхронизация LDAP, загрузка фавиконов и другие задачи, которые требует много времени, постоянного выполнения или распределения ресурсов.

Проверить список запланированных задач и корректность всех настроек можно на странице «Фоновые задачи».

Для настройки фоновых задач необходимо настроить планировщик вашей операционной системы Cron (для Линукс) или Windows Scheduler. Планировщик должен запускать скрипт `<папка с Пассворк>/app/tools/run-scheduled-tasks.php` каждую минуту.

Скрипт проанализирует какие задачи необходимо запустить и для каждой задачи создаст отдельный поток. При выполнении каждая задача записывает лог в папку `<папка Пассворк>/app/logs/` в файлы вида `task-*.log`, например, `task-62f8e9624e0446fba40bbb12.log`. После завершения задачи вы можете посмотреть и скачать лог со страницы Фоновые задачи → История задач.

Системные логи планировщика (с ошибками) находятся в `<папка Пассворк>/app/logs/run-command.log`.

## О Docker-образах

Docker-образы устроены таким способом, что все важные данные вынесены в общие с хостовой машиной папки. Поэтому вы можете смело останавливать, удалять и создавать новые контейнеры. Конфигурационные файлы так же хранятся в общих папках (т.е. не в контейнере), поэтому вы можете провести любую настройку Nginx, PHP и MongoDB без внесения изменений непосредственно в образы или контейнеры. Просто внесите изменения в конфиг файлы и перезапустите контейнер или сервисы.

Если вам необходимо внести изменения в образ, то войдите в контейнер, внесите изменения и затем сделайте коммит в ваш образ командой

    docker commit <container id> you-name/image-name

Более подробно описано в официальной документации Docker.

## Полезные команды

Скопируйте утилиту dexec в /usr/bin/:

    cp /server/dexec /usr/bin/dexec

Вход в контейнер:

    docker exec -it <container> bash

Восстановление прав для файлов сайта (требуется после обновления):

    /server/docker-nginx-permissions nginx

Перезагрузка Nginx без остановки:

    /server/docker-nginx-reload nginx

Контейнеры запущены с опцией autostart. Это означает, что Docker автоматически перезапустит контейнер, если он по каким-либо причинам остановится. Поэтому, если вам необходимо остановить контейнер, сперва отключите autostart:

    /server/docker-norestart <container>

Включить autostart обратно:

    /server/docker-autorestart <container>

Без опции autostart вы можете остановить контейнеры принудительно:

    docker stop <container>

Обратите внимание, что если опция autostart включена, то эти команды перезапустят Nginx и MongoDB, Используйте ее в крайних случаях, так как это может повлечь порчу данных.

## Структура файлов

Файлы конфигураций:

    /server/conf/

Данные (база данных):

    /server/data/

Логи:

    /server/log/

Сайты:

    /server/sites/

## Пример: Как изменить конфигурацию Nginx или PHP

Отредактируйте файлы:

    mcedit /server/conf/nginx/prod.site
    mcedit /server/conf/nginx/nginx.conf
    mcedit /server/conf/php8/php.ini

Перезапустите nginx и php-fpm:

    /server/docker-nginx-reload nginx
    docker restart php8

## Настройка почты

Nginx контейнер использует Postfix для отправки почты. Все конфигурационные файлы вы можете найти здесь:

    /server/conf/postfix/

Отредактируйте их под свои нужды. Перезапустите Postfix, чтобы изменения вступили в силу.

## Пример настройки Postfix

Откройте конфигурационный файл `/server/conf/postfix/``main.cf`.

    mcedit /server/conf/postfix/main.cf

Убедитесь в том, что параметр myhostname совпадает с полным доменным именем вашего сервера:

    myhostname = passwork

### Настройка имен и паролей SMTP

Откройте или создайте файл `/server/conf/postfix/sasl_passwd`.

    mcedit /server/conf/postfix/sasl_passwd

Добавьте SMTP хост, имя пользователя и пароль должны быть записаны в следующем формате:

    [mail.isp.example] username:password

Если вы хотите использовать нестандартный TCP-порт (например, 587), используйте следующий формат:

    [mail.isp.example]:587 username:password

для Gmail запись будет выглядеть следующим образом:

    [smtp.gmail.com]:587 username:password

Создайте хэшированную базу данных для Postfix, выполните команду postmap:

    docker exec -it postfix postmap /etc/postfix/sasl_passwd

После успешного выполнения команды в директории /server/conf/postfix должен появиться новый файл sasl_passwd.db.

### Защита файла с паролями и хэш-файла.

Файлы /server/conf/postfix/sasl_passwd и /server/conf/postfix/sasl_passwd.db, созданные в предыдущих шагах, содержат ваши учетные данные SMTP в виде простого текста. По соображениям безопасности вы должны изменить права доступа к ним, так чтобы только пользователь root мог читать и записывать в файл.

Выполните следующие команды, чтобы изменить владельца файлов на root и обновить права доступа для файлов:

    chown root:root /server/conf/postfix/sasl_passwd /server/conf/postfix/sasl_passwd.db
    chmod 0600 /server/conf/postfix/sasl_passwd /server/conf/postfix/sasl_passwd.db

### Конфигурация релей сервера

Откройте файл `/server/conf/postfix/``main.cf`

    mcedit /server/conf/postfix/main.cf

Измените параметр relayhost, на свой внешний SMTP релей. Если в файле sasl_passwd был указан нестандартный TCP-порт, то вы должны использовать тот же порт при настройке параметра relayhost.

Укажите SMTP релей:

    relayhost = [mail.isp.example]:587

для Gmail запись будет выглядеть следующим образом:

    relayhost = [smtp.gmail.com]:587

В конце файла добавьте следующие параметры для включения аутентификации:

    # enable SASL authentication
    smtp_sasl_auth_enable = yes
    # disallow methods that allow anonymous authentication.
    smtp_sasl_security_options = noanonymous
    # where to find sasl_passwd
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    # Enable STARTTLS encryption
    smtp_use_tls = yes
    # where to find CA certificates
    smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Сохраните изменения.

Перезапустите Postfix:

    docker exec -i postfix service postfix reload