前言
从2020年bitwarden_rs服务端搭建完成至今,笔者已稳定了使用4年的bitwarden,这期间bitwarden_rs更名为Vaultwarden,同时也更新了不少内容,因此重新记录一下安装过程。
环境准备
本文使用的系统为Debian 12,Vaultwarden的数据库为宿主机上的MairaDB,并通过CloudFlare Tunnel反代到公网,因此需要使用已经托管到CloudFlare的域名。
安装必要软件:
apt update && apt install curl sudo -y
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared bookworm main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
apt update && apt install cloudflared docker.io docker-compose mariadb-server -y
其他系统的CloudFlare Tunnel安装可参考 https://pkg.cloudflare.com
MariaDB安全初始设置:
mysql_secure_installation
使用刚才设置的密码登录到数据库:
mysql -u root -p
创建数据库和用户:
CREATE DATABASE vaultwarden CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON vaultwarden.* TO vaultwarden@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
quit
安装Vaultwarden
创建并打开docker-compose配置文件:
mkdir -p /srv/docker/vaultwarden
touch /srv/docker/vaultwarden/docker-compose.yml
vi /srv/docker/vaultwarden/docker-compose.yml
将下面的docker-compose.yml示例复制进去
services:
vaultwarden:
container_name: vaultwarden
restart: always
volumes:
- './data/:/data/'
- /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock
ports:
- '127.0.0.1:8080:80'
environment:
- TZ=Asia/Shanghai
- "DATABASE_URL=mysql://vaultwarden:password@localhost/vaultwarden?unix_socket=/var/run/mysqld/mysqld.sock"
- DOMAIN=https://vaultwarden.example.com
- IP_HEADER=X-Forwarded-For
- SIGNUPS_ALLOWED=true
image: 'vaultwarden/server:latest-alpine'
注意修改环境变量DOMAIN
为要使用的域名
其他环境变量可以按需求开启,下面是部分较为实用的功能:
- Enabling Mobile Client push notification:移动客户端推送通知
- Enabling admin page:管理页面
- SMTP Configuration:SMTP配置
启动容器:
cd /srv/docker/vaultwarden
docker-compose up -d
查看日志:
docker-compose logs -f
反向代理
在CloudFlare的Zero Trust页面中创建Tunnel,按照提示在服务器上绑定隧道,然后按下图设置反代。
设置完成后,等待CloudFlare的SSL证书生效,即可访问 https://vaultwarden.example.com
打开Vaultwarden网页客户端。
如果启用了管理页面,管理页面为 https://vaultwarden.example.com/admin