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 提供支持
在本页
  • 创建 Quadlet(适用于 Podman 4.4+)
  • 通过环境文件配置
  • 创建 podman Quadlet
  • 自动更新
  • 创建 systemd 服务文件(适用于老版本的 Podman)
  • 每次重启时新建容器
  • 故障排除
  • 调试 systemd 服务文件
  1. 容器镜像的使用

5.使用 Podman

上一页4.使用 Docker Compose下一页部署

最后更新于1个月前

对应的

是替代 Docker 的无守护程序,它与大部分 Docker 容器兼容。

创建 Quadlet(适用于 Podman 4.4+)

从版本 4.4 开始,Podman 使用 ,如果您使用以前的 generate systemd 方法,则会显示一个警告。

额外的好处是此方法将使容器保持更新。

通过环境文件配置

在环境文件中进行配置可能会更容易并且不易出错。

注意:此文件包含机密,请确保只有 root 拥有访问权限!

sudo install -o0 -g0 -m600 /dev/null /etc/vaultwarden.env
sudo vi /etc/vaultwarden.env
# Contents of /etc/vaultwarden.env
ROCKET_PORT=8080

# DISABLE_ADMIN_TOKEN=true
# ADMIN_TOKEN=$argon2id$...

# LOG_LEVEL=debug

创建 podman Quadlet

# Content of /usr/share/containers/systemd/vaultwarden.container
[Unit]
Description=Vaultwarden container
After=network-online.target

[Container]
AutoUpdate=registry
Image=ghcr.io/dani-garcia/vaultwarden:latest
Exec=/start.sh
EnvironmentFile=/etc/vaultwarden.env
Volume=/vw-data/:/data/
PublishPort=8080:8080

[Install]
WantedBy=default.target

编辑 quadlet 后,运行 systemctl daemon-reload 以创建或更新 systemd 单元。您可以使用常规的 systemctl 命令控制此容器,例如 systemctl start vaultwarden.service 。

自动更新

sudo podman auto-update

或者,您可以启用定时器,它会每天自动更新(默认情况。也可以编辑):

sudo systemctl enable podman-auto-update.timer

创建 systemd 服务文件(适用于老版本的 Podman)

$ podman run -d --name vaultwarden -v /vw-data/:/data/:Z -e ROCKET_PORT=8080 -p 8080:8080 vaultwarden/server:latest
54502f309f3092d32b4c496ef3d099b270b2af7b5464e7cb4887bc16a4d38597
$ podman generate systemd --name vaultwarden
# container-foo.service
# autogenerated by Podman 1.6.2
# Tue Nov 19 15:49:15 CET 2019

[Unit]
Description=Podman container-foo.service
Documentation=man:podman-generate-systemd(1)

[Service]
Restart=on-failure
ExecStart=/usr/bin/podman start vaultwarden
ExecStop=/usr/bin/podman stop -t 10 vaultwarden
KillMode=none
Type=forking
PIDFile=/run/user/1000/overlay-containers/54502f309f3092d32b4c496ef3d099b270b2af7b5464e7cb4887bc16a4d38597/userdata/conmon.pid

[Install]
WantedBy=multi-user.target default.target

您可以提供 --files 标志告诉 podman 将 systemd 服务放到某个文件中,或使用 podman generate systemd --name vaultwarden > /etc/systemd/system/container-vaultwarden.service。这样,我们就可以像任何正常的服务文件一样启用和启动容器了。

$ systemctl --user enable /etc/systemd/system/container-vaultwarden.service
$ systemctl --user start container-vaultwarden.service

每次重启时新建容器

如果我们希望每次服务启动时都创建一个新的容器,可以使用 podman generate systemd --new 命令生成一个重新创建容器的服务文件:

$ podman generate systemd --new --name vaultwarden

如果您使用的是旧版 Podman,则可以编辑服务文件以包含如下内容:

[Unit]
Description=Podman container-vaultwarden.service

[Service]
Restart=on-failure
ExecStartPre=/usr/bin/rm -f /%t/%n-pid /%t/%n-cid
ExecStart=/usr/bin/podman run --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid --env-file=/home/spytec/Vaultwarden/vaultwarden.conf -d -p 8080:8080 -v /home/spytec/Vaultwarden/vw-data:/data/:Z vaultwarden/server:latest
ExecStop=/usr/bin/podman stop -t "15" --cidfile /%t/%n-cid
ExecStop=/usr/bin/podman rm -f --cidfile /%t/%n-cid
KillMode=none
Type=forking
PIDFile=/%t/%n-pid

[Install]
WantedBy=multi-user.target default.target

环境文件 vaultwarden.conf 可以包含您需要的容器的所有环境值,比如:

ROCKET_PORT=8080

故障排除

调试 systemd 服务文件

如果主机出现故障或容器崩溃,则 systemd 服务文件应自动停止现有容器并将其重新启动。可以通过 journalctl --user -u container-vaultwarden -t 100 来定位错误。

在大多数情况下,我们可以通过简单地增加服务文件中的 podman 命令的超时时间来解决我们看到的错误。

配置看起来像 systemd 的,但我们配置的是容器,而不是单元。请参阅所有 [Container] 指令的。

可自动执行更新过程:

由于 Podman 的无守护程序架构,它比 Docker 更容易在 systemd 中运行。它带有一个便捷的 ,该命令可以生成 systemd 文件。,还有。

如果您希望此容器拥有特定的名称,则需要添加 ExecStartPre=/usr/bin/podman rm -i -f vaultwarden,如果进程未被正确清理的话。注意,此方式当前无法与具有 User= 选项的用户一起正常工作(见 )。

官方页面地址
Podman
quadlets
文档
自动更新
generate syetemd 命令
这一篇不错的文章详细介绍了它
这篇文章也详细介绍了一些最新的更新
https://github.com/containers/podman/issues/5572