使用 Vaultwarden 构建自己的多平台密码管理工具
security, servers, docker
security, servers, docker
适用于:Ubuntu 22.04、已有 Nginx + Cloudflare、需要多端同步密码管理,并希望服务尽量运行在 2G 内存级别的 VPS 上。
整体访问链路:
用户
↓
Cloudflare(HTTPS)
↓
Nginx(80/443)
↓
127.0.0.1:8088
↓
Docker 容器(Vaultwarden)
可以先配置一个 A 记录域名,例如 vault.<你的域名>.com。

建议在 Cloudflare 中开启始终使用 HTTPS。

然后创建源服务器证书。主机名可以配置为 *.<你的域名>.com,也可以单独配置为 vault.<你的域名>.com。注意保存密钥对,源证书和私钥都需要保存在本地。

sudo mkdir -p /opt/vaultwarden
cd /opt/vaultwarden
compose.yml:services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com"
SIGNUPS_ALLOWED: "true"
INVITATIONS_ALLOWED: "false"
ADMIN_TOKEN: "先随便填,后面会改为安全格式"
TZ: "Asia/Shanghai"
volumes:
- ./vw-data:/data
ports:
- "127.0.0.1:8088:80"
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
sudo docker compose up -d
sudo docker compose logs -f
curl http://127.0.0.1:8088
vim /etc/nginx/sites-available/vaultwarden.conf
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
server_name vault.example.com;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
server_name vault.example.com;
ssl_certificate /etc/nginx/ssl/vault.example.com/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/vault.example.com/privkey.pem;
client_max_body_size 128M;
location / {
proxy_pass http://127.0.0.1:8088;
proxy_http_version 1.1;
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 https;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
mkdir -p /etc/nginx/ssl/vault.example.com
vim /etc/nginx/ssl/vault.example.com/fullchain.pem
vim /etc/nginx/ssl/vault.example.com/privkey.pem
sudo ln -s /etc/nginx/sites-available/vaultwarden.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
https://vault.example.comhttps://vault.example.com/#/registerSIGNUPS_ALLOWED: "false"
sudo docker compose up -d
sudo docker compose logs -f
https://vault.example.com/admin 打开控制面板。sudo docker exec -it vaultwarden /vaultwarden hash
$argon2id$v=19$m=65540,t=3,p=4$...
compose.yml。注意所有 $ 都要改成 $$,并且最好使用单引号:ADMIN_TOKEN: '$$argon2id$$v=19$$m=65540,t=3,p=4$$...'
sudo docker compose up -d
在 Chrome 中安装 Bitwarden 插件。先不要直接登录,选择最下方的自托管入口,先把服务地址改成自己的 Vaultwarden 域名,然后再登录自己注册的账号。
完成后,就可以在浏览器端开始使用自己的多平台密码管理工具。


手机端同样可以下载 Bitwarden App 使用,服务器地址也需要改成自己的自托管地址。
你现在已经拥有一个完全自建的 Bitwarden 密码管理系统。后续如果继续优化,可以优先考虑这几件事:
ADMIN_TOKEN 的 Argon2 哈希和源站证书私钥。vw-data 数据目录。日志还会继续,欢迎常来。
返回首页