264 lines
19 KiB
HTML
264 lines
19 KiB
HTML
<!--
|
||
title: Менеджер паролей Passwork
|
||
description:
|
||
published: true
|
||
date: 2023-11-15T16:47:23.462Z
|
||
tags:
|
||
editor: ckeditor
|
||
dateCreated: 2023-11-15T16:36:08.780Z
|
||
-->
|
||
|
||
<h1>Описание</h1>
|
||
<p> </p>
|
||
<blockquote>
|
||
<p>Пассворк упрощает совместную работу с корпоративными паролями. Все данные безопасно хранятся на вашем сервере, а сотрудники быстро находят нужные пароли. Администратор управляет правами пользователей, отслеживает все действия и изменения.</p>
|
||
<p> </p>
|
||
</blockquote>
|
||
<figure class="image"><img src="/attachments/image2022-12-12_11-39-19.png"></figure>
|
||
<figure class="image"><img src="/attachments/image2022-12-12_11-39-59.png"></figure>
|
||
<figure class="image"><img src="/attachments/image2022-12-12_11-41-52.png"></figure>
|
||
<p>Рекомендации по установке</p>
|
||
<h3><strong>Минимальные системные требования</strong></h3>
|
||
<p>Пассворк не требователен к ресурсам сервера(-ов). Объемы необходимых ресурсов (RAM, CPU, HDD) и количество серверов зависят от количества активных пользователей, объема хранимых данных, а также требований к отказоустойчивости системы.</p>
|
||
<blockquote>
|
||
<p>Показатель IOPS имеет большое значения для скорости работы базы данных, поэтому желательно использовать SSD диски.</p>
|
||
</blockquote>
|
||
<p><strong>Варианты установки Пассворк на выделенных или виртуальных серверах</strong></p>
|
||
<h3>1. Все на одном сервере</h3>
|
||
<p>Обычно подходит для редакций до 500 пользователей, без специальных требований по хранению данных:</p>
|
||
<figure class="table">
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>Кол-во пользователей</th>
|
||
<th>RAM</th>
|
||
<th>CPU</th>
|
||
<th>HDD</th>
|
||
</tr>
|
||
<tr>
|
||
<th>до 50</th>
|
||
<th>2-4 ГБ</th>
|
||
<th>4</th>
|
||
<th>100 ГБ</th>
|
||
</tr>
|
||
<tr>
|
||
<th>до 100</th>
|
||
<th>4-8 ГБ</th>
|
||
<th>8</th>
|
||
<th>150 ГБ</th>
|
||
</tr>
|
||
<tr>
|
||
<th>до 500</th>
|
||
<th>8-16 ГБ</th>
|
||
<th>8</th>
|
||
<th>200 ГБ</th>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure>
|
||
<p><strong>2. Сервер приложения и база данных на разных серверах</strong></p>
|
||
<p>База данных и сервер приложения разносятся по разным серверам. </p>
|
||
<p>RAM-1, CPU-1, HDD-1 — сервер приложения.</p>
|
||
<p>RAM-2, CPU-2, HDD-2 — база данных.</p>
|
||
<figure class="table">
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<th>Кол-во пользователей</th>
|
||
<th>RAM-1</th>
|
||
<th>CPU-1</th>
|
||
<th>HDD-1</th>
|
||
<th>RAM-2</th>
|
||
<th>CPU-2</th>
|
||
<th>HDD-2</th>
|
||
</tr>
|
||
<tr>
|
||
<th>до 50</th>
|
||
<th>2-4 ГБ</th>
|
||
<th>4</th>
|
||
<th>100 ГБ</th>
|
||
<th>2-4 ГБ</th>
|
||
<th>4</th>
|
||
<th>100 ГБ</th>
|
||
</tr>
|
||
<tr>
|
||
<th>до 100</th>
|
||
<th>4 ГБ</th>
|
||
<th>8</th>
|
||
<th>100 ГБ</th>
|
||
<th>4 ГБ</th>
|
||
<th>4</th>
|
||
<th>150 ГБ</th>
|
||
</tr>
|
||
<tr>
|
||
<th>до 500</th>
|
||
<th>8-16 ГБ</th>
|
||
<th>8</th>
|
||
<th>100 ГБ</th>
|
||
<th>8 ГБ</th>
|
||
<th>8</th>
|
||
<th>200 ГБ</th>
|
||
</tr>
|
||
<tr>
|
||
<th>до 1000</th>
|
||
<th>8-16 ГБ</th>
|
||
<th>8</th>
|
||
<th>100 ГБ</th>
|
||
<th>16 ГБ</th>
|
||
<th>8</th>
|
||
<th>200 ГБ</th>
|
||
</tr>
|
||
<tr>
|
||
<th>до 10000</th>
|
||
<th>16-32 ГБ</th>
|
||
<th>16</th>
|
||
<th>100 ГБ</th>
|
||
<th>16-32 ГБ</th>
|
||
<th>16</th>
|
||
<th>200 ГБ</th>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</figure>
|
||
<p> </p>
|
||
<h1>Установка</h1>
|
||
<h2>Установка Docker</h2>
|
||
<p>Скачайте и установите Docker CE (<a href="https://docs.docker.com/engine/installation/">https://docs.docker.com/engine/installation/</a>).</p>
|
||
<p>Cкачайте и установите Docker-сompose (<a href="https://docs.docker.com/compose/install/">https://docs.docker.com/compose/install/</a>)</p>
|
||
<p><strong>Обновите систему:</strong></p>
|
||
<pre><code class="language-plaintext">sudo –i
|
||
apt-get update
|
||
apt-get upgrade</code></pre>
|
||
<p><strong>Установите Git:</strong></p>
|
||
<pre><code class="language-plaintext">apt-get install git</code></pre>
|
||
<p><strong>Скачайте файлы управления и шаблонные конфиг-файлы</strong></p>
|
||
<p>Создайте директорию /server и склонируйте файлы:</p>
|
||
<pre><code class="language-plaintext">rm /server/sites/prod/.gitkeep</code></pre>
|
||
<p>Склонируйте репозиторий. Укажите логин и пароль, которые вам сообщили менеджеры Пассворк.</p>
|
||
<pre><code class="language-plaintext">git clone http://passwork.download/passwork/passwork.git /server/sites/prod</code></pre>
|
||
<p> </p>
|
||
<pre><code class="language-plaintext">cd /server/sites/prod/
|
||
git checkout v5</code></pre>
|
||
<p> </p>
|
||
<blockquote>
|
||
<p>Где взять логин и пароль</p>
|
||
<p>Мы отправляем логин и пароль к нашему репозиторию после покупки Пассворк.</p>
|
||
</blockquote>
|
||
<p><strong>Перейдите в каталог для Docker Compose</strong></p>
|
||
<pre><code class="language-plaintext">cd /server/docker-compose/</code></pre>
|
||
<p>В каталоге есть файл docker-compose.override.yml , в котором можно указать назначение портов, на случай если порты могут быть заняты.</p>
|
||
<p><strong>Запустите Docker Compose</strong></p>
|
||
<pre><code class="language-plaintext">docker-compose up -d</code></pre>
|
||
<p><strong>Проверьте, что контейнеры запустились и работают:</strong></p>
|
||
<pre><code class="language-plaintext">docker ps</code></pre>
|
||
<h3><strong>Инсталляция</strong></h3>
|
||
<p>При первом открытии Пассворк вы увидите диалог инсталляции, который проверит корректность настройки сервера и позволит ввести базовые параметры.</p>
|
||
<figure class="image"><img src="/attachments/снимок_экрана_2023-11-15_193934.png"></figure>
|
||
<p>Тут нужно подправить сервер и указать строчку: <a href="mongodb://db:27017">mongodb://db:27017</a></p>
|
||
<p>Нужно будет сохранить ключ шифрования для восстановления, если появится такая необходимость.</p>
|
||
<p><strong>Зарегистрируйте администратора Пассворк</strong></p>
|
||
<p>Введите логин и пароль для первого пользователя. Пользователь автоматически станет администратором и владельцем организации.</p>
|
||
<p> </p>
|
||
<h1>Обслуживание</h1>
|
||
<h2>Настройка фоновых задач</h2>
|
||
<p>Фоновые задачи — это задачи, которые выполняются по планировщику в фоновом режиме. Например, синхронизация LDAP, загрузка фавиконов и другие задачи, которые требует много времени, постоянного выполнения или распределения ресурсов.</p>
|
||
<p>Проверить список запланированных задач и корректность всех настроек можно на странице «Фоновые задачи».</p>
|
||
<p> </p>
|
||
<p> </p>
|
||
<p>Для настройки фоновых задач необходимо настроить планировщик вашей операционной системы Cron (для Линукс) или Windows Scheduler. Планировщик должен запускать скрипт <code><u><папка с Пассворк>/app/tools/run-scheduled-tasks.php</u></code> каждую минуту.</p>
|
||
<p>Скрипт проанализирует какие задачи необходимо запустить и для каждой задачи создаст отдельный поток. При выполнении каждая задача записывает лог в папку <code><u><папка Пассворк>/app/logs/</u></code><u> в файлы вида </u><code><u>task-*.log</u></code>, например, <code><u>task-62f8e9624e0446fba40bbb12.log</u></code>. После завершения задачи вы можете посмотреть и скачать лог со страницы Фоновые задачи → История задач.</p>
|
||
<p>Системные логи планировщика (с ошибками) находятся в <code><u><папка Пассворк>/app/logs/run-command.log</u></code>.</p>
|
||
<h2>О Docker-образах</h2>
|
||
<p>Docker-образы устроены таким способом, что все важные данные вынесены в общие с хостовой машиной папки. Поэтому вы можете смело останавливать, удалять и создавать новые контейнеры. Конфигурационные файлы так же хранятся в общих папках (т.е. не в контейнере), поэтому вы можете провести любую настройку Nginx, PHP и MongoDB без внесения изменений непосредственно в образы или контейнеры. Просто внесите изменения в конфиг файлы и перезапустите контейнер или сервисы.</p>
|
||
<p>Если вам необходимо внести изменения в образ, то войдите в контейнер, внесите изменения и затем сделайте коммит в ваш образ командой</p>
|
||
<pre><code class="language-plaintext">docker commit <container id> you-name/image-name</code></pre>
|
||
<p>Более подробно описано в официальной документации Docker.</p>
|
||
<h2>Полезные команды</h2>
|
||
<p>Скопируйте утилиту <i>dexec</i> в /usr/bin/:</p>
|
||
<pre><code class="language-plaintext">cp /server/dexec /usr/bin/dexec</code></pre>
|
||
<p>Вход в контейнер:</p>
|
||
<pre><code class="language-plaintext">docker exec -it <container> bash</code></pre>
|
||
<p>Восстановление прав для файлов сайта (требуется после обновления):</p>
|
||
<pre><code class="language-plaintext">/server/docker-nginx-permissions nginx</code></pre>
|
||
<p>Перезагрузка Nginx без остановки:</p>
|
||
<pre><code class="language-plaintext">/server/docker-nginx-reload nginx</code></pre>
|
||
<p>Контейнеры запущены с опцией autostart. Это означает, что Docker автоматически перезапустит контейнер, если он по каким-либо причинам остановится. Поэтому, если вам необходимо остановить контейнер, сперва отключите autostart:</p>
|
||
<pre><code class="language-plaintext">/server/docker-norestart <container></code></pre>
|
||
<p>Включить autostart обратно:</p>
|
||
<pre><code class="language-plaintext">/server/docker-autorestart <container></code></pre>
|
||
<p>Без опции autostart вы можете остановить контейнеры принудительно:</p>
|
||
<pre><code class="language-plaintext">docker stop <container></code></pre>
|
||
<p>Обратите внимание, что если опция <i>autostart</i> включена, то эти команды перезапустят Nginx и MongoDB, Используйте ее в крайних случаях, так как это может повлечь порчу данных.</p>
|
||
<h2>Структура файлов</h2>
|
||
<p>Файлы конфигураций:</p>
|
||
<pre><code class="language-plaintext">/server/conf/</code></pre>
|
||
<p>Данные (база данных):</p>
|
||
<pre><code class="language-plaintext">/server/data/</code></pre>
|
||
<p>Логи:</p>
|
||
<pre><code class="language-plaintext">/server/log/</code></pre>
|
||
<p>Сайты:</p>
|
||
<pre><code class="language-plaintext">/server/sites/</code></pre>
|
||
<h2>Пример: Как изменить конфигурацию Nginx или PHP</h2>
|
||
<p>Отредактируйте файлы:</p>
|
||
<pre><code class="language-plaintext">mcedit /server/conf/nginx/prod.site
|
||
mcedit /server/conf/nginx/nginx.conf
|
||
mcedit /server/conf/php8/php.ini</code></pre>
|
||
<p>Перезапустите nginx и php-fpm:</p>
|
||
<pre><code class="language-plaintext">/server/docker-nginx-reload nginx
|
||
docker restart php8</code></pre>
|
||
<h2>Настройка почты</h2>
|
||
<p>Nginx контейнер использует Postfix для отправки почты. Все конфигурационные файлы вы можете найти здесь:</p>
|
||
<pre><code class="language-plaintext">/server/conf/postfix/</code></pre>
|
||
<p>Отредактируйте их под свои нужды. Перезапустите Postfix, чтобы изменения вступили в силу.</p>
|
||
<h2>Пример настройки Postfix</h2>
|
||
<p>Откройте конфигурационный файл <code>/server/conf/postfix/</code><a href="http://main.cf"><code>main.cf</code></a>.</p>
|
||
<pre><code class="language-plaintext">mcedit /server/conf/postfix/main.cf</code></pre>
|
||
<p>Убедитесь в том, что параметр myhostname совпадает с полным доменным именем вашего сервера:</p>
|
||
<pre><code class="language-plaintext">myhostname = passwork</code></pre>
|
||
<h3>Настройка имен и паролей SMTP</h3>
|
||
<p>Откройте или создайте файл <code>/server/conf/postfix/sasl_passwd</code>.</p>
|
||
<pre><code class="language-plaintext">mcedit /server/conf/postfix/sasl_passwd</code></pre>
|
||
<p>Добавьте SMTP хост, имя пользователя и пароль должны быть записаны в следующем формате:</p>
|
||
<pre><code class="language-plaintext">[mail.isp.example] username:password</code></pre>
|
||
<p>Если вы хотите использовать нестандартный TCP-порт (например, 587), используйте следующий формат:</p>
|
||
<pre><code class="language-plaintext">[mail.isp.example]:587 username:password</code></pre>
|
||
<p>для Gmail запись будет выглядеть следующим образом:</p>
|
||
<pre><code class="language-plaintext">[smtp.gmail.com]:587 username:password</code></pre>
|
||
<p>Создайте хэшированную базу данных для Postfix, выполните команду postmap:</p>
|
||
<pre><code class="language-plaintext">docker exec -it postfix postmap /etc/postfix/sasl_passwd</code></pre>
|
||
<p>После успешного выполнения команды в директории /server/conf/postfix должен появиться новый файл sasl_passwd.db.</p>
|
||
<h3>Защита файла с паролями и хэш-файла.</h3>
|
||
<p>Файлы /server/conf/postfix/sasl_passwd и /server/conf/postfix/sasl_passwd.db, созданные в предыдущих шагах, содержат ваши учетные данные SMTP в виде простого текста. По соображениям безопасности вы должны изменить права доступа к ним, так чтобы только пользователь root мог читать и записывать в файл.</p>
|
||
<p>Выполните следующие команды, чтобы изменить владельца файлов на root и обновить права доступа для файлов:</p>
|
||
<pre><code class="language-plaintext">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</code></pre>
|
||
<h3><strong>Конфигурация релей сервера</strong></h3>
|
||
<p>Откройте файл <code>/server/conf/postfix/</code><a href="http://main.cf"><code>main.cf</code></a></p>
|
||
<pre><code class="language-plaintext">mcedit /server/conf/postfix/main.cf</code></pre>
|
||
<p>Измените параметр relayhost, на свой внешний SMTP релей. Если в файле sasl_passwd был указан нестандартный TCP-порт, то вы должны использовать тот же порт при настройке параметра relayhost.</p>
|
||
<p>Укажите SMTP релей:</p>
|
||
<pre><code class="language-plaintext">relayhost = [mail.isp.example]:587</code></pre>
|
||
<p>для Gmail запись будет выглядеть следующим образом:</p>
|
||
<pre><code class="language-plaintext">relayhost = [smtp.gmail.com]:587</code></pre>
|
||
<p>В конце файла добавьте следующие параметры для включения аутентификации:</p>
|
||
<pre><code class="language-plaintext"># 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</code></pre>
|
||
<p>Сохраните изменения.</p>
|
||
<p>Перезапустите Postfix:</p>
|
||
<pre><code class="language-plaintext">docker exec -i postfix service postfix reload</code></pre>
|
||
<p> </p>
|
||
<p> </p>
|
||
<p> </p>
|
||
<p> </p>
|
||
<p> </p>
|
||
<p> </p>
|
||
<p> </p>
|