安装bitwarden

环境

  • Docker
  • Docker Compose
  • Nginx

获取镜像

如果将服务器部署在大陆,因为无法连接docker服务器,所以在海外服务器下载镜像

# 1、在海外服务器下载镜像
docker pull vaultwarden/server:latest
# 2、将镜像打包传到大陆服务器
docker save -o vaultwarden.tar vaultwarden/server
scp vaultwarden.tar root@x.x.x.x:/usr/local/src/
# 3、在大陆服务器导入镜像
docker load -i vaultwarden.tar
# 4、以服务器执行写入docker-compose.yml
mkdir -p /root/data/docker_data/vaultwarden
cd /root/data/docker_data/vaultwarden

配置容器

vim docker-compose.yml
version: '3'

services:
  vaultwarden:
    container_name: vaultwarden
    image: vaultwarden/server:latest
    restart: unless-stopped
    volumes:
      - ./data/:/data/
    ports:
      - 8081:80
    environment:
      - DOMAIN=https://vaultwarden.ald-bank.com # 这是您希望与您的Vaultwarden实例关联的域名。
      - LOGIN_RATELIMIT_MAX_BURST=10 # 允许在一阵登录/两步验证尝试中的最大请求次数。
      - LOGIN_RATELIMIT_SECONDS=60 # 这是来自同一IP的登录请求之间的平均秒数,在Vaultwarden限制登录次数之前。
      - ADMIN_RATELIMIT_MAX_BURST=10 # 这与LOGIN_RATELIMIT_MAX_BURST相同,只争对admin面板。
      - ADMIN_RATELIMIT_SECONDS=60 # 这与LOGIN_RATELIMIT_SECONDS相同
      - ADMIN_SESSION_LIFETIME=20 # 会话持续时间
      - ADMIN_TOKEN=xxxxxxxxxxx # 此值是Vaultwarden管理员面板的令牌(一种密码)。为了安全起见,这应该是一个长的随机字符串。如果未设置此值,则管理员面板将被禁用。建议openssl rand -base64 48 生成ADMIN_TOKEN确保安全
      - SENDS_ALLOWED=true  # 此设置决定是否允许用户创建Bitwarden发送 - 一种凭证共享形式。
      - EMERGENCY_ACCESS_ALLOWED=true # 此设置控制用户是否可以启用紧急访问其账户的权限。例如,这样做可以在用户去世后,配偶可以访问密码库以获取账户凭证。可能的值:true / false。
      - WEB_VAULT_ENABLED=true # 此设置决定了网络保险库是否可访问。一旦您配置了您的账户和客户端,停止您的容器,然后将此值切换为false并重启Vaultwarden,可以用来防止未授权访问。可能的值:true/false。
      - SIGNUPS_ALLOWED=true # 此设置控制新用户是否可以在没有邀请的情况下注册账户。可能的值:true / false。

# DOMAIN改成最后你要用的域名形式
# ADMIN_TOKEN可以在ssh里面输入openssl rand -base64 48生成
# SIGNUPS_ALLOWED等你注册好之后,如果你只是想自己用,可以把这边改成false

运行容器

docker-compose up -d

访问

理论上我们就可以输入 http://ip:8081 访问了

虽然可以访问,但是这个系统需要用到https,所以我们需要配置域名解析,再用nginx的反向代理将域名转发到这个服务

# HTTP 服务器配置
server {
    listen 80;
    server_name vaultwarden.ald-bank.com;

    # 重定向所有 HTTP 请求到 HTTPS
    return 301 https://$host$request_uri;
}

# HTTPS 服务器配置
server {
    listen 443 ssl;
    server_name vaultwarden.xxxx.com;

    ssl_certificate xxxx.pem;
    ssl_certificate_key xxxx.key;

    ssl_protocols TLSv1.2;
    ssl_ciphers 'HIGH:!aNULL:!MD5';  # 设置加密套件
    ssl_prefer_server_ciphers on;

    gzip on;
    gzip_http_version 1.1;
    gzip_min_length 1k;
    gzip_disable "MSIE [1-6].";
    gzip_types text/css text/javascript application/javascript image/jpeg image/gif;
    gzip_vary on;

    location / {
        proxy_pass http://127.0.0.1:8081/;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade-Insecure-Requests 1;
    }
}

更新 & 卸载

更新

cd /root/data/docker_data/vaultwarden
docker-compose pull
docker-compose up -d
# prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像
docker image prune

卸载

cd /root/data/docker_data/vaultwarden
docker-compose down
cd ..
# 完全删除
rm -rf /root/data/docker_data/vaultwarden

管理后台

登陆后台

在 URL 后添加 /admin,例如 http://<您的服务器地址>:<端口>/admin
登陆页面需要输入密码,该密码为docker-compose.yml里配置的ADMIN_TOKEN

管理员功能

1. 用户管理

  • 添加/删除用户: 可以手动添加新用户或删除现有用户。
  • 重置用户密码: 为用户重置密码,帮助他们恢复访问。
  • 查看用户列表: 查看所有注册用户的信息。

2. 组织管理

  • 创建和管理组织: 可以为团队或组织创建专用的存储库和管理权限。
  • 分配用户角色: 设置用户在组织中的角色(如管理员、成员等)。

3. 设置和配置

  • 管理设置: 修改 Vaultwarden 的全局设置,如安全策略、邮箱配置等。
  • 启用/禁用功能: 根据需求启用或禁用特定功能,例如二步验证、密码强度要求等。

4. 监控和审计

  • 查看日志: 审计活动的日志,监控用户的登录和其他活动。
  • 查看安全事件: 检查与安全相关的事件,如未授权的访问尝试。

5. 数据导入和导出

  • 导入数据: 从其他密码管理器导入密码数据。
  • 导出数据: 将存储的数据导出为文件,以便备份或迁移。

6. 系统维护

  • 备份和恢复: 管理数据库备份和恢复操作,以保护用户数据。
  • 更新和升级: 进行系统更新,确保使用最新的 Vaultwarden 版本。

备份 & 恢复

查找数据保存位置

该教程的数据保存在/root/data/docker_data/vaultwarden/data
如果想要确认,可按以下方法查找:

docker inspect <容器id>
# 找到"Mounts"项的"Source"即为数据保存路径

备份脚本

mkdir -p /data/shell/ && cd /data/shell/ && vim backup_vaultwarden.sh

编写备份脚本

#!/bin/bash

# 定义变量
SOURCE_DIR="/root/data/docker_data/vaultwarden/data"
BACKUP_DIR="/root/data/backups/vaultwarden"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
BACKUP_FILE="vaultwarden_backup_$TIMESTAMP.sqlite3"

# 创建备份目录(如果不存在)
mkdir -p "$BACKUP_DIR"

# 复制数据库文件到备份目录
cp "$SOURCE_DIR/db.sqlite3" "$BACKUP_DIR/$BACKUP_FILE"

# 可选:删除超过7天的备份
find "$BACKUP_DIR" -type f -name "vaultwarden_backup_*.sqlite3" -mtime +7 -exec rm {} \;

echo "Backup completed: $BACKUP_FILE"

设置定时任务备份

0 2 * * * /data/shell/backup_vaultwarden.sh >> /var/log/vaultwarden_backup.log 2>&1

恢复数据

停止容器
将备份数据拷贝覆盖
启动容器

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。