Vaultwarden 是 Bitwarden 的轻量 Rust 实现,资源占用极低,单容器即可运行。
配置
Vaultwarden 默认用 SQLite,个人使用足够;生产环境建议换 PostgreSQL。
方案一:SQLite(单容器)
个人用 SQLite 最简单,一个 .container 文件搞定:
[Container]
Image=docker.io/vaultwarden/server:latest
PublishPort=8080:80
Volume=/path/to/vw-data:/data
Environment=ADMIN_TOKEN=123
AutoUpdate=registry
[Service]
Restart=always
[Install]
WantedBy=default.target
-
/path/to/替换为你自己的值。 -
把
8080替换为你想暴露的端口 -
把
123替换为一个复杂文本
方案二:PostgreSQL(Pod)
生产环境推荐 PostgreSQL。需要用 Pod 把 Vaultwarden 和数据库放在一起:
# vaultwarden.pod
[Pod]
PublishPort=8080:80
UserNS=keep-id
[Install]
WantedBy=default.target
# vaultwarden.container
[Unit]
Requires=vaultwarden-db.service
After=vaultwarden-db.service
[Container]
Image=docker.io/vaultwarden/server:latest
Pod=vaultwarden.pod
Volume=/path/to/vw-data:/data
Environment=DATABASE_URL=postgresql://vaultwarden:vaultwarden@127.0.0.1:5432/vaultwarden ADMIN_TOKEN=123
AutoUpdate=registry
Group=0
User=0
[Service]
Restart=always
[Install]
WantedBy=default.target
# vaultwarden-db.container
[Container]
Image=docker.io/library/postgres:17-alpine
Pod=vaultwarden.pod
Volume=/path/to/vw-pgdata:/var/lib/postgresql/data
Environment=POSTGRES_USER=vaultwarden POSTGRES_PASSWORD=vaultwarden POSTGRES_DB=vaultwarden
AutoUpdate=registry
[Service]
Restart=always
[Install]
WantedBy=default.target
-
/path/to/替换为你自己的值。 -
8080替换为你想暴露的端口 -
123替换为一个复杂文本
启动
-
保存上述文件到
~/.config/containers/systemd/ -
运行
systemctl --user daemon-reload -
启动容器
-
单容器运行
systemctl --user start vaultwarden -
Pod 运行
systemctl --user start vaultwarden-pod
- 【可选】启用自动更新:
systemctl --user enable --now podman-auto-update.timer
反代
Pod 暴露 8080 端口,用 Caddy 或 Nginx 反代到域名即可。记得开启 HTTPS,Vaultwarden 的客户端强制要求 HTTPS。
Caddy 示例:
vw.example.com {
reverse_proxy 127.0.0.1:8080
}
访问 vw.example.com/admin 输入设置的 ADMIN_TOKEN 登录管理页面。
2 个帖子 - 1 位参与者