docker-compose+nginx+vaultwarden

/ 0评 / 0

与其他共用一个域名,使用子目录:你的域名/sub_path

第一步、编写docker-compose.yml

mkdir vaultwarder
vim docker-compose.yml
version: "3"

services:
  vaultwarden:
    image: vaultwarden/server
    container_name: vaultwarden
    restart: always
    ports:
        - "127.0.0.1:8081:80"            #暴露的端口:(宿主机端口:容器端口)
        - "127.0.0.1:3012:3012"
    volumes:
      - ./vw-data:/data                  #挂载数据和日志文件
    environment:           
      WEBSOCKET_ENABLED: "true"          #websocket通知
      SIGNUPS_ALLOWED: "true"            #是否允许注册,自己注册完,回来改成false
      WEB_VAULT_ENABLED: "true"          #邀请用户加入组织
      LOG_FILE:"/data/vaultwarden.log"  #日志文件
      DOMAIN: "https://你的域名/vault"   #配置到子目录。如果是直接不共用,不用配置此项

第二步、配置 nginx ,我的 nginx 也是用 docker 启动

vim /home/docker/nginx/conf.d/default.conf

#新增
upstream vaultwarden-default {
  zone vaultwarden-default 64k;
  server 127.0.0.1:8081;
  keepalive 2;
}

# Needed to support websocket connections
# See: https://nginx.org/en/docs/http/websocket.html
# Instead of "close" as stated in the above link we send an empty value.
# Else all keepalive connections will not work.
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      "";
}

server
{
	location / {
		...
	}
	#新增部分
	location /vault/ {
                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_pass http://127.0.0.1:8081;
        }

        location /vault/notifications/hub/negotiate {
                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_pass http://127.0.0.1:8081;
        }

        location /vault/notifications/hub {
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $http_connection;
                proxy_set_header X-Real-IP $remote_addr;

                proxy_pass http://127.0.0.1:3012;
        }
}

第三步、启动容器

docker restart nginx
docker compose up -d 

第四步:google插件的时候报错

解决方式:修改 nginx

server{
  ....
  location /vault/notifications/hub {
               ...
   }
        
        
   location = /vault/identity/accounts/prelogin {
     rewrite ^/vault/identity/accounts/prelogin$ /vault/api/accounts/prelogin;
   }
}

小tips:从本地文件复制到服务器

 scp 本地文件路径 root@ip:服务器文件目录

参考连接:https://rs.ppgg.in/deployment/proxy-examples