故障

使用 Outlook 配置 SMTP 不成功

使用 Outlook 始终无法在 vaultwarden 上配置成功,但我部署的官方 Bitwarden 使用 Outlook 配置 SMTP 完全正常。此故障可能和这个有关:# 851

直接修改 config.json 文件不生效

通过管理页面修改配置并保存后,会将配置参数写入 config.json 文件,但当通过直接编辑 config.json 文件配置参数后,管理页面无法读取修改后的配置参数。

原因为只有在 vaultwarden 容器启动时才会读取 config.json 文件。修改 config.json 文件后要使功能生效,需要在修改 config.json 文件后重启 vaultwarden 容器:

docker restart vaultwarden

日志记录项的时间和系统时间不一致

日志记录使用 UTC(全球标准时间),而中国使用时间为 UTC+8,比 UTC 推后 8小时。

在创建 vaultwarden 容器时加上时区环境变量:

-e TZ=Asia/Shanghai

Fail2ban 不起作用

先查看 Fail2ban 是否正常运行。如果正常运行,运行下面的命令后将显示 Server replied: pong

sudo fail2ban-client ping

如果 Fail2ban 正常运行,可能的原因:

创建 Jail 文件时 vaultwarden 日志记录文件的路径设置不正确

vaultwarden 日志记录文件中记录项的时间和系统时间不一致

原因:vaultwarden 容器的时区与主机的时区不一致

现象:无论怎么测试,fail2ban.log 中看不到 ban IP 的记录

解决:在创建 vaultwarden 容器时加上时区环境变量:-e TZ = Asia/Shanghai

Fail2ban 的 iptables 封禁策略不正确

原因:Fail2ban 默认的 iptables 封禁策略为 REJECT--reject-with icmp-port-unreachable,需要变更为 DROP

现象:sudo iptables --list -n 命令能看到被 ban 的 IP 记录,但封禁策略为 REJECT

解决:编辑 /etc/fail2ban/action.d/iptables-common.conf 文件,将封禁策略变更为 DROP

# 打开 iptables-common.conf 文件
sudo vi /etc/fail2ban/action.d/iptables-common.conf
# 注释掉这一行
blocktype = REJECT --reject-with icmp-port-unreachable
# 添加一行
blocktype = DROP
# 重启 Fail2ban
sudo systemctl restart fail2ban

Let's Encrypt 证书未自动续期

正常情况下,使用 lnmp 自带的 Let's Encrypt 生成的相应的证书(这里为 vault.bitwarden.in)会自动续期。

Let's Encrypt 未自动续期的原因

查看 Let's Encrypt 日志文件 /usr/local/acme.sh/acme.sh.log,发现如下错误记录:

Verify error:Invalid response from https://vault.bitwarden.in/.well-known/acme-challenge/QK1Gw-lJbi78GO5smcU1-Akkkm13UQbtLmVR073J2iI

原因为我之前将 vault.bitwarden.in.conf 配置文件中的如下语句移除了:

location ~ /.well-known {
allow all;
}

手动续期方法

# 定位到 /usr/local/acme.sh/ 目录
cd /usr/local/acme.sh/
# 手动续期 vault.bitwarden.in 的 Let’s Encrypt 证书
acme.sh --renew -d vault.bitwarden.in

如果由于某些原因无法手动续期,则可以通过 lnmp 命令删除虚拟主机然后重新添加虚拟主机的方式重新获取证书:(此操作不会丢失 vaultwarden 的数据,并且不需要对 vaultwarden 做任何操作)。

1、备份 vault.bitwarden.in 虚拟主机的配置文件:/usr/local/nginx/conf/vhost/vault.bitwarden.in.conf

2、删除并重新创建 vault.bitwarden.in 虚拟主机:

# 删除虚拟主机
lnmp vhost del # 根据提示输入 vault.bitwarden.in 以删除此虚拟主机
# 删除网站文件
chattr -i /home/wwwroot/vault.bitwarden.in/.user.ini # 需要先执行此命令才能删除 .user.ini 文件
rm -rf /home/wwwroot/vault.bitwarden.in/ # 执行删除操作
# 新建虚拟主机
lnmp vhost add
# 根据提示输入使用的域名(这里为 vault.bitwarden.in)
# 选择使用 Let's Encrypt
# 其他如 Rewrite rule、PHP Pathinfo、access log、databse、ftp 等全部选 no

3、恢复 vault.bitwarden.in 虚拟主机的配置文件:/usr/local/nginx/conf/vhost/vault.bitwarden.in.conf

4、重启 nginx 使配置生效:

lnmp nginx restart
# 或者
/etc/init.d/nginx restart

在网页密码库后台进入 YubiKey OTP 安全钥匙的两步登录时出错

错误内容 1

发生错误。 YUBICO_CLIENT_ID or YUBICO_SECRET_KEY environment variable is not set. Yubikey OTP Disabled

原因为未设置配置文件 config.json 中 Yubico 的 Client IDSecret key 环境变量的值。通过 Yubico API key signup 页面注册您的 Yubico 的 Client IDSecret key,然后将其通过管理页面或直接配置到 config.json 中即可。

错误内容 2

发生错误。 Yubico support is disabled

原因为未启用 Yubikey,启用即可。