Vaultwarden Wiki 中文版
⮐ Vaultwarden Wiki个人主页联系我
  • 关于
  • 首页
  • FAQ
    • 1.FAQ
    • 2.审计
    • 故障排除
      • 1.Bitwarden Android 故障排除
  • 容器镜像的使用
    • 1.容器镜像的选择
    • 2.启动容器
    • 3.更新 Vaultwarden 镜像
    • 4.使用 Docker Compose
    • 5.使用 Podman
  • 部署
    • 1.构建您自己的镜像
    • 2.构建二进制
    • 3.预构建二进制
    • 4.第三方包
    • 5.部署示例
    • 6.代理示例
    • 7.转储示例
    • HTTPS
      • 1.启用 HTTPS
      • 2.使用 Let's Encrypt 证书运行私有 Vaultwarden 实例
  • 配置
    • 1.配置概述
    • 2.禁用新用户注册
    • 3.禁用邀请
    • 4.启用管理页面
    • 5.禁用管理令牌
    • 6.启用 WebSocket 通知
    • 7.启用移动客户端推送通知
    • 8.启用 U2F 和 FIDO2 WebAuthn 身份验证
    • 9.启用 YubiKey OTP 身份验证
    • 10.更改持久性数据位置
    • 11.更改 API 请求大小限制
    • 12.更改 worker 数量
    • 13.SMTP 配置
    • 14.显示密码提示
    • 15.禁用或覆盖密码库接口托管
    • 16.日志记录
    • 17.设置为 systemd 服务
    • 18.从 LDAP 同步用户
    • 19.使用备用基本目录(子目录/子路径)
    • 20.其他配置
    • *使用 systemd docker 运行
    • 数据库
      • 1.使用 MariaDB (MySQL) 后端
      • 2.使用 PostgreSQL 后端
      • 3.在未启用 WAL 的情况下运行
      • 4.从 MariaDB (MySQL) 迁移到 SQLite
    • 安全
      • 1.强化指南
      • 2.Fail2ban 设置
      • 3.Docker Traefik ModSecurity 设置
    • 其他
      • 1.翻译电子邮件模板
      • 2.翻译管理页面
      • 3.自定义 Vaultwarden CSS
  • 备份
    • 1.通用(非 docker)
  • 其他
    • 1.从 Keepass 或 KeepassX 导入数据
    • 2.备份您的密码库
    • 3.与上游 API 实现的区别
    • 4.支持上游的发展
    • 5.使用 Cloudflare DNS 的 Caddy 2.x
    • 6.Git hooks
    • *使用非 root 用户运行 docker 容器
    • *使私有 CA 和自签名证书兼容 Chrome
    • *测试 SSO
由 GitBook 提供支持
在本页
  • 设置环境变量
  • 运行服务
  1. 配置

*使用 systemd docker 运行

上一页20.其他配置下一页数据库

最后更新于1个月前

对应的官方页面地址(Vaultwarden WiKi 已移除此页面)

这部分的内容允许您使用 systemd 来管理 Docker 容器的生命周期,若您喜欢的话。

首先,使用系统包管理器安装 systemd-docker 包。这是一个用于改进 docker 与 systemd 集成的封装器。

有关完整介绍和配置选项,请参阅 。

以 root 身份,使用您喜欢的编辑器用以下内容创建 /etc/systemd/system/vaultwarden.service 文件:

[Unit]
Description=Vaultwarden
After=docker.service
Requires=docker.service

[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker pull vaultwarden/server:latest
ExecStartPre=-/usr/bin/docker stop vaultwarden
ExecStartPre=-/usr/bin/docker rm vaultwarden
ExecStart=/usr/bin/docker run \
  -p 8080:80 \
  -p 8081:3012 \
  --env-file /opt/.vaultwarden.env \
  -v /opt/vw-data:/data/ \
  --rm --name vaultwardenvaultwarden/server:latest
ExecStopPost=-/usr/bin/docker rm vaultwarden
Restart=Always
RestartSec=30s
Type=notify
NotifyAccess=all

[Install]
WantedBy=multi-user.target

根据需要调整上述示例。特别要注意 -p 和 -v 选项,因为它们控制着容器和主机之间的端口和卷绑定。另外,请确保为您的配置提供一个 --env-file,或者直接通过 -e KEY=VALUE 输入您的所有配置。

对上述选项的解释:

  • TimeoutStartSec 的值 0:等待默认启动时间后,认为服务已经失败,将停止 systemd。此为必选项,因为 ExecStartPre 中的 docker pull 命令需要一段时间来完成。

  • ExecStartPre:在运行之前拉取 docker 标签。

  • ExecStopPost:删除容器(以确保我们下次可以重新启动)。我们这样做的原因是 systemd 监控的是 docker 服务而不是单个容器。因此,我们使用 unless-stopped 告诉 docker 服务重启容器。这基本上就像 --restart=Always,但不包括 docker 服务停止的时候(或者容器被挂起)。当 docker 服务停止时,这允许我们使用 Restart=Always 让 systemd 仅重启服务。

  • Type 的值 notify:告诉 systemd 从已准备就绪的服务中获取通知。

  • NotifyAccess 的值 all:是由 systemd-docker 请求的。

设置环境变量

可以通过两种方式在单元文件中直接指定环境变量:

  • 在 [Service] 块中使用 Environment 指令。

  • 使用 docker 的 -e 选项。此时,您可以省略上面示例中显示的 --env 选项。

要验证是否正确设置了环境变量,请检查 systemctl show vaultwarden.service 的输出中是否存在 Environment 行。

也可以在单元文件中使用 EnvironmentFile 指令将环境变量存储在单独的文件中。在这种情况下,请如上面示例中所示在 docker 命令行中设置 --env 选项,否则将不会处理环境文件。

systemd 可以获取以下格式的文件:

Key="Value"

但是,systemd 项目并没有规定该文件的存储位置。有关此文件的最佳存储位置,请查阅发行版文档。例如,基于 RedHat 的发行版通常将这些文件放在 /etc/sysconfig/ 中。

如果您不确定,只需使用 root 权限在 /etc/ 中创建一个文件即可,比如 /etc/vaultwarden.service.conf。

在您的单元文件中的 [Service] 块中添加一个 EnvironmentFile 指令,其值是上面创建的文件的完整路径。例如:

[Unit]
Description=Vaultwarden
After=docker.service
Requires=docker.service

[Service]
EnvironmentFile=/etc/vaultwarden.service.conf
TimeoutStartSec=0
-snip-

运行服务

完成上述安装和配置后,使用 sudo systemctl daemon-reload 命令重新加载 systemd 。然后,使用 sudo systemctl start vaultwarden 命令启动 Vaultwarden 服务。

要使服务跟随系统启动,请使用 sudo systemctl enable vaultwarden。

使用 systemctl status vaultwarden 来验证容器是否已经启动。

您可以在此中找到更多关于环境设置和语法的说明。

如果在启动服务时遇到 json: cannot unmarshal object into Go value of type string 错误,则应使用最新版本的 Go 来自己编译 systemd-docker 二进制,请参阅此。

Github 仓库
环境示例模版
话题