安装

docker pull vaultwarden/server:latest

docker run -d --name vaultwarden \
    -v /vw-data/:/data/ \
    --restart=always \
    -p 10008:80 \
    -p 3012:3012 \
    -e WEBSOCKET_ENABLED=true \
    -e SIGNUPS_ALLOWED=false \
    -e DOMAIN=https://warden.93220447.xyz/ \
    -e SIGNUPS_ALLOWED=false \
       vaultwarden/server:latest

DOMAIN可以使用二级目录

反代

nginx配置文件,也可以使用cf的origin rule 反代,这里不做演示

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 1024;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    gzip on;

#    access_log /root/nginx.log;

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name warden.93220447.xyz;

    ssl_certificate     /root/ca/ca.cert;   # 你的域名证书路径
    ssl_certificate_key /root/ca/private.key; # 你的域名私钥路径

    underscores_in_headers on;
    gzip on; # 开启gzip压缩
    gzip_min_length 1k; # 设置对数据启用压缩的最少字节数
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 6; # 设置数据的压缩等级,等级为1-9,压缩比从小到大
    gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; # 设置需要压缩的数据格式
    gzip_vary on;

   
        location / {
            proxy_pass http://127.0.0.1:10008;
            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://127.0.0.1:3012;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    
}


    server {
        listen 80;
        listen [::]:80;
        location /.well-known/ {
               root /var/www/html;
            }
        location / {
                rewrite ^(.*)$ https://$host$1 permanent;
            }
    }
}

若使用二级目录需要修改location为 /vault/

vaultwarden配置备份

#!/bin/bash



filename="vaultwarden-$(date +%F).tar.gz"
source_dir="/vw-data"
temp_dir="/tmp/bitwarden_backup"

# 复制目标文件夹到临时文件夹
cp -r "$source_dir" "$temp_dir"

# 打包临时文件夹
tar czf "$filename" -C "$temp_dir" .

# 上传文件
webdav_username="webdav_username"
webdav_password="webdav_password"
webdav_url="https://host/dav/warden-backup/"

telegram_bot_token="botID:xxx"
telegram_chat_id="telegram_chat_id"

response=$(curl -u "$webdav_username:$webdav_password" -T "$filename" -s -w "%{http_code}" "$webdav_url")




sleep 2
echo "curl HTTP状态码:$response"

if [[ $response == 201 || $response == 204 ]]; then
  # 发送Telegram通知
  message="Bitwarden备份已上传成功!文件名:$filename"
  curl -s -X POST "https://tg.xavi.eu.org/bot$telegram_bot_token/sendMessage" -d "chat_id=$telegram_chat_id&text=$message"
  # 删除备份文件
  rm "$filename"
else
  # 上传失败,输出错误信息
  echo "上传失败,HTTP状态码:$response"
fi




ex_date=$(date -d "30 days ago" +%F)
ex_filename="vaultwarden-$ex_date.tar.gz"

curl -X DELETE -u "$webdav_username:$webdav_password" -s -o /dev/null -w "%{http_code}" "$webdav_url$ex_filename"




# 删除临时文件夹和打包文件
rm -rf "$temp_dir" "$filename"