Поиск по сайту:

Как установить Padloc Password Manager на Rocky Linux 8


На этой странице

  1. Предпосылки
  2. Шаг 1. Брандмауэр
  3. Шаг 2. Установите Docker
  4. Шаг 3. Установите Docker-Compose
  5. Шаг 4. Создание каталогов данных
  6. Шаг 5. Создание файла Docker Compose
  7. Шаг 6. Настройка NGinx
  8. Шаг 7. Создание файла среды
  9. Шаг 8. Установите SSL
  10. Шаг 9. Настройка SSL
  11. Шаг 10. Запустите Padloc
  12. Шаг 11. Доступ и настройка Padloc
  13. Шаг 12. Обновите Padloc
  14. Заключение

Padloc — это облачное решение для управления паролями, которое позволяет вам получать доступ и использовать сохраненные пароли на нескольких платформах. Он предлагает простой интерфейс и может использоваться для сохранения ваших паролей, а также для шифрования и хранения конфиденциальных документов. Он также поддерживает хранение токенов двухфакторной аутентификации и может добавлять их прямо с веб-страницы.

Padloc также предлагает автономное решение с открытым исходным кодом, которое вы можете установить на любой сервер, чтобы сохранить полный контроль над своими данными. Однако в этом есть оговорка. Вы не можете использовать собственное приложение с его настольными и мобильными приложениями. С другой стороны, Padloc служит PWA (прогрессивное веб-приложение), что означает, что вы можете установить его как собственное приложение на мобильном устройстве и воспользоваться несколькими его функциями.

В этом руководстве вы узнаете, как установить Padloc Password Manager на сервер под управлением Rocky Linux 8.

Предпосылки

  • Сервер под управлением Rocky Linux 8 с оперативной памятью не менее 1 ГБ.
  • Пользователь без полномочий root с привилегиями sudo.
  • Полное доменное имя (FQDN), указывающее на сервер, например example.com. Мы предполагаем, что в этом руководстве вы будете использовать только одно доменное имя для этого сервера.

Шаг 1 — Брандмауэр

Первым шагом является настройка брандмауэра. Rocky Linux использует Firewalld Firewall. Проверьте состояние брандмауэров.

$ sudo firewall-cmd --state
running

Брандмауэр работает с разными зонами, и мы будем использовать публичную зону по умолчанию. Перечислите все службы и порты, активные на брандмауэре.

$ sudo firewall-cmd --permanent --list-services

Он должен показать следующий вывод.

cockpit dhcpv6-client ssh

Разрешить порты HTTP и HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Перепроверьте состояние брандмауэра.

$ sudo firewall-cmd --permanent --list-services

Вы должны увидеть аналогичный вывод.

cockpit dhcpv6-client http https ssh

Перезагрузите брандмауэр, чтобы изменения вступили в силу.

$ sudo firewall-cmd --reload

Шаг 2 — Установите Докер

Rocky Linux поставляется со старой версией Docker. Чтобы установить последнюю версию, сначала установите официальный репозиторий Docker.

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

Установите последнюю версию Docker.

$ sudo dnf install docker-ce docker-ce-cli containerd.io

Включите и запустите демон Docker.

$ sudo systemctl enable docker --now

Убедитесь, что он запущен.

$ sudo systemctl status docker
? docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2022-04-09 22:43:21 UTC; 30s ago
     Docs: https://docs.docker.com
 Main PID: 43005 (dockerd)
    Tasks: 7
   Memory: 90.5M
   CGroup: /system.slice/docker.service
           ??43005 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
 ....

По умолчанию Docker требует привилегий root. Если вы хотите избежать использования sudo при каждом запуске команды docker, добавьте свое имя пользователя в docker группа.

$ sudo usermod -aG docker $(whoami)

Вам нужно будет выйти из сервера и снова войти в систему как тот же пользователь, чтобы активировать это изменение.

Шаг 3 — Установите Docker-Compose

Загрузите последнюю стабильную версию Docker Compose.

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Примените исполняемые разрешения к двоичному файлу Docker Compose.

$ sudo chmod +x /usr/local/bin/docker-compose

Протестируйте установку.

$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c

Установите скрипт завершения Bash для создания Docker.

$ sudo curl \
    -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose \
    -o /etc/bash_completion.d/docker-compose

Перезагрузите настройки своего профиля, чтобы заработало завершение bash.

$ source ~/.bashrc

Шаг 4 — Создайте каталоги данных

Создайте каталог для padloc.

$ mkdir ~/padloc

Перейдите в каталог padloc.

$ cd ~/padloc

Создайте каталоги для пользовательской базы данных, журналов приложений, вложений, приложения PWA и конфигурации SSL.

$ mkdir {attachments,db,logs,pwa,ssl}

Создайте каталог для журналов Nginx.

$ mkdir logs/nginx

Шаг 5 — Создайте файл Docker Compose

Создайте и откройте файл ~/padloc/docker-compose.yml для редактирования.

$ nano docker-compose.yml

Вставьте в него следующий код.

version: "3"
services:
    server:
        image: padloc/server
        container_name: padloc_server
        restart: unless-stopped
        #ports:
        #    - ${PL_SERVER_PORT:-3000}:3000
        expose:
            - 3000
        volumes:
            - ${PL_DB_DIR:-./db}:/data:Z
            - ${PL_ATTACHMENTS_DIR:-./attachments}:/docs:Z
            - ./logs:/logs:Z
        environment:
            - PL_PWA_URL
            - PL_EMAIL_SERVER
            - PL_EMAIL_PORT
            - PL_EMAIL_USER
            - PL_EMAIL_PASSWORD
            - PL_EMAIL_FROM
    pwa:
        image: padloc/pwa
        container_name: padloc_pwa
        restart: unless-stopped
        #ports:
        #    - ${PL_PWA_PORT:-8080}:8080
        expose:
            - 8080
        volumes:
            - ${PL_PWA_DIR:-./pwa}:/pwa:Z
        environment:
            - PL_SERVER_URL
    nginx:
        image: nginx
        container_name: nginx
        restart: unless-stopped
        volumes: 
            - ./nginx.conf:/etc/nginx/nginx.conf
            - ${PL_SSL_CERT:-./ssl/cert.pem}:/ssl/cert
            - ${PL_SSL_KEY:-./ssl/key.pem}:/ssl/key
            - ${PL_SSL_CONF:-./ssl/ssl.conf}:/ssl/ssl.conf
            - /etc/ssl/certs/dhparam.pem:/ssl/dhparam.pem
            - ./logs/nginx:/var/log/nginx:Z
        ports:
            - 80:80
            - 443:443

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Мы используем три образа Docker для Padloc.

<старт>

  • Образ сервера — содержит всю внутреннюю логику приложения. По умолчанию он работает на порту 3000. Мы раскомментировали переменную ports в нашем файле компоновки, чтобы сделать порт невидимым для сервера. Вместо этого мы используем переменную expose, чтобы открыть порт внутри механизма Docker для контейнера Nginx. Переменные среды для образа будут настроены позже. Мы также сопоставили каталоги для пользовательской базы данных, вложений и журналов приложений.
  • Образ PWA — содержит внешний интерфейс приложения. По умолчанию работает на порту 8080. Что касается образа сервера, мы скрыли раздел портов для этого образа и открыли порт внутри механизма Docker. Мы сопоставили каталог для веб-приложения.
  • Образ Nginx — содержит серверное приложение Nginx. У нас есть порты для HTTP (80) и HTTPS (443) на сервер, чтобы сделать его доступным извне. Мы сопоставили несколько каталогов и файлов, чтобы все заработало.
    • Первый файл — это nginx.conf, который содержит все основные конфигурации Nginx для обслуживания приложения padloc.
    • Следующие два файла, cert.pem и key.pem, представляют собой сертификат SSL и ключи, которые мы сгенерируем с помощью Lets encrypt.
    • Файл ssl.conf содержит дополнительную информацию об обслуживании SSL через Nginx.
    • Файл dhparam.pem предназначен для обслуживания сертификата группы Диффи-Хеллмана.
    • Последняя запись предназначена для сопоставления журналов Nginx с сервером, чтобы вы могли получить к ним доступ вне Docker.
  • Флаг :Z в конце сопоставления папок указывает, что эти каталоги будут доступны только из соответствующих контейнеров. Это делается, так как SELINUX включен на нашем сервере. Если вы не используете SELinux, то можете убрать этот флаг.

    Шаг 6 — Настройте NGinx

    Создайте и откройте файл ~/padloc/nginx.conf для редактирования.

    $ nano nginx.conf
    

    Вставьте в него следующий код.

    http {
        # This is required if you want to upload attachments
        client_max_body_size 10m;
    
        # Redirect all http traffic to https
        server {
            listen 80 default_server;
            listen [::]:80 default_server;
            server_name _;
            return 301 https://$host$request_uri;
        }
    
        server {
            # We don't need a host name here since we're only
            # dealing with one domain, but you may insert your domain here.
            server_name _;
    
            # Both server and pwa are served over https
            listen 443 ssl http2;
            listen [::]:443 ssl http2;
    
            # This will resolve to the server instance
            location /server/ {
                proxy_pass http://padloc_server:3000;
                rewrite ^/padloc_server(.*)$ $1 break;
            }
    
            # This will resolve to the web app
            location / {
                proxy_pass http://padloc_pwa:8080;
                rewrite ^/padloc_pwa(.*)$ $1 break;
            }
    
            # SSL certificate
            ssl_certificate /ssl/cert;
            # SSL private key
            ssl_certificate_key /ssl/key;
    
            # Add this file to add advanced ssl configuration
            include /ssl/ssl.conf;
        }
    }
    
    # This section is required by nginx
    events {}
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    Приведенная выше конфигурация перенаправляет все запросы, сделанные из контейнера padloc_server, в расположение доменного имени /server, а также любые запросы, сделанные из padlock_pwa в корень. Он также перенаправляет весь HTTP-трафик на HTTPS. Мы также установили размер загружаемого файла 10 МБ для вложений. Вы можете изменить размер в соответствии с вашими требованиями. Настройки SSL были включены через внешний файл, который мы настроим позже.

    Шаг 7 — Создайте файл среды

    Создайте и откройте файл ~/padloc/.env для редактирования.

    $ nano .env
    

    Вставьте в него следующий код.

    # GENERAL SETTINGS
    # ================
    # URL that will resolve to the server instance
    PL_PWA_URL=https://example.com/
    # URL that will resolve to the web app
    PL_SERVER_URL=https://example.com/server/
    
    # SERVER SETTINGS
    # ===============
    # Port the server instance will listen on
    PL_SERVER_PORT=3000
    # Directory where database files will be stored
    PL_DB_DIR=./db
    # Directory where attachment files will be stored
    PL_ATTACHMENTS_DIR=./attachments
    
    # PWA SETTINGS
    # ============
    # Port the web app will be served from
    PL_PWA_PORT=8080
    # Directory where the static code for the web app will be stored
    PL_PWA_DIR=./pwa
    
    # EMAIL SETTINGS
    # =============
    # SMTP host
    PL_EMAIL_SERVER=smtp.example.com
    # SMTP username
    
    # SMTP port
    PL_EMAIL_PORT=443
    # SMTP password
    PL_EMAIL_PASSWORD=your_smtp_password
    # Always use TLS when sending emails
    # PL_EMAIL_SECURE=false
    # Email ID to send mails from
    
    
    # SSL SETTINGS
    # ============
    # The path to your ssl certificate
    PL_SSL_CERT=/etc/letsencrypt/live/example.com/fullchain.pem
    # The path to your ssl private key
    PL_SSL_KEY=/etc/letsencrypt/live/example.com/privkey.pem
    # Advanced configuration file
    PL_SSL_CONF=./ssl/ssl.conf
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса. Большинство настроек говорят сами за себя. Существующая конфигурация Nginx предполагает, что приложение будет обслуживаться через основной домен, а сервер — через каталог /server. PL_PWA_DIR не является обязательным для установки здесь и в файле Docker-compose, но его наличие ускоряет запуск контейнера, поэтому его всегда следует устанавливать.

    Padloc требует возможности отправлять электронные письма для таких функций, как проверка новых пользователей, двухфакторная аутентификация и сброс паролей. Поэтому данные SMTP являются обязательными.

    Для функции SSL мы используем каталоги Lets Encrypt по умолчанию, в которых расположены сертификаты. Дополнительная конфигурация SSL будет предоставлена через файл /ssl/ssl.conf.

    Шаг 8 — Установите SSL

    Чтобы установить SSL-сертификат с помощью Lets Encrypt, нам нужно установить инструмент Certbot.

    Во-первых, вам нужно скачать и установить репозиторий EPEL.

    $ sudo dnf install epel-release
    

    Выполните следующие команды, чтобы установить Certbot.

    $ sudo dnf install certbot
    

    Создайте SSL-сертификат.

    $ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d example.com
    

    Приведенная выше команда загрузит сертификат в каталог /etc/letsencrypt/live/example.com на вашем сервере.

    Создайте групповой сертификат Диффи-Хеллмана.

    $ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
    

    Создайте задание Cron для обновления SSL. Он будет запускаться каждую неделю, чтобы проверять сертификат и при необходимости обновлять его. Для этого сначала создайте файл /etc/cron.weekly/certbot-renew и откройте его для редактирования.

    $ sudo nano /etc/cron.weekly/certbot-renew
    

    Вставьте следующий код. Мы используем команды Docker для запуска, остановки и перезапуска контейнера Nginx в зависимости от статуса обновления.

    #!/bin/sh
    certbot renew --cert-name example.com --pre-hook "docker stop nginx" --post-hook "docker start nginx" --renew-hook "docker restart nginx"
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

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

    $ sudo chmod +x /etc/cron.weekly/certbot-renew
    

    Шаг 9. Настройте SSL

    Создайте и откройте файл ~/padloc/ssl/ssl.conf для редактирования.

    $ nano ssl/ssl.conf
    

    Вставьте в него следующий код.

    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_prefer_server_ciphers off;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /ssl/dhparam.pem;
    resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
    resolver_timeout 2s;
    

    Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

    В приведенном выше файле представлены некоторые рекомендуемые настройки SSL, чтобы сделать ваш сайт более безопасным. Он ограничивает протоколы TLS версиями 1.2 и 1.3 и включает сшивание и проверку протокола статуса онлайн-сертификата (OCSP).

    Шаг 10 — Запустите Padloc

    Теперь, когда вы все настроили, запустите Padloc, используя следующую команду.

    $ docker-compose up -d
    

    Проверьте состояние контейнеров.

    $ docker ps
    

    Вы должны получить аналогичный результат.

    Шаг 11. Доступ и настройка Padloc

    Откройте URL-адрес https://example.com в своем браузере, и вы попадете на его страницу входа.

    Щелкните ссылку Зарегистрироваться сейчас, чтобы начать регистрацию.

    Введите свое имя и адрес электронной почты и нажмите Продолжить, чтобы продолжить.

    Padloc отправит вам электронное письмо с кодом подтверждения. Введите код подтверждения в поле выше и нажмите «Продолжить», чтобы продолжить.

    Padloc автоматически сгенерирует для вас мастер-пароль. Наведите курсор на поле и скопируйте его. Вставьте его снова в поле ниже. Вы также можете использовать свой пароль. Нажмите «Продолжить», когда закончите.

    Вы попадете на домашнюю страницу Padloc. Вы можете начать сохранять свои данные для входа и конфиденциальные документы.

    Шаг 12 — Обновите Padloc

    Обновление Padloc — это двухэтапный процесс. Сначала переключитесь в каталог Padloc.

    $ cd ~/padloc
    

    Выключите и удалите существующие контейнеры Padloc.

    $ docker-compose down --remove-orphans
    

    Вытащите последние изображения.

    $ docker-compose pull
    

    Запустите контейнеры снова.

    $ docker-compose up -d
    

    Заключение

    На этом мы завершаем наше руководство по установке менеджера паролей Padloc Self-hosted на сервер Rocky Linux 8. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.