如何在 Rocky Linux 8 上安装 Padloc 密码管理器
在此页
- 先决条件
- 第 1 步 - 防火墙
- 第 2 步 - 安装 Docker
- 第 3 步 - 安装 Docker-Compose
- 第 4 步 - 创建数据目录
- 第 5 步 - 创建 Docker Compose 文件
- 第 6 步 - 配置 NGinx
- 第 7 步 - 创建环境文件
- 第 8 步 - 安装 SSL
- 第 9 步 - 配置 SSL
- 第 10 步 - 运行 Padloc
- 第 11 步 - 访问和配置 Padloc
- 第 12 步 - 更新 Padloc
- 结论
Padloc 是一种基于云的密码管理解决方案,允许您跨多个平台访问和使用您保存的密码。它提供了一个简单的界面,可以用来保存你的密码,还可以加密和存储敏感文件。它还支持存储双因素身份验证令牌,并可以直接从网页添加它们。
Padloc 还提供了一个开源的自托管解决方案,您可以将其安装在任何服务器上以保持对数据的完全控制。但是,有一点需要注意。您不能将自托管应用程序与其桌面和移动应用程序一起使用。从好的方面来说,Padloc 是作为 PWA(渐进式 Web 应用程序)提供服务的,这意味着您可以将其作为本机应用程序安装在移动设备上并利用其多项功能。
在本教程中,您将学习如何在基于 Rocky Linux 8 的服务器上安装 Padloc 密码管理器。
先决条件
- 一台运行 Rocky Linux 8 且内存至少为 1 GB 的服务器。
- 具有 sudo 权限的非根用户。
- 指向服务器的完全限定域名 (FQDN),如
example.com
。在本教程中,我们假设您将只为此服务器使用一个域名。
第 1 步 - 防火墙
第一步是配置防火墙。 Rocky Linux 使用 Firewalld 防火墙。检查防火墙状态。
$ 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 步 - 安装 Docker
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 权限。如果您想避免每次运行 docker
命令时都使用 sudo
,请将您的用户名添加到 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
安装 Docker-compose Bash Completion 脚本。
$ 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-completion 工作。
$ 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 来保存文件。
我们为 Padloc 使用了三个 Docker 镜像。
<开始>
- 第一个文件是
nginx.conf
,其中包含Nginx 为padloc 应用程序提供服务的所有主要配置。 - 接下来的两个文件
cert.pem
和key.pem
是我们将使用 Lets encrypt 生成的 SSL 证书和密钥。 - 文件
ssl.conf
包含有关通过 Nginx 提供 SSL 的附加信息。 - 文件
dhparam.pem
用于提供 Diffie-Hellman 组证书。 - 最后一项是将 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 MB。您可以根据您的要求更改尺寸。 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
要使用 Lets Encrypt 安装 SSL 证书,我们需要安装 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
目录。
生成 Diffie-Hellman 组证书。
$ 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 协议限制为 v1.2 和 v1.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
结论
我们关于在 Rocky Linux 8 服务器上安装 Padloc 自托管密码管理器的教程到此结束。如果您有任何问题,请在下面的评论中发表。