服务器项目推荐 · Vaultwarden的非Docker部署

概述

上节我介绍了Vaultwarden的Docker部署方案,现在我再来介绍一种使用非 Docker 方式、直接在系统上部署 Vaultwarden 的方法。16MB 左右的内存占用,再配合 MySQL 替代默认的 SQLite 作为数据存储形式可以将其占用降到最低。

编译二进制文件

详细内容可参阅中文文档。现介绍如下:

依赖

  • Rust stable(强烈建议使用 rustup) 最低支持 Rust 版本 (MSRV) 策略是 N-2,这意味着如果当前 Rust 版本是 v1.67,我们支持使用 v1.65 构建
  • 在基于 Debian 的发行版上,请安装以下包:build-essentialgit,这些通用包可确保构建能正常进行
  • OpenSSL(应在路径中是可用的,请参阅 openssl crate 文档)。在基于 Debian 的发行版上,需要安装 pkg-configlibssl-dev
  • 对于基于 Debian 发行版上的 SQLite3 后端,需要安装 libsqlite3-dev
  • 对于基于 Debian 发行版上的 MySQL 后端,需要安装 libmariadb-dev-compatlibmariadb-dev
  • 对于基于 Debian 发行版上的 PostgreSQL 后端,需要安装 libpq-devpkg-config
  • NodeJS(仅当编译网页密码库时使用。使用预构建的二进制,通过系统的包管理器安装)或 nodesource 二进制发行版备注:构建 web-vault 当前要求 NodeJS v16 和 NPM v8.11

安装依赖

配置软件包

apt update
apt install git curl wget pkg-config openssl libssl1.1 libssl-dev build-essential -y

配置Rust

curl https://sh.rustup.rs -sSf | sh

出现 Rust is installed now. Great! 即安装完成。

配置cargo环境变量

echo 'export PATH=~/.cargo/bin:$PATH' >> ~/.bashrc
export PATH=~/.cargo/bin:$PATH 
which rustc

出现/root/.cargo/bin/rustc则完成 Rust 环境配置。

编译

拉取 Vaultwarden 储存库

git clone https://github.com/dani-garcia/vaultwarden && cd vaultwarden

编译时sqlite,mysql,postgresql三者可以任意组合,在这里使用所有后端进行编译

选择编译mysqlpostgresql时,系统必须安装了 MySQL 或 PostgreSQL,否则会报错

cargo build --features sqlite,mysql,postgresql --release

构建密码库需要约 1.5GB 的 RAM。在具有 1GB 或更小容量的 RaspberryPI 之类的系统上,请启用交换功能或在功能更强大的计算机上构建,然后从那里复制目录。仅构建时需要大量内存。

部署

移动二进制文件并创建对应用户

cp target/release/vaultwarden /usr/bin/vaultwarden
chmod +x /usr/bin/vaultwarden
useradd -s /sbin/nologin -M vaultwarden
mkdir -p /var/lib/vaultwarden/data
chown -R vaultwarden:vaultwarden /var/lib/vaultwarden/

部署WebUI

wget https://github.com/dani-garcia/bw_web_builds/releases/download/v2024.1.2/bw_web_v2024.1.2.tar.gz
tar -xf bw_web_v2024.1.2.tar.gz -C /var/lib/vaultwarden/

其中,版本号请保持最新。

创建配置文件

从Github上面下载.env.template,自行修改配置,并保存到/etc/vaultwarden.env。详细参数可以参见中文文档。其中以下参数务必根据需要自行修改:

DATA_FOLDER=/var/lib/vaultwarden/data/
DATABASE_URL=mysql://[数据库用户名]:[数据库密码]@127.0.0.1:3306/[数据库名]
WEB_VAULT_FOLDER=/var/lib/vaultwarden/web-vault/
WEB_VAULT_ENABLED=true
ADMIN_TOKEN=
DOMAIN=https://www.example.com

编写Service

touch /etc/systemd/system/vaultwarden.service

内容如下:

[Unit]
Description=Vaultwarden Server
Documentation=https://github.com/dani-garcia/vaultwarden
# 当你使用某数据库时,请取消对应的注释
# SQLite
# After=network.target

# MariaDB
# After=network.target mariadb.service
# Requires=mariadb.service

# MySQL
# After=network.target mysqld.service
# Requires=mysqld.service

# PostgreSQL
# After=network.target postgresql.service
# Requires=postgresql.service

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

[Install]
WantedBy=multi-user.target

启动 Vaultwarden

systemctl enable --now vaultwarden.service
systemctl start vaultwarden.service
systemctl status vaultwarden.service

添加Nginx反向代理

Vaultwarden必须进行加密才能访问。配置模板如下,可根据需要自行修改

server {  
    listen 443 ssl;
	http2 on;
    server_name www.example.com;

    ssl_certificate     /etc/nginx/cert/cf.pem;
    ssl_certificate_key /etc/nginx/cert/cf.key;

    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;

    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA;
    ssl_prefer_server_ciphers off;

    location / {
        proxy_set_header    Upgrade            $http_upgrade;
        proxy_set_header    Connection         $connection_upgrade;
        proxy_set_header    Host               $host:$server_port;
        proxy_set_header    X-Real-IP          $remote_addr;
        proxy_set_header    X-Scheme           $scheme;
        proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_pass http://0.0.0.0:8000;
    }
}
server {
    listen 80;
    server_name www.example.com;
    return 301 https://$host$request_uri; 
}

配置完反向代理后即可访问 your.domain/admin登录后台,登录密码为你设置的 ADMIN_TOKEN

参考资料:

使用非 Docker 方案在腾讯云轻量应用服务器上搭建密码管理软件 Vaultwarden (Bitwarden_rs)

版权声明:此篇文章《服务器项目推荐 · Vaultwarden的非Docker部署》作者:湙凇。未经许可严禁转载,转载与引用请首先注明作者(湙凇)、出处(https://blog.yisrime.xyz/02/06/%e6%9c%8d%e5%8a%a1%e5%99%a8%e9%a1%b9%e7%9b%ae%e6%8e%a8%e8%8d%90-vaultwarden%e7%9a%84%e9%9d%9edocker%e9%83%a8%e7%bd%b2.html)以及此段内容。
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇

版权所有 严禁复制