Linux 手动部署

这篇文章将指导您手动安装和部署 Bitwarden 到您自己的服务器。请查看 Bitwarden 软件发布支持文档。

要求

最低
推荐

处理器

x64, 1.4GHz

x64, 2GHz 双核

内存

2GB RAM

4GB RAM

存储

12GB

25GB

Docker 版本

Engine 26+ 以及 Compose ª

Engine 26+ 以及 Compose ª

ª - 下载 Docker Engine 时,Docker Compose 会作为插件自动安装。下载 Linux 版 Docker Engine

此外,如果要构建自己的 Bitwarden 镜像,还需要使用与 Bitwarden 相同 .NET 版本的官方 .NET Core Runtime 镜像(从 DockerHub 下载)。您必须使用 Debian 或 Ubuntu 版本。

安装步骤

创建 Bitwarden 本地用户和目录

Bitwarden 建议在您的 Linux 服务器上配置一个专用的 bitwarden 服务账户,用来安装和运行 Bitwarden。这样做可以将您的 Bitwarden 实例与服务器上运行的其他应用程序隔离开来。

这些步骤是 Bitwarden 推荐的最佳实践,但不是必须的。更多信息,请参阅 Docker 的用于 Linux 的后安装步骤文档。

1、创建 bitwarden 用户:

sudo adduser bitwarden

2、为 bitwarden 用户设置密码(强密码):

sudo passwd bitwarden

3、创建 docker 组(如果它不存在):

sudo groupadd docker

4、将 bitwarden 用户添加到 docker 组:

sudo usermod -aG docker bitwarden

5、创建 bitwarden 目录:

sudo mkdir /opt/bitwarden

6、授予 /opt/bitwarden 目录权限:

sudo chmod -R 700 /opt/bitwarden

7、授予 bitwarden 用户对 /opt/bitwarden 目录的所有权:

sudo chown -R bitwarden:bitwarden /opt/bitwarden

下载和配置

要下载 Bitwarden 并配置 Bitwarden 服务器资产:

1、从 GitHub 上的发行页面下载 Bitwarden 依赖项的存档版本 (docker-stub.zip)。例如:

curl -L https://github.com/bitwarden/server/releases/download/v<version_number>/docker-stub.zip \
 -o docker-stub.zip

2、创建一个名为 bwdata 的新目录,并将 docker-stub.zip 解压到其中,例如:

unzip docker-stub.zip -d bwdata

解压缩后,bwdata 目录需要与 ./docker/docker-compose.yml 文件的映射卷所期望的目录相匹配。如果您愿意,您也可以更改这些映射在主机上的位置。

3、编辑 ./bwdata/env/global.override.env 中的以下环境变量:

  • globalSettings__baseServiceUri__vault=:输入您的 Bitwarden 实例的域名。

  • globalSettings__sqlServer__ConnectionString=:将 RANDOM_DATABASE_PASSWORD 替换为在后续步骤中使用的安全密码。

  • globalSettings__identityServer__certificatePassword:设置一个在后续步骤中使用的安全的证书密码。

  • globalSettings__internalIdentityKey=:将 RANDOM_IDENTITY_KEY 替换为随机密钥字符串。

  • globalSettings__oidcIdentityClientKey=:将 RANDOM_IDENTITY_KEY 替换为随机密钥字符串。

  • globalSettings__duo__aKey=:将 RANDOM_DUO_AKEY 替换为随机密钥字符串。

  • globalSettings__installation__id=:输入从 https://bitwarden.com/host 获取到的安装 ID。

  • globalSettings__installation__key=:输入从 https://bitwarden.com/host 获取到的安装密钥。

4、从 ./bwdata 为身份容器生成一个 .pfx 证书文件并将其移动到已映射的卷目录(默认为 ./bwdata/identity/)。例如,运行以下命令:

openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout identity.key -out identity.crt -subj "/CN=Bitwarden IdentityServer" -days 10950

然后

openssl pkcs12 -export -out ./identity/identity.pfx -inkey identity.key -in identity.crt -passout pass:IDENTITY_CERT_PASSWORD

在上述命令中,将 IDENTITY_CERT_PASSWORD 替换为在步骤 3 中创建和使用的证书密码。

5、将 identity.pfx 复制到 ./bwdata/ssl 目录。

6、在 ./bwdata/ssl 中创建一个以您的域名命名的子目录,例如:

mkdir ./ssl/bitwarden.example.com

7、在新创建的 ./bwdata/ssl/bitwarden.example.com 子目录中提供受信任的 SSL 证书和私钥。

此目录映射到 NGINX 容器的 /etc/ssl 目录。如果您无法提供受信任的 SSL 证书,请在安装前使用代理,以为 Bitwarden 客户端应用程序提供一个 HTTPS 端点。

8、在 ./bwdata/nginx/default.conf 中:

  1. 将所有实例 bitwarden.example.com 替换为您的域名,包括 Content-Security-Policy 标头。

  2. ssl_certificatessl_certificate_key 变量设置为步骤 7 中提供的证书和私钥的路径。

  3. 根据您的证书设置,执行以下操作之一:

    • 如果您使用受信任的 SSL 证书,请将 ssl_trusted_certificate 变量设置为证书的路径。

    • 如果您使用自签名证书,请注释掉 ssl_trusted_certificate 变量。

9、在 ./bwdata/env/mssql.override.env 中,将 RANDOM_DATABASE_PASSWORD 替换为在步骤 3 中创建的密码。

10、在 ./bwdata/web/app-id.json 中,将 bitwarden.example.com 替换为您的域名。

11、在 ./bwdata/env/uid.env 中,设置您之前创建的 bitwarden 用户和组的 UID 和 GID,以便容器在它们下面运行,例如:

LOCAL_UID=1001
LOCAL_GID=1001

启动您的服务器

使用以下命令启动您的 Bitwarden 服务器:

docker-compose -f ./docker/docker-compose.yml up -d

验证所有容器是否正常运行:

docker ps
显示健康容器的列表

恭喜你!Bitwarden 现在已启动并运行在您指定的域名(如上面的示例 https://bitwarden.example.com)上了。在网页浏览器中访问网页密码库以确认它是否已经正常工作。

现在,您可以注册一个新账户并登录了。您需要配置 smtp 环境变量(请参阅环境变量)以验证新账户的电子邮箱地址。

下一步

  1. 如果您打算自托管一个 Bitwarden 组织,请参阅自托管组织以开始。

  2. 如需了解更多信息,请参阅自托管 FAQ

更新您的服务器

更新已手动安装和部署的自托管服务器与标准更新过程有所不同。要更新您手动安装的服务器:

  1. GitHub 发行页面下载最新的 docker-stub.zip 存档。

  2. 将此新的 docker-stub.zip 存档解压缩并将其内容与当前 bwdata 目录中的内容进行比较,将任何新内容复制到 bwdata 中预先存在的文件中。 不要使用此较新的 docker-stub.zip 存档的内容直接覆盖您预先存在的 bwdata 目录,因为这会覆盖您已经完成的任何自定义配置工作。

  3. 运行以下命令以使用已更新的配置和最新的容器重新启动服务器:

    docker-compose -f ./docker/docker-compose.yml down && docker-compose -f ./docker/docker-compose.yml up -d

最后更新于