Skip to content

配置

  • 创建文件路径:mkdir -p /data/tools/bitwarden
  • 创建 docker-compose:vim /data/tools/bitwarden/docker-compose.yml写入下面内容
  • docker-compose
    • 文件映射在 /data/tools/bitwarden/vaultwarden
yaml
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    ports:
      - "6666:80"
      - "3012:3012"
    volumes:
      - /data/tools/bitwarden/:/data
      - /data/nginx/certs:/ssl:ro
    environment:
      - ADMIN_TOKEN=Y3x6DXZ82CKqksC54iP8
      - WEBSOCKET_ENABLED=true
      - PUSH_RELAY_URI=https://api.bitwarden.eu
      - PUSH_IDENTITY_URI=https://identity.bitwarden.eu
      - SIGNUPS_ALLOWED=false
      - ROOT_URL=https://www.camellia.ac.cn
      - DOMAIN=https://www.camellia.ac.cn  
      - TZ=Asia/Shanghai
    dns:  # 添加 DNS 配置
      - 8.8.8.8
      - 114.114.114.114
  • nginx
    • vim /etc/nginx/conf.d/www.camellia.ac.cn.conf写入一下内容
    • sudo nginx -t检查 nginx 配置语法
    • sudo nginx -s reload 重新加载nginx
    • 这里的 websocket 目的是实时同步,一段修改后,另一端立刻同步
cfg
# Bitwarden/Vaultwarden Configuration
# Domain: www.camellia.ac.cn
# Service: Vaultwarden (Password Manager)
# Backend: 127.0.0.1:6666

# HTTP to HTTPS redirect
server {
    listen 80;
    listen [::]:80;
    server_name www.camellia.ac.cn;
    return 301 https://$host$request_uri;
}

# HTTPS configuration
server {
    listen 443 ssl http2;
    server_name www.camellia.ac.cn;
    
    # SSL certificates
    ssl_certificate /data/nginx/certs/fullchain.pem;
    ssl_certificate_key /data/nginx/certs/camellia.ac.cn.key;
    
    # Main application - 处理所有常规请求
    location / {
        proxy_pass http://127.0.0.1:6666;
        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;
        
        # WebSocket 升级头
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    # WebSocket for notifications - 处理 WebSocket 连接
    location /notifications/hub {
        proxy_pass http://127.0.0.1:3012;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
    }
    
    # WebSocket 协商端点 - 必须代理到 HTTP 端口
    location /notifications/hub/negotiate {
        proxy_pass http://127.0.0.1:6666;
        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;
    }
}
  • 测试:
    • websocket
    bash
    curl -i -N \
    -H "Connection: Upgrade" \
    -H "Upgrade: websocket" \
    -H "Host: www.camellia.ac.cn" \
    -H "Origin: https://www.camellia.ac.cn" \
    https://www.camellia.ac.cn/notifications/hub

数据

默认数据是下面的,这个是刚启动状态,说明还没有任何数据

bash
[root@k8s-master tools]# ls -alh vaultwarden/
total 304K
drwxr-xr-x 6 root root 4.0K Feb  7 18:17 .
drwxr-xr-x 5 root root 4.0K Feb  7 18:17 ..
drwxr-xr-x 2 root root 4.0K Feb  7 18:17 attachments
-rw-r--r-- 1 root root 244K Feb  7 18:17 db.sqlite3
-rw-r--r-- 1 root root  32K Feb  7 18:17 db.sqlite3-shm
-rw-r--r-- 1 root root    0 Feb  7 18:17 db.sqlite3-wal
drwxr-xr-x 2 root root 4.0K Feb  7 18:17 icon_cache
-rw-r--r-- 1 root root 1.7K Feb  7 18:17 rsa_key.pem
drwxr-xr-x 2 root root 4.0K Feb  7 18:17 sends
drwxr-xr-x 2 root root 4.0K Feb  7 18:17 tmp

使用

  • 通过域域名/admin 可以访问管理页面,传入 docker-compose.yml 中的 ADMIN_TOKEN 即可

正在精进