相关链接

Bitwarden是有商业化服务的,理论上你可以付费享用官方提供的密码托管服务;VaultWarden是基于Bitwarden可自托管特性,开源的一个密码托管服务,在后续的手机APP、浏览器拓展里,均需访问自托管站点来链接到自建Vaultwarden密码库。

Docker-Compose配置

# 进入用户目录,新建应用目录
cd ~
mkdir bitwarden
 
# 编辑compose文件(参考下文)
nano ~/bitwarden/docker-compose.yml

文件内容参考:

version: '3.9'
services:
    srprolin:
        image: 'vaultwarden/server:1.35.4'
        ports:
            - '3012:3012'
            - '8080:80'
        restart: unless-stopped
        volumes:
            - '/vw-data/:/data/'
        container_name: vaultwarden
        environment:
            - WEBSOCKET_ENABLED=true

你可以提前使用docker pull来拉取镜像。

随后,执行启动命令即可跑通该容器:

# 进入应用目录
cd ~/bitwarden
 
# 启动容器
sudo docker compose up -d

Nginx+Certbot配置

# 安装certbot
apt-get install -y certbot
apt-get install -y python3-certbot-nginx
 
# 申请Let's Encrypt的免费SSL证书
# 将<your-domain>改为已在DNS处解析过的域名
sudo certbot certonly --nginx -d <your-domain>
 
# 安装启动Nginx
apt-get update && apt-get install -y nginx
systemctl enable nginx && systemctl start nginx
 
# 编辑配置文件(参考下文)
nano /etc/nginx/sites-available/default
 
# 启用软链接
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
 
# 测试文件格式
nginx -t
 
# 重载Nginx服务
systemctl reload nginx

配置文件内容参考:

# ==================== Bitwarden - HTTP ====================
server {
    listen 80;
    server_name <your-domain>;
 
    # HTTP自动跳转HTTPS
    return 301 https://$host$request_uri;
}
 
# ==================== Bitwarden - HTTPS ====================
server {
    listen 443 ssl;
    server_name <your-domain>;
 
    ssl_certificate /etc/letsencrypt/live/<your-domain>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<your-domain>/privkey.pem;
 
    location /notifications/hub {
        proxy_pass http://172.17.0.1:3012;
        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;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400s;
        proxy_send_timeout 86400s;
    }
 
    location / {
        proxy_pass http://172.17.0.1:8080;
        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;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

结语

  • 上述方法建立在长期使用,且有域名的前提下,此方法不需要开放云服务器厂商处的端口。
  • 当然你可以使用宝塔、1Panel等服务器面板管理应用,一键安装配置Bitwarden
  • 如果你只是测试,可以不进行Nginx配置,只在docker容器跑通后,开放云服务器厂商的8080TCP端口,即可通过http://ip:8080访问vaultwarden后台。