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 提供支持
在本页
  • 从 SQLite 迁移到 PostgreSQL
  • 从 MySQL 迁移到 PostgreSQL
  1. 配置
  2. 数据库

2.使用 PostgreSQL 后端

上一页1.使用 MariaDB (MySQL) 后端下一页3.在未启用 WAL 的情况下运行

最后更新于4个月前

对应的

要使用 PostgreSQ 后端,您可以使用,也可以构建您自己的 的二进制。

要运行二进制或容器,请确保已设置 DATABASE_URL 环境变量(即 DATABASE_URL='postgresql://<user>:<password>@postgresql/vaultwarden')。

字符串连接语法:

DATABASE_URL=postgresql://[[user]:[password]@]host[:port][/database]

docker 运行环境变量的一个示例:-e 'DATABASE_URL=postgresql://user_name:user_password@db_host:5432/vaultwarden'。

如果您需要设置额外的连接参数,请注意 DATABASE_URL 的值最终会被 libpq 解析,因此您可以使用 libpq 中所列出的任何参数。您可以将连接参数添加到 DATABASE_URL 中或通过其相应的 PG* 环境变量指定它。如果在 Docker 下运行,请记住提供的任何路径都需要从 Docker 容器的角度来看,而不是 Docker 主机。

如果您要使用自定义架构/搜索路径,则需要使用以下连接字符串(注意 URL 编码的字符,比如 %20 表示空格,%3D 表示 = 符号):

DATABASE_URL=postgresql://user_name:user_password@db_host:5432/vaultwarden?application_name=vaultwarden&options=-c%20search_path%3Ddb_schema

如果您的密码包含特殊字符,则需要使用百分号编码。

!
#
$
%
&
'
(
)
*
+
,
/
:
;
=
?
@
[
]

%21

%23

%24

%25

%26

%27

%28

%29

%2A

%2B

%2C

%2F

%3A

%3B

%3D

%3F

%40

%5B

%5D

完整的代码列表可以在 上找到。

从 SQLite 迁移到 PostgreSQL

从 SQLite 迁移到 PostgreSQL 或 MySQL的方法比较简单,但请注意,使用此方法风险自负,并且强烈建议备份您的安装和数据!这不受支持,也没有经过强有力的测试。

1、为 Vaultwarden 创建一个新的(空)数据库:

CREATE DATABASE vaultwarden;

2、创建一个新的数据库用户并授予数据库权限:

CREATE USER vaultwarden WITH ENCRYPTED PASSWORD 'yourpassword';
GRANT CONNECT ON DATABASE vaultwarden TO vaultwarden;
ALTER SCHEMA public OWNER TO vaultwarden;

4、停止 Vaultwarden。

6、使用如下内容创建 vaultwarden.load 文件:

load database
     from sqlite:///where/you/keep/your/vaultwarden/db.sqlite3 
     into postgresql://yourpgsqluser:yourpgsqlpassword@yourpgsqlserver:yourpgsqlport/yourpgsqldatabase
     WITH data only, include no drop, reset sequences
     EXCLUDING TABLE NAMES LIKE '__diesel_schema_migrations'
     ALTER SCHEMA 'vaultwarden' RENAME TO 'public'
;

7、运行 pgloader vaultwarden.load 命令,您可能会看到一些警告,(不用理会)迁移会成功完成。

8、重新启动 Vaultwarden。

从 MySQL 迁移到 PostgreSQL

使用 MariaDB 10.11.9、PostgreSQL 15.8-1 和 Vaultwarden 1.32.0 测试

请注意,使用此方法风险自负,并且强烈建议备份您的安装和数据!这不受支持,也没有经过强有力的测试。

1、为 Vaultwarden 创建一个新的(空)数据库:

CREATE DATABASE vaultwarden;

2、创建一个新的数据库用户并授予数据库权限:

CREATE USER vaultwarden WITH ENCRYPTED PASSWORD 'yourpassword';
GRANT ALL ON DATABASE vaultwarden TO vaultwarden;
GRANT all privileges ON database vaultwarden TO vaultwarden;

4、停止 Vaultwarden。

6、使用如下内容创建 vaultwarden.load 文件:

load database
     from mysql://yourmysqluser:yourmysqlpassword@yourmysqlserver:yourmysqlport/yourmysqldatabase 
     into postgresql://yourpgsqluser:yourpgsqlpassword@yourpgsqlserver:yourpgsqlport/yourpgsqldatabase
     WITH data only
     EXCLUDING TABLE NAMES MATCHING '__diesel_schema_migrations'
     ALTER SCHEMA 'vaultwarden' RENAME TO 'public'
;

如果您的连接需要 SSL,可以选择将 ?sslmode=require 添加到 PostgreSQL 连接字符串中。

7、运行 pgloader vaultwarden.load 命令,然后您可能会看到一些警告,(不用理会)迁移会成功完成。如果有错误,很可能是您的 pgloader 版本过时了!

8、重新启动 Vaultwarden。

3、配置 Vaultwarden 并启动它,以便 可以运行迁移并设置正确的模式。除此之外不要做别的。

5、安装 。

3、配置 Vaultwarden 并启动它,以便 可以运行迁移并设置正确的模式。除此之外不要做别的。

5、安装 。确保您使用的是最新版本的 pgloader,官方的 Ubuntu 存储库有一个过时的版本,它不能与新版本的 PostgreSQL 一起正常工作。最新版本可以从 获取。

diesel
pgloader
diesel
pgloader
PostgreSQL Apt 存储库
官方页面地址
官方 Docker 镜像
文档
Wikipedia 的百分号编码页面
启用了 PostgreSQL