首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Docker部署Vaultwarden

Docker部署Vaultwarden

原创
作者头像
潘晓可
发布2025-07-11 11:10:27
发布2025-07-11 11:10:27
3260
举报
文章被收录于专栏:服务器和容器服务器和容器
Bitwardden alternative - Vaultwarden self hosted
Bitwardden alternative - Vaultwarden self hosted

本文来源于 - > 我的博客

1. 关于Vaultwarden

Bitwarden是一个Vault软件,将你所有的信息都存储在一个加密的保险库里。它不仅可以可以管理密码,可以添加笔记和文件。这些都是加密存储的,通过一个主密码来解锁保险库。它有免费的版本,可以在它官网上注册,并且有苹果和安卓的客户端。

Bitwarden也是可以私有部署,但是它的组件非常多,部署极为复杂,并且非常占用资源。因此,Vaultwarden出现了。它是一个Bitwarden的替代方案,体验和Bitwarden几乎是一样的,兼容Bitwarden的客户端。它的docker镜像只有一个,部署难度很低,且资源占用很低,2核2G的轻量服务器可以流畅运行。Github项目地址

2. 部署Vaultwarden

最简单的方式就是使用Docker部署。本身作为一个要求安全性的软件,官方推荐部署在一个代理后面,代理负责处理HTTPS的流量。

2.1 Vaultwarden的容器配置

  • 因为部署在Nginx后面,所以不需要发布端口到服务器上,暴露端口80作为提示作用。
  • 挂载持久存储/data,这里面有Vaultwarden的数据库文件,默认是SQLite。
  • 首次运行要允许注册 SIGNUPS_ALLOWED=true,也就是注册第一个admin账号。在需要的账号的注册都注册完之后,改成false关闭新用户注册。
  • 首次运行添加ADMIN_TOKEN来管理Admin界面来设置整体应用。设置完之后,将这一行注释掉。
  • network是让Vaultwarden只可以和Nginx进行交互。我是有一个单独的Nginx来代理很多的应用。每次用新应用就直接attach新的容器到Nginx的网络里。但是可以将Nginx和Vaultwarden放到一个Docker Compose文件里。这样也不需要额外的Docker网络。
代码语言:yaml
复制
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    expose:
      - 80
    volumes:
      - ./vw-data:/data
    environment:
      - SIGNUPS_ALLOWED=true
      - WEBSOCKET_ENABLED=true
      - ADMIN_TOKEN='sA3uL1kwrhXEZOu7BIAopdvLL3P99g4qxcN62IKI62HgpN/BQ+ilVjJc6G+oRpaZ'
      - DOMAIN=https://password.example.com
    networks:
      - nginx-reverse-proxy

networks:
  nginx-reverse-proxy:
    external: true

2.2 Nginx的容器配置

  • Nginx监听80和443端口。
  • 数据卷挂载:
    • Nginx的配置文件
    • Nginx的log文件
    • SSL的证书
    • 本地的时间
  • Nginx网络只用于转发流量到不通的应用
  • Internet网络用于Nginx和Internet流量的交互
代码语言:yaml
复制
services:
  nginx:
    image: nginx:latest
    container_name: nginx-reverse-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d:ro
      - ./log:/var/log/nginx
      - /etc/letsencrypt/live/zenseek.site/fullchain.pem:/etc/nginx/certs/fullchain.pem:ro
      - /etc/letsencrypt/live/zenseek.site/privkey.pem:/etc/nginx/certs/privkey.pem:ro
      - /etc/localtime:/etc/localtime:ro
    networks:
      - nginx-reverse-proxy
      - internet
    restart: always

networks:
  nginx-reverse-proxy:
    external: true
  internet:
    external: true

2.3 应用的Nginx配置文件

  • 如果有域名就监听域名,没有可以使用IP加其他端口。
  • 流量转发到http://vaultwarden:80,因为容器之间通信,只需要HTTP就可以了。而这个容器名可以在docker network里看到它的名字和IP。在YAML文件里设置了container_name,那就不会错了。
代码语言:nginx
复制
server {
    listen 443 ssl;
    server_name password.example.com;

    # Add this line to increase the limit
    client_max_body_size 100M;

    ssl_certificate /etc/nginx/certs/fullchain.pem;
    ssl_certificate_key /etc/nginx/certs/privkey.pem;

    # SSL/TLS Security Settings
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers HIGH:!aNULL:!MD5;

    # Enable HSTS
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    location / {
        proxy_pass http://vaultwarden:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /notifications/hub {
        proxy_pass http://vaultwarden:3012;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location /notifications/hub/negotiate {
        proxy_pass http://vaultwarden:80;
    }
}

在Nginx的容器内查看新的配置文件是否正确并重启Nginx。

代码语言:bash
复制
root@b2f567d4689b:/# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@b2f567d4689b:/# nginx -s reload

3. 访问并设置Vaultwarden

访问地址就是https://password.example.com. Nginx会终结HTTPS,将HTTP流量转到Vaultwarden容器。在允许注册的情况,页面会让你输入邮箱地址和用户名,然后下一步到设置主密码。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 关于Vaultwarden
  • 2. 部署Vaultwarden
    • 2.1 Vaultwarden的容器配置
    • 2.2 Nginx的容器配置
    • 2.3 应用的Nginx配置文件
  • 3. 访问并设置Vaultwarden
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档