演示站

https://ma.meimo.vip/

安装教程

一:安装Vaultwarden

1.更新系统
确保系统内的所有软件都是最新版

sudo apt update && sudo apt upgrade -y

2.安装 Docker 和 Docker Compose

curl -fsSL https://get.docker.com | bash && sudo curl -L "https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose && docker-compose --version

3.一键部署 Vaultwarden ,含 WebSocket 端口

docker run -d --name vaultwarden -v /vw-data/:/data/ --restart unless-stopped -p 8080:80 -p 3012:3012 vaultwarden/server:latest

现在就可以通过 服务器ip:8080 登录
但是现在还不完美,我们要继续进行反代,用自己的域名访问

二.安装 Nginx Proxy Manager(反向代理)

1.创建安装目录

sudo -i

mkdir -p /root/data/docker_data/npm

cd /root/data/docker_data/npm

2.我们直接将他docker下来安装

vim docker-compose.yml

英文输入法下,按 i
将下面的全部粘贴进去

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'  # 保持默认即可,不建议修改左侧的80
      - '81:81'  # 冒号左边可以改成自己服务器未被占用的端口
      - '443:443' # 保持默认即可,不建议修改左侧的443
    volumes:
      - ./data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中
      - ./letsencrypt:/etc/letsencrypt  # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中

按一下 esc,然后 :wq 保存退出
3.运行并访问 Nginx Proxy Manager

cd /root/data/docker_data/npm   # 来到 dockercompose 文件所在的文件夹下

docker-compose up -d

现在我们就可以访问了 服务器ip:81

默认登陆名和密码:
Email:    admin@example.com
Password: changeme

4.配置反向代理

Domain Names:“填写你的域名”
Forward Hostname / IP:“你服务器的ip”
Forward Port:“8080端口”
然后将Websockets Support打开,其他的默认就行
然后去SSL,申请证书(3个月有效期,到期自动续费)



Domain Names:"websocket.域名"
Forward Hostname / IP:“你服务器的ip”
Forward Port:“3012端口”
然后将Websockets Support打开,其他的默认就行
然后去SSL,申请证书

现在就可以通过你的域名,访问官网了

进阶玩法

一.如果想关闭注册之类的,可以先删除容器,然后在新加修改好的(删除容器不会丢失数据)

删除容器:

docker rm -f  vaultwarden

关闭注册,并添加管理后台:

docker run -d --name vaultwarden \
-e SIGNUPS_ALLOWED=false \
-e ADMIN_TOKEN=ASDFGHJKL \
-v /vw-data/:/data/ \
--restart unless-stopped \
-p 8080:80 \
-p 3012:3012 \
vaultwarden/server:latest

-e SIGNUPS_ALLOWED=true/false(这一段是开放注册/关闭注册)
-e ADMIN_TOKEN=ASDFGHJKL(开放管理后台,ASDFGHJKL你自己设置,这是管理后台验证登录的令牌)
具体可以参考官方文档:https://rs.ppgg.in/configuration/configuration-overview

二.备份数据

步骤 1:编写备份脚本

首先,编写一个简单的备份脚本,将 Vaultwarden 数据目录压缩并保存到指定位置
1.1 创建备份脚本文件:

nano /usr/local/bin/vaultwarden_backup.sh

1.2 在文件中添加以下内容:

#!/bin/bash

# 设置备份存储目录(请根据需要修改路径)
BACKUP_DIR="/beifen"

# 当前日期
DATE=$(date +%F-%H%M%S)

# Vaultwarden 数据目录
VW_DATA_DIR="/vw-data"

# 备份文件名
BACKUP_FILE="$BACKUP_DIR/vaultwarden-backup-$DATE.tar.gz"

# 创建备份
tar -czvf $BACKUP_FILE $VW_DATA_DIR

# 保留最近 7 天的备份,删除旧备份
find $BACKUP_DIR -type f -name "vaultwarden-backup-*.tar.gz" -mtime +7 -exec rm {} \;

echo "Vaultwarden 数据备份已完成: $BACKUP_FILE"

BACKUP_DIR:将其设置为你想保存备份文件的目录,比如 /beifen。确保该目录存在,并且有写入权限。
VW_DATA_DIR:这是 Vaultwarden 数据所在的目录,根据你的 Docker 配置,它是 /vw-data。
1.3 保存并退出:
按 Ctrl + O 保存文件,然后按 Ctrl + X 退出。

步骤 2:赋予脚本执行权限

为了让这个脚本可以执行,你需要赋予它执行权限:
chmod +x /usr/local/bin/vaultwarden_backup.sh

步骤 3:设置 cron 作业

现在我们来设置 cron 作业,每天定时执行备份脚本。
3.1 打开 crontab:

crontab -e

3.2 添加以下条目(设置每天凌晨 2 点自动备份):

0 2 * * * /usr/local/bin/vaultwarden_backup.sh >> /var/log/vaultwarden_backup.log 2>&1

这条命令会每天凌晨 2 点执行备份脚本,并将输出写入 /var/log/vaultwarden_backup.log 日志文件中。
2>&1 表示将标准输出和错误输出都重定向到日志文件。
3.3 保存并退出:
保存编辑的 crontab,确保定时任务已正确设置。

步骤 4:测试备份脚本

手动运行备份脚本,确认它是否正常工作。

/usr/local/bin/vaultwarden_backup.sh

步骤 5:后期如果需要转移的恢复过程

①重新安装 Vaultwarden:
根据之前的安装命令重新设置 Vaultwarden。
②停止 Vaultwarden 容器(如果它正在运行):

docker stop vaultwarden

③恢复数据库和文件:
将备份文件复制到 Vaultwarden 数据目录(例如 /vw-data/)。
使用 tar 解压缩备份文件:

tar -xzvf /path/to/backup/vaultwarden-backup-2024-10-13.tar.gz -C /vw-data/

④检查文件权限:
确保文件的所有者和权限正确(通常需要设置为 root 用户):

chown -R root:root /vw-data/

⑤重启 Vaultwarden 容器:

docker start vaultwarden

⑥检查数据:
登录 Vaultwarden 确保数据已成功恢复。

步骤6:使用 ossutil 备份到阿里云 OSS

1 安装阿里云 ossutil 工具
ossutil 是阿里云官方的命令行工具,用于与 OSS 进行交互。 具体的可以去阿里云OSS官方文档,下载适用于你系统的 ossutil。
Linux可以通过以下步骤安装:

wget http://gosspublic.alicdn.com/ossutil/1.7.10/ossutil64
chmod 755 ossutil64
mv ossutil64 /usr/local/bin/ossutil

2 配置 ossutil
①下载并安装 ossutil 后,运行以下命令进行配置:

ossutil config

②配置中会要求提供以下信息:
AccessKeyId:阿里云的 AccessKeyId(你可以从阿里云控制台获取)。
AccessKeySecret:阿里云的 AccessKeySecret。
Endpoint:你所在区域的 OSS 终端地址,例如:oss-cn-hangzhou.aliyuncs.com。
参考
3 修改备份脚本以上传到 OSS
在现有的备份脚本中,添加将备份文件上传到阿里云 OSS 的部分。假设你的备份文件是 vaultwarden-backup-2024-10-13.tar.gz,你可以按如下方式上传:
修改一下上面的备份脚本:

#!/bin/bash

# 本地备份存储目录
BACKUP_DIR="/beifen"
DATE=$(date +%F-%H%M%S)  # 使用日期和时间作为文件名的一部分
VW_DATA_DIR="/vw-data"
BACKUP_FILE="$BACKUP_DIR/vaultwarden-backup-$DATE.tar.gz"

# 创建本地备份
tar -czvf $BACKUP_FILE $VW_DATA_DIR

# 保留最近 7 天的备份
find $BACKUP_DIR -type f -name "vaultwarden-backup-*.tar.gz" -mtime +7 -exec rm {} \;

# 上传备份文件到阿里云 OSS
ossutil cp $BACKUP_FILE oss://vaultwardenbeifen/

# 检查上传结果
if [ $? -eq 0 ]; then
    echo "备份文件已成功上传到阿里云 OSS"
else
    echo "上传失败,请检查配置"
fi

oss://your-bucket-name/vaultwarden-backups/:将这个路径替换为你在阿里云 OSS 中的存储桶名称和目标路径。
4 定期自动化
为了实现每天自动备份和上传,你可以使用 cron 定时任务。如下是在 crontab 中设置每天凌晨 3 点执行备份的方式:
①编辑 crontab:

crontab -e

②添加以下行:

0 3 * * * /usr/local/bin/vaultwarden_backup.sh

这样,每天备份文件会自动生成并上传到阿里云 OSS,同时在本地 /beifen 目录中保留。

最后修改:2025 年 01 月 28 日
如果觉得我的文章对你有用,请随意赞赏