Bitwarden(vaultwarden)如何在非Docker环境下安装使用

为什么会有非 Docker 环境这个怪字眼呢?

无他,因为满网搜索到的教程都是在 Docker 环境下安装使用。

但是穷啊,八戒的 vps 是个单核 500m 的 justhost 机器,便宜的很,这种廉价机器来跑 Docker,基本要占100M,跑不太动。

这种一穷二白的环境,就只能把 Bitwarden 从容器里拆出来用。

好在 Bitwarden_rs 是一个 rust 程序,占内存(16M左右)和cpu极少,本身就适合在 systemd 环境下跑。

这里就利用 vaultwarden 和 traefik,在一台老破小服务器上运行。

系统环境是 CentOS 7.9

步骤如下:

一、下载bitwarden(vaultwarden)

1wget https://github.com/dani-garcia/vaultwarden/archive/refs/tags/1.23.0.tar.gz

二、安装cargo并编译(可选)

1yum install -y epel-release
2yum install -y openssl-devel cargo
3
4cd vaultwarden-1.23.0
5cargo build --release --features sqlite

直接爆错啊,小小的 vps 连编译都过不去,编译进程都被 kill 掉了

image-20211027144917206

三、下载vaultwarden主文件

编译不通,就只能想别的办法了。Faint

找一台有 docker 机器,从里面把文件都解析出来好了

1docker pull vaultwarden/server:alpine
2docker create --name vw vaultwarden/server:alpine
3docker cp vw:/vaultwarden .
4docker cp vw:/web-vault .
5docker rm vw

这样会得到一个可执行文件 vaultwarden 和一个目录 web-vault

我们把这两个东西都挪到 /opt/vaultwarden 目录下,并且建立 data 文件夹,用来存放要生成的 sqlite3 数据文件。

1mkdir -p /opt/vaultwarden/data
2mv vaultwarden /opt/vaultwarden
3mv web-vault /opt/vaultwarden

四、生成systemd启动文件

注意,下面我们设置了 vaultwarden ROCKET_ADDRESS 的监听地址是 127.0.0.1 ,一是为了安全,二是为了下一步我们搭建 traefik,来反代 vaultwarden 用的;因为访问 vaultwarden 必须要加证书,而它本身是没有这个功能的,必须前置一个 nginx 或者 haproxy 或者 traefik 或者 carddy。

 1cat << EOF >> /etc/systemd/system/vaultwarden.service 
 2[Unit]
 3Description=Bitwarden
 4
 5[Service]
 6Type=simple
 7Restart=always
 8Environment="ROCKET_ADDRESS=127.0.0.1"
 9WorkingDirectory=/opt/vaultwarden
10ExecStart=/opt/vaultwarden/vaultwarden
11
12[Install]
13WantedBy=local.target
14EOF

五、配置traefik

1wget https://github.com/traefik/traefik/releases/download/v2.4.8/traefik_v2.4.8_linux_amd64.tar.gz
2tar zxvf traefik_v2.4.8_linux_amd64.tar.gz
3
4mkdir -p /opt/traefik/dynamic
5mv traefik /opt/traefik

生成traefik配置文件,利用 traefik 自动申请 Let’s encrypt 证书

 1cat << EOF >> /opt/traefik/traefik.yml
 2log:
 3  level: DEBUG
 4  
 5api:
 6  insecure: false
 7  dashboard: true
 8
 9entryPoints:
10  http:
11    address: ":80"
12    http:
13      redirections:
14        entryPoint:
15          to: https
16          scheme: https
17  https:
18    address: ":443"
19
20certificatesResolvers:
21  letsEncrypt:
22    acme:
23      storage: /opt/traefik/acme.json
24      email: zhangranrui@gmail.com
25      tlsChallenge: {}
26      httpChallenge:
27        entryPoint: http
28
29providers:
30  file:
31    directory: /opt/traefik/dynamic
32    watch: true

配置 vaultwarden 代理

 1cat << EOF >> /opt/traefik/dynamic/pass.yml
 2http:
 3  routers:
 4    https_01:
 5      rule: "Host(`xxx.rendoumi.com`)"
 6      service: svc_01
 7      tls:
 8        certresolver: letsEncrypt
 9    http_01:
10      rule: "Host(`xxx.rendoumi.com`)"
11      service: svc_01
12      entryPoints:
13        - http
14  services:
15    svc_01:
16      loadBalancer:
17        servers:
18          - url: "http://localhost:8000"
19EOF

设置 traefik 的 systemd 启动文件

 1cat << EOF >> /etc/systemd/system/traefik.service 
 2[Unit]
 3Description=traefik
 4
 5[Service]
 6Type=simple
 7Restart=always
 8WorkingDirectory=/export/servers/traefik
 9ExecStart=/export/servers/traefik/traefik
10
11[Install]
12WantedBy=local.target
13EOF

五、启动vaultwarden和traefik

1systemctl daemon-reload
2systemctl enable --now vaultwarden
3systemctl enable --now traefik

打开页面,我们就成功的用一台老破小搭建了自己的密码管理服务器!!!

image-20211027152237848


阿里云ACK完全生产环境规划和搭建
没有装Docker如何从镜像中释放出文件
comments powered by Disqus