记录一些常用的函数和瞎折腾的过程……

自建bitwarden的密码服务

对于经常上网的我们,账号密码相当多,使用同一个密码很容易被脱裤,使用不同的密码却又难记。其实有很多密码管理软件可以使用,比如bitwarden。

bitwarden的密码默认是储存在官方有服务器上,当然是加密存储的。官方为了方便用户,也提供docker方式在自己的服务器安装该密码管理服务。要想自己安装使用bitwarden,需要先安装docker,这个可以参考《centos7下安装docker》一文。安装官方的镜像对服务器的要求高,由于官方使用的是mssql,内存必需大于2G,对于小内存机器来说是跑不起来的。

不过在github上有bitwarden_rs,这个是用rust写的docker镜像,对服务器要求较低,小内存照样能用。具体详见:https://github.com/dani-garcia/bitwarden_rs

按照提示,两行命令即可拉取docker镜像,进行默认安装:

docker pull bitwardenrs/server:latest
docker run -d --name bitwarden -v /bw-data/:/data/ -p 6666:80 bitwardenrs/server:latest

为了可以通过宿主机上通过端口映射反代,需要配置相应的nginx,具体可以参考:https://github.com/dani-garcia/bitwarden_rs/wiki/Proxy-examples

按上面链接配置好web配置文件后(如nginx),就可以用配置好域名进行访问管理了。

当然bitwarden_rs也是可以自定义安装,这个自定义是指相关的docker配置,下面简单介绍一下。

1、自行选择安装目录,如安装到/home/bitwarden:

cd /home && mkdir bitwarden && cd bitwarden

2、准备一个配置文件config.env:

cat >> config.env <<EOF

写入:

SIGNUPS_ALLOWED=true
DOMAIN=https://vault.yourdomain.com
DATABASE_URL=/data/bitwarden.db
ROCKET_WORKERS=10
WEB_VAULT_ENABLED=true
ADMIN_TOKEN=XXXXXXXXXXXX
WEBSOCKET_ENABLED=true
EOF

DOMAIN填自己的域名,需要HTTPS。

ADMIN_TOKEN为管理面板密码,推荐使用“openssl rand -base64 48”生成,当然也可以随意。

SIGNUPS_ALLOWED=true,此项控制注册,只想自己用的话注册后可以改为false。

3、准备服务描述文件docker-compose.yml:

cat >> docker-compose.yml <<EOF

写入:

version: '3'

services:
  bitwarden:
    image: bitwardenrs/server:latest
    container_name: bitwarden
    restart: always
    volumes:
      - ./data:/data
    env_file:
      - config.env
    ports:
      - "6666:80"
      - "8888:3012"
EOF

bitwarden:现在是唯一一个服务;

image: bitwardenrs/server:latest 指定使用 Docker Hub 的 bitwardenrs/server:latest 最新镜像;

volumes 中指定将容器内的 /data 目录挂载到宿主机的当前目录下的 ./data 目录,这样你可以在宿主机上执行数据库的备份操作;

ports 指定分别将容器内的 80和3012 端口映射到了宿主机的 6666和8888 端口;

3、拉取镜像:

docker-compose up -d

4、nginx配置反代(其它web方式请参阅:https://github.com/dani-garcia/bitwarden_rs/wiki/Proxy-examples):

server {
listen 443 ssl http2;
server_name vault.yourdomain.com;

# Specify SSL config if using a shared one.
#include conf.d/ssl/ssl.conf;

# Allow large attachments
client_max_body_size 128M;

location / {
proxy_pass http://<SERVER>: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;
}

location /notifications/hub {
proxy_pass http://<SERVER>:8888;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

location /notifications/hub/negotiate {
proxy_pass http://<SERVER>:6666;
}

# Optionally add extra authentication besides the AUTH_TOKEN
# If you don't want this, leave this part out
location /admin {
# See: https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/
auth_basic "Private";
auth_basic_user_file /path/to/htpasswd_file;

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://<SERVER>:6666;
}

}

5、设置开机启动:

编辑rc.local文件:

vi /etc/rc.d/rc.local

在最后加上

/usr/local/bin/docker-compose -f /usr/local/bitwarden/docker-compose.yml up -d

这样开机就会自动启动bitwarden

访问https://你的域名/admin可以进去管理面板

到这里bitwarden就搭建完成可以使用了,不过个人还是建议配置数据备份。

6、如果修改了配置,需要重新启动容器以便生效:

docker-compose down && docker-compose up -d
《自建bitwarden的密码服务》没有评论
发表评论