前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >debian10编译安装Bitwarden_rs 自建自托管的密码服务器

debian10编译安装Bitwarden_rs 自建自托管的密码服务器

作者头像
暮城
发布2022-02-23 17:32:04
6970
发布2022-02-23 17:32:04
举报
文章被收录于专栏:建站闲谈

首先安装 nginx 包并启动nginx:

代码语言:javascript
复制
apt -y update
apt -y install wget curl git sudo nginx build-essential pkg-config libssl-dev libsqlite3-dev
systemctl enable --now nginx

安装rust:

代码语言:javascript
复制
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

拉取bitwarden_rs的项目代码:

代码语言:javascript
复制
git clone https://github.com/dani-garcia/bitwarden_rs.git
cd bitwarden_rs/

编译:

代码语言:javascript
复制
cargo build --features sqlite --release

注意:这里我为了方便维护和管理使用的是sqlite数据库。因为就我自己用,没必要上mysql。而且我想这种东西就算你开放给别人用,也要别人敢用你的服务。。

编译需要一定的时间,编译完成后复制二进制文件到/usr/bin目录下给执行权限:

代码语言:javascript
复制
cp target/release/bitwarden_rs /usr/bin/bitwarden_rs
chmod +x /usr/bin/bitwarden_rs

接下来创建一个名为bitwarden_rs的用户:

代码语言:javascript
复制
useradd -m -d /opt/bitwarden_rs -s /sbin/nologin bitwarden_rs

把这个用户加到sudo组:

代码语言:javascript
复制
adduser bitwarden_rs sudo

现在我们需要创建用于存放数据的目录和安装web-vault:

代码语言:javascript
复制
cd /opt/bitwarden_rs
sudo -u bitwarden_rs mkdir data
sudo -u bitwarden_rs wget https://github.com/dani-garcia/bw_web_builds/releases/download/v2.18.2/bw_web_v2.18.2.tar.gz
sudo -u bitwarden_rs tar -xzvf bw_web_v2.18.2.tar.gz

注意:这里我为了方便就直接用作者预编译好的web-vault,当然如果你要连web-vault也自己编译的话也行,但是我觉得没啥必要,因为编译web-vault需要nodejs,装个nodejs是小事,但是这货编译起来机器内存至少要2G。。极大的增加了小鸡的成本,所以个人不建议自己编译web-vault。

创建.env配置文件:

代码语言:javascript
复制
nano /etc/bitwarden_rs.env

写入如下配置:

代码语言:javascript
复制
SIGNUPS_ALLOWED=true
WEBSOCKET_ENABLED=true
WEBSOCKET_ADDRESS=127.0.0.1
WEBSOCKET_PORT=3012
ROCKET_ADDRESS=127.0.0.1
ROCKET_PORT=8000

创建systemd服务:

代码语言:javascript
复制
nano /etc/systemd/system/bitwarden_rs.service

写入如下配置:

代码语言:javascript
复制
[Unit]
Description=Bitwarden Server (Rust Edition)
Documentation=https://github.com/dani-garcia/bitwarden_rs
After=network.target

[Service]
User=bitwarden_rs
Group=bitwarden_rs
WorkingDirectory=/opt/bitwarden_rs
ReadWriteDirectories=/opt/bitwarden_rs
EnvironmentFile=/etc/bitwarden_rs.env
ExecStart=/usr/bin/bitwarden_rs
LimitNOFILE=1048576
LimitNPROC=64
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
ProtectSystem=strict
AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target

启动以及设置bitwarden_rs开机自启:

代码语言:javascript
复制
systemctl daemon-reload
systemctl start bitwarden_rs.service
systemctl enable bitwarden_rs.service

创建nginx站点配置文件:

代码语言:javascript
复制
nano /etc/nginx/conf.d/bitwarden_rs.conf

写入如下配置:

代码语言:javascript
复制
server {
    listen 80;
    server_name bitwarden.ohshit.club;
    client_max_body_size 0;

    location / {
        proxy_pass http://127.0.0.1:8000;
        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";
    }
  
    location /notifications/hub/negotiate {
        proxy_pass http://127.0.0.1:8000;
    }
}

安装certbot:

代码语言:javascript
复制
apt -y install snapd
snap install core
snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot

使用certbot为你的站点自动签发证书:

代码语言:javascript
复制
certbot --nginx

访问你的域名,如果正常你将可以看到这个页面:

如果不正常,执行下面的命令查看报错的日志信息:

代码语言:javascript
复制
journalctl -u bitwarden_rs.service

在你注册好账号后,建议再次编译.env配置文件:

代码语言:javascript
复制
nano /etc/bitwarden_rs.env

将注册功能关掉:

代码语言:javascript
复制
SIGNUPS_ALLOWED=false

重启bitwarden_rs服务使其生效:

代码语言:javascript
复制
systemctl restart bitwarden_rs.service
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档