手把手教你1panel部署 Vaultwarden搭配 MySQL反向代理超详细教程

2026-03-14 14:27:30 0点赞 0收藏 0评论

作为一款开源的密码管理工具,Bitwarden 的自建版 Vaultwarden 香到不行,既能实现密码统一管理,又能保证数据隐私,这篇就把从部署到配置 HTTPS、对接 MySQL、关闭注册的全套流程整理清楚,一步一步跟着做,新手也能搞定!

前期准备

  1. 服务器已部署 1Panel 面板(全程基于面板操作,更便捷)

  2. 已安装 OpenResty(用于反向代理 + HTTPS 配置)

  3. 阿里云服务器需提前准备好防火墙配置权限

  4. 域名已解析至服务器 IP

  5. 外网访问端口18800

一、面板安装 Vaultwarden(Bitwarden)

  1. 打开 1Panel 面板,进入应用商店,直接搜索bitwarden,找到对应应用进行安装

  2. 安装时端口保持默认,打开对应端口的外部访问权限,完成后先启动应用

手把手教你1panel部署 Vaultwarden搭配 MySQL反向代理超详细教程

二、OpenResty 配置反向代理 + HTTPS(关键!Bitwarden 必须 HTTPS 访问)

Vaultwarden 强制要求 HTTPS 访问,因此需要通过 OpenResty 配置反向代理,核心是启用 HTTPS、配置代理地址和对应端口,步骤如下:

  1. 进入 1Panel 的 OpenResty 管理界面,新建反向代理规则

  2. 启用 HTTPS,上传 SSL 证书(域名证书)

  3. 填写反向代理目标地址(Vaultwarden 的内网地址 + 端口)

  4. 配置完成后务必核对各项参数,避免配置错误

手把手教你1panel部署 Vaultwarden搭配 MySQL反向代理超详细教程手把手教你1panel部署 Vaultwarden搭配 MySQL反向代理超详细教程手把手教你1panel部署 Vaultwarden搭配 MySQL反向代理超详细教程手把手教你1panel部署 Vaultwarden搭配 MySQL反向代理超详细教程

三、阿里云防火墙放通端口

登录阿里云服务器控制台,进入安全组 / 防火墙配置,将18800端口的入站规则放通,保证外部能正常访问。

四、初步访问创建基础账号并生成 Admin_Token(管理员令牌)

  1. 通过配置好的 HTTPS 地址访问:https://域名:18800/先创建基础账号

  2. 生成加密的 Admin_Token(Vaultwarden 推荐用哈希值,避免明文暴露),执行 Docker 命令:

docker exec -it 1Panel-bitwarden-htem /vaultwarden hash

执行命令后按提示输入密码(至少 8 位),再次确认密码,系统会自动生成 Argon2id 格式的 Admin_Token 哈希值,

复制保存好这个值,后续会用到

示例生成结果:

ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$LNuRR3K0232FW68U36aFCNsLGB5dmn079GJLFI1M088$NGkD4RrnStvRidXfI71sb7sglCU/ov0oCgpyhWsXyJo'

💡 小贴士:Vaultwarden 推荐用哈希值作为环境变量,而非明文密码,避免在 Docker Compose 中暴露敏感信息。

五、编辑 Compose 配置,关闭注册 + 配置 MySQL + 添加 Admin_Token

这一步是核心配置,主要实现关闭公共注册对接 MySQL 数据库配置管理员令牌,操作如下:

  1. 回到 1Panel,进入应用商店 - 已安装,找到 bitwarden,点击参数 - 高级选项 - 编辑 compose

  2. 在environment节点下添加以下配置,按实际信息修改:

    • SIGNUPS_ALLOWED=false:关闭外部注册,仅管理员可添加用户

    • DATABASE_URL:MySQL 数据库连接地址,语法为mysql://[[user]:[password]@]host[:port][/database]

    • ADMIN_TOKEN:粘贴第四步生成的哈希值

  3. 默认 Vaultwarden 使用 SQLite 数据库,如需切换为 MySQL,可按以下步骤操作,全程在 1Panel 上完成,无需复杂命令:

    在 1Panel 的数据库管理界面,新建 MySQL 数据库(示例:库名 vaultwarden,用户名 vaultwarden,设置密码)

手把手教你1panel部署 Vaultwarden搭配 MySQL反向代理超详细教程

4. 完整的 Compose 配置参考(按需修改变量):

networks: 1panel-network:   external: true services: bitwarden:   container_name: ${CONTAINER_NAME}   deploy:     resources:       limits:         cpus: ${CPUS}         memory: ${MEMORY_LIMIT}   environment:     - SIGNUPS_ALLOWED=false     - DATABASE_URL=mysql://vaultwarden:数据库密码@host:3306/vaultwarden     - ADMIN_TOKEN=第四步生成的哈希值   image: vaultwarden/server:1.35.4-alpine   labels:     createdBy: Apps   networks:     - 1panel-network   ports:     - ${HOST_IP}:${PANEL_APP_PORT_HTTP}:80   restart: always   volumes:     - ./data:/data

这里DATABASE_URL=mysql://vaultwarden:数据库密码@host:3306/vaultwarden ,如果mysql也是通过应用商店部署的或者是docker部署的,这里需填写msyql的docker名

配置完成后保存,应用商店重建 Bitwarden应用,使配置生效。

六、对接 MySQL 数据库(非必须,默认 SQLite,追求性能可换)

💡 参考文档:

https://geekdaxue.co/read/Vaultwarden-Wiki-CN/docs-Using-the-MariaDB-(MySQL-Backend.md

数据迁移(SQLite→MySQL)

  1. 服务器安装 sqlite3 命令(Linux 系统):yum install sqlite3 -y/apt install sqlite3 -y

  2. 进入 Vaultwarden 的数据目录,导出 SQLite 数据(过滤无用表,仅保留 INSERT 语句):

sqlite3 db.sqlite3 .dump | grep "^INSERT INTO" | grep -v "__diesel_schema_migrations" > sqlitedump.sql ; echo -ne "SET FOREIGN_KEY_CHECKS=0;n$(cat sqlitedump.sql)" > mysqldump.sql

  1. 将导出的数据导入 MySQL 数据库:

mysql --force --password --user=vaultwarden --database=vaultwarden -h 127.0.0.1 < mysqldump.sql

  1. 导入完成后,启动 Vaultwarden,即可正常使用 MySQL 数据库

七、管理员界面配置 SMTP(邮件服务)

  1. 通过管理员地址访问:https://你的域名:18800/admin,输入第四步设置的明文密码(非哈希值)登录

  2. 进入管理员界面后,找到 SMTP 配置项,填写邮件服务器信息(SMTP 地址、端口、账号、密码、发件人等)

手把手教你1panel部署 Vaultwarden搭配 MySQL反向代理超详细教程

3. 配置完成后测试邮件发送,确保密码找回、邀请用户等功能正常。

最终验证

  1. 访问https://你的域名:18800/,可正常登录已创建的账号

  2. 尝试访问注册页面,已无法进行公共注册

  3. 管理员界面可正常操作,SMTP 测试邮件发送成功

  4. 查看 MySQL 数据库,已有对应的数据表和数据,说明迁移成功

总结

这套部署流程实现了 Vaultwarden 的HTTPS 安全访问MySQL 数据库对接关闭公共注册管理员权限控制SMTP 邮件配置,基于 1Panel 面板操作大幅降低了难度,适合个人和小型团队自建密码管理服务。核心注意点就是HTTPS 的强制要求Admin_Token 的加密配置,避免敏感信息暴露,按步骤操作基本不会踩坑!

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章

jack55555

Ta还没有介绍自己

关注 打赏
最新文章 热门文章
0
扫一下,分享更方便,购买更轻松