如何在 Ubuntu 22.04 上使用 Docker 安装 Vaultwarden如何在 Ubuntu 22.04 上使用 Docker 安装 Vaultwarden如何在 Ubuntu 22.04 上使用 Docker 安装 Vaultwarden如何在 Ubuntu 22.04 上使用 Docker 安装 Vaultwarden
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 22.04 上使用 Docker 安装 Vaultwarden

在此页

  1. 先决条件
  2. 第 1 步 - 配置防火墙
  3. 第 2 步 - 安装 Docker 和 Docker Compose
  4. 第 3 步 - 为 Vaultwarden 创建 Docker Compose 文件
  5. 第 4 步 - 其他 Vaultwarden 配置
    1. 禁用注册
    2. 禁用邀请
    3. 禁用密码提示
    4. 禁用管理面板
    5. 地窖守卫日志

    Vaultwarden 是用 Rust 语言编写的 Bitwarden 服务器的非官方端口。它与官方 Bitwarden 客户端兼容,并且比 Bitwarden 资源占用更少。除了一些功能外,它几乎实现了 Bitwarden 的所有功能。它使用 Bitwarden API 提供组织支持、附件、身份验证器、U2F、Yubikey、Duo 支持和电子邮件别名服务支持等功能。

    在本教程中,您将学习如何在 Ubuntu 22.04 服务器上设置 Vaultwarden 副本。

    先决条件

    • A server running Ubuntu 22.04.

    • A non-root user with sudo privileges.

    • The uncomplicated Firewall(UFW) is enabled and running.

    • A Fully Qualified domain name (FQDN) pointing to the server like, vaultwarden.example.com.

    • Everything is updated.

      $ sudo apt update && sudo apt upgrade
      

    第 1 步 - 配置防火墙

    在安装任何包之前,第一步是配置防火墙以允许 HTTP 和 HTTPS 连接。

    检查防火墙的状态。

    $ sudo ufw status
    

    您应该会看到如下内容。

    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    

    允许 HTTP 和 HTTPs 端口。

    $ sudo ufw allow http
    $ sudo ufw allow https
    

    再次检查状态以确认。

    $ sudo ufw status
    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere
    80/tcp                     ALLOW       Anywhere
    443                        ALLOW       Anywhere
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    80/tcp (v6)                ALLOW       Anywhere (v6)
    443 (v6)                   ALLOW       Anywhere (v6)
    

    第 2 步 - 安装 Docker 和 Docker Compose

    添加 Dockers 官方 GPG 密钥。

    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
    

    运行以下命令以添加 Docker 存储库。

    $ echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    

    更新系统以包含 Dockers 存储库。

    $ sudo apt update
    

    安装泊坞窗。

    $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    

    本教程将使用 Docker Compose v2 插件而不是旧的遗留二进制文件。因此,运行它的命令从 docker-compose 更改为 docker compose ,这反映在这里。

    Docker 以提升的权限运行,因此您需要经常使用 sudo 来运行命令。更好的选择是将您的 Linux 用户帐户添加到 docker 用户组。

    $ sudo usermod -aG docker ${USER}
    

    $ {USER} 变量获取当前登录的系统帐户。如果您未使用要授予权限的用户登录,请将 $ {USER} 替换为用户名。

    要申请新的组成员资格,请退出服务器并重新登录,或使用以下命令。系统将提示您输入用户密码。

    $ su - ${USER}
    

    第 3 步 - 为 Vaultwarden 创建 Docker Compose 文件

    为 Vaultwarden 创建一个新目录。

    $ mkdir vaultwarden
    

    切换到目录。

    $ cd vaultwarden
    

    创建 Docker 组合文件并打开它进行编辑。

    $ nano docker-compose.yml
    

    将以下代码粘贴到其中。将 DOMAIN 和 EMAIL 变量替换为适当的值。

    version: '3'
    
    services:
      vaultwarden:
        image: vaultwarden/server:latest
        container_name: vaultwarden
        restart: always
        environment:
          WEBSOCKET_ENABLED: "true"  # Enable WebSocket notifications.
          DOMAIN: "https://vaultwarden.example.com"
          SMTP_HOST: "<smtp.domain.tld>"
          SMTP_FROM: "<>"
          SMTP_PORT: "587"
          SMTP_SECURITY: "starttls"
          SMTP_USERNAME: "<username>"
          SMTP_PASSWORD: "<password>"
        volumes:
          - ./vw-data:/data
    
      caddy:
        image: caddy:2
        container_name: caddy
        restart: always
        ports:
          - 80:80  # Needed for the ACME HTTP-01 challenge.
          - 443:443
        volumes:
          - ./Caddyfile:/etc/caddy/Caddyfile:ro
          - ./caddy-config:/config
          - ./caddy-data:/data
        environment:
          DOMAIN: "https://vaultwarden.example.com"  # Your domain.
          EMAIL: ""                 # The email address to use for ACME registration.
          LOG_FILE: "/data/access.log"
    

    通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

    我们在单个 Docker 组合文件中设置 Vaultwarden 和 Caddy Web 服务器。让我们看一下文件中定义的所有选项。

    • image是指Vaultwarden和Caddy的Docker镜像在Dockerhub上的位置。
    • container_name 允许您将标签应用于 docker 容器,以便在 Docker 网络中引用容器时使用。
    • restart 指定容器的重启策略。将它设置为 always 意味着容器如果退出,将自动重新启动。
    • 环境部分设置 Vaultwarden 和 Caddy 所需的变量。如果你的服务的SMTP端口是587,设置变量SMTP_SECURITY的值为starttls,如果你的服务的SMTP端口是465,将变量 SMTP_SECURITY 的值设置为 force_tls。域变量是电子邮件验证工作所必需的。我们已启用 Web 套接字以使通知正常工作。
    • volume 定义了服务器上存储持久数据的目录。服务器上的 /vw-data 目录映射到容器中的 /data 目录,该目录存储 Vaultwarden 所需的所有数据。同理,将Caddy文件所在位置、Caddy配置、caddys数据映射到容器中的相应目录。 Docker 将自动在 Volume 部分下配置的服务器上创建相应的目录。
    • 端口告诉容器向主机发布端口或一系列端口。

    第 4 步 - 额外的 Vaultwarden 配置

    禁用注册

    如果您不想为用户注册打开 Vaultwarden 安装,您可以通过在 Docker 组合文件的 environment 部分下添加以下变量来禁用它。

    environment:
         WEBSOCKET_ENABLED: "true"  # Enable WebSocket notifications.
    	 SIGNUPS_ALLOWED: "false"
    	 ....
    

    禁用邀请

    即使在禁用用户注册之后,属于组织的现有用户仍然可以邀请新用户。要停止它,请使用以下变量。

    INVITATIONS_ALLOWED: "false"
    

    禁用密码提示

    Vaultwarden 通过电子邮件发送密码提示,并在密码提示页面上显示它们。要禁用该功能,请设置 SHOW_PASSWORD_HINT 变量的值。

    SHOW_PASSWORD_HINT: "false"
    

    禁用管理面板

    Vaultwarden 为其 Web 界面托管静态文件。您可以通过将以下变量设置为 false 来禁用此功能。

    WEB_VAULT_ENABLED: "false"
    

    您可以通过使用 Compose 文件中 volumes 部分下的配置提供要托管的静态文件来覆盖 Vault 文件。

    volumes:
          - ./vw-data:/data
    	  - /path/to/static/files_directory:/web-vault
    

    秘藏守卫日志

    Vaultwarden 仅记录到标准输出。您可以将其配置为记录到文件。

    LOG_FILE: "/data/vaultwarden.log"
    

    要减少日志消息的数量,您可以将日志级别设置为 warn,同时将变量 EXTENDED_LOGGING 设置为 true。

    LOG_LEVEL: "warn"
    EXTENDED_LOGGING: "true"
    

    第 5 步 - 为 Vaultwarden 创建 Caddy 文件

    现在我们已经配置了 Vaultwarden,让我们为 Vaultwarden 创建一个 caddy 文件并打开它进行编辑。

    $ nano Caddyfile
    

    将以下代码粘贴到其中。

    {$DOMAIN}:443 {
      log {
        level INFO
        output file {$LOG_FILE} {
          roll_size 10MB
          roll_keep 10
        }
      }
    
      # Use the ACME HTTP-01 challenge to get a cert for the configured domain.
      tls {$EMAIL}
    
      # This setting may have compatibility issues with some browsers
      # (e.g., attachment downloading on Firefox). Try disabling this
      # if you encounter issues.
      encode gzip
    
      # The file size is set to 500MB to support the Vaultwarden (Bitwarden) Send feature.
      request_body {
           max_size 500MB
      }
      
      header {
           # Enable cross-site filter (XSS) and tell browser to block detected attacks
           X-XSS-Protection "1; mode=block"
           # Disallow the site to be rendered within a frame (clickjacking protection)
           X-Frame-Options "DENY"
           # Prevent search engines from indexing (optional)
           X-Robots-Tag "none"
           # Server name removing
           -Server
      }
    
      # Notifications redirected to the WebSocket server
      reverse_proxy /notifications/hub vaultwarden:3012
    
      # Proxy everything else to Rocket
      reverse_proxy vaultwarden:80 {
           # Send the true remote IP to Rocket, so that vaultwarden can put this in the
           # log, so that fail2ban can ban the correct IP.
           header_up X-Real-IP {remote_host}
      }
    }
    

    通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

    第 6 步 - 运行 Vaultwarden

    启动 Vaultwarden Docker 容器。

    $ docker compose up -d
    

    您可以使用以下命令检查容器的状态。

    $ docker ps
    

    您将获得类似的输出。

    CONTAINER ID   IMAGE                       COMMAND                  CREATED              STATUS                        PORTS                                                                                NAMES
    4ad23954f1d5   caddy:2                     "caddy run --config …"   About a minute ago   Up About a minute             0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 2019/tcp   caddy
    d55a037850bc   vaultwarden/server:latest   "/usr/bin/dumb-init …"   About a minute ago   Up About a minute (healthy)   80/tcp, 3012/tcp                                                                     vaultwarden
    

    第 7 步 - 将 Vaultwarden 与 Bitwarden 客户端一起使用

    在浏览器中打开 URL https://vaultwarden.example.com。

    第一步是创建一个帐户。单击创建帐户按钮继续。

    输入您的帐户详细信息,然后单击提交按钮继续。您将被重定向到登录页面。输入您的帐户详细信息以登录。

    您需要通过验证电子邮件来解锁帐户的全部功能。单击发送电子邮件按钮发送验证邮件。

    您将收到以下邮件。单击链接以验证您的电子邮件地址。

    现在我们已经准备好 Vaultwarden 帐户,是时候将它用于 Bitwarden 客户端了。对于我们的教程,我们使用的是 Chrome 扩展程序。通过从 Bitwardens 网站获取它来安装它。

    单击扩展图标以显示 Vaultwarden 登录屏幕。

    单击弹出窗口左上角的齿轮图标以打开高级设置页面。填写 https://vaultwarden.example.com 作为服务器 URL。

    单击保存按钮应用设置。使用您的 Vaultwarden 凭据登录以登录应用程序。

    登录后,您将进入应用程序页面并可以开始使用 Bitwarden。

    第 8 步 - 备份 Vaultwarden

    Vaultwarden 将其数据存储在 SQLite 数据库中。一种方法是简单地从 /vw-data 文件夹中复制 .sqlite3 文件。但这不是推荐的解决方案,因为由于 Vaultwarden 运行,数据库不会处于一致状态。为了以可靠的方式备份,我们将使用 SQLite 备份命令。

    安装 sqlite3 包。

    $ sudo apt install sqlite3
    

    为备份创建一个目录。

    $ mkdir ~/vw-backups
    

    删除组和其他用户的读、写和执行权限。

    $ chmod go-rwx ~/vw-backups
    

    创建 Vaultwarden 备份服务文件并打开它进行编辑。

    $ sudo nano /etc/systemd/system/vaultwarden-backup.service
    

    将以下代码粘贴到其中。

    [Unit]
    Description=backup the vaultwarden sqlite database
    
    [Service]
    Type=oneshot
    WorkingDirectory=/home/<username>/vw-backups
    ExecStart=/usr/bin/env bash -c 'sqlite3 /home/<username>/vaultwarden/vw-data/db.sqlite3 ".backup backup-$(date -Is | tr : _).sqlite3"'
    ExecStart=/usr/bin/find . -type f -mtime +30 -name 'backup*' -delete
    

    通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

    启动服务以测试服务并进行备份。

    $  sudo systemctl start vaultwarden-backup.service
    

    检查备份文件是否存在。

    $ ls -l ~/vw-backups
    

    您应该看到备份文件的列表。

    total 192
    -rw-r--r-- 1 root root 196608 Jul 31 17:25 backup-2022-07-31T17_25_04+00_00.sqlite3
    

    要为备份创建定期计划,请创建并打开 systemd 计时器单元文件。您需要确保文件名与服务的文件名匹配。

    $ sudo nano /etc/systemd/system/vaultwarden-backup.timer
    

    将以下代码粘贴到其中。

    [Unit]
    Description=schedule vaultwarden backups
    
    [Timer]
    OnCalendar=04:00
    Persistent=true
    
    [Install]
    WantedBy=multi-user.target
    

    通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。这将安排备份在每天凌晨 4 点进行。

    启动并启用计时器单元服务。

    $ sudo systemctl enable vaultwarden-backup.timer
    $ sudo systemctl start vaultwarden-backup.timer
    

    检查定时器服务的状态。

    $  systemctl status vaultwarden-backup.timer
    ? vaultwarden-backup.timer - schedule vaultwarden backups
         Loaded: loaded (/etc/systemd/system/vaultwarden-backup.timer; enabled; vendor preset: enabled)
         Active: active (waiting) since Sun 2022-07-31 17:27:03 UTC; 7s ago
        Trigger: Mon 2022-08-01 04:00:00 UTC; 10h left
       Triggers: ? vaultwarden-backup.service
    
    Jul 31 17:27:03 vaultwarden systemd[1]: Started schedule vaultwarden backups.
    

    这只是备份数据。您应该确保定期将数据库文件备份到异地或本地系统。要备份剩余的内容,您可以通过复制 ~/vaultwarden/vw-data 文件夹下的所有内容来实现。在剩下的东西中,attachments 目录、config.json 文件和 rsa_key* 文件必须备份。 sends 和 icon_cache 目录是可选的,如果它们足够大并且您需要它们,则应进行备份。它们是严格可选的。

    第 9 步 - 恢复 Vaultwarden

    要恢复 Vaultwarden 数据,请确保容器已停止。您可以用其备份版本替换数据目录下的所有内容。恢复 SQLite 备份时,请确保删除现有的 db.sqlite3-wal 文件以避免损坏。

    第 10 步 - 更新 Vaultwarden

    升级 Vaultwarden 是一个简单的步骤。切换到 Vaultwardens Docker 组合目录。

    $ cd ~/vaultwarden
    

    接下来,停止并移除现有容器。不过,您的数据将被保留。

    $ docker compose down --remove-orphans
    

    拉取最新版本的 Gitlab docker 镜像。

    $ docker compose pull
    

    再次启动容器。

    $ docker compose up -d
    

    您的 Vaultwarden 安装已更新并重新启动。

    结论

    我们关于在 Ubuntu 22.04 服务器上安装和配置 Vaultwarden 的教程到此结束。如果您有任何问题,请在下面的评论中发表。

©2015-2025 艾丽卡 support@alaica.com