Linux 离线部署
最后更新于
最后更新于
对应的
这篇文章将指导您在离线或网闸环境中安装和部署 Bitwarden 到您自己的服务器。请查看 Bitwarden 文档。
[译者注]: (air-gapped) 网络,是指与外部网络(如互联网或其他外部系统)完全隔离的计算机网络。这种隔离通过物理或逻辑手段实现,确保网络无法与外部环境进行数据交换,从而增强安全性。
手动安装仅适合高级用户使用。仅当您非常熟悉 Docker 技术,并且希望对您的 Bitwarden 安装进行更多控制时才可以进行此操作。
手动安装缺乏自动更新 Bitwarden 安装所需的某些依赖项的能力。当你将 Bitwarden 从一个版本升级到下一个版本时,你将负责修改所需的环境变量,修改 nginx 的 default.conf
,修改 docker-compose.yml
等等。
我们会尽量在 中强调这些。你也可以在 GitHub 上监控 Bitwarden 安装脚本所使用的的更改。
处理器
x64, 1.4GHz
x64, 2GHz 双核
内存
2GB RAM
4GB RAM
存储
12GB
25GB
Docker 版本
Engine 26+ 以及 Compose ª
Engine 26+ 以及 Compose ª
ª - 下载 Docker Engine 时,Docker Compose 会作为插件自动安装。。
另外,请确保满足以下要求:
使用具有 Internet 访问权限的机器,您已经从 Bitwarden 服务器存储库的下载了最新的 docker-stub.zip
或 docker-stub-EU.zip
文件,并已将该文件传输到您的服务器。
离线 SMTP 服务器已在您的环境中设置并处于活动状态。
运行您的 Bitwarden 部署的服务器不需要允许出站流量访问网络外部的任何地址,但客户端应用程序必须配置为访问服务器的完全限定域名 (FQDN),默认情况下使用端口 80 和 443。在安装过程中,您可以选择使用不同的端口,但无论选择哪个端口,都必须开放这些端口以供客户端访问。
[译者注]::即完全限定域名 (Fully Qualified Domain Name),是互联网上用于标识特定主机或服务器的完整域名。它由主机名和域名组成,确保在全球范围内唯一地定位到一个网络资源。FQDN 从最具体的部分(主机名)到最一般的部分(顶级域名)依次排列,各部分之间用点(.)分隔。
例如,一个典型的 FQDN
mail.example.com
:
example.com
是域名,指定了该主机所属的组织或实体。
.com
是顶级域名 (TLD),表示这是一个商业实体。
默认情况下,Bitwarden 通过主机上的 80 (http
) 和 443 (https
) 端口提供服务。打开这些端口,以便可以从网络内部和/或外部访问 Bitwarden。您也可以在安装过程中选择不同的端口。
我们建议使用指向您的主机的 DNS 记录配置域名(例如,bitwarden.example.com
),尤其是当您通过 Internet 提供 Bitwarden 服务时。
我们建议在您的 Linux 服务器上配置一个专用的 bitwarden
服务账户,用来安装和运行 Bitwarden。这样做可以将您的 Bitwarden 实例与服务器上运行的其他应用程序隔离开来。
1、创建 bitwarden 用户:
2、为 bitwarden 用户设置密码(强密码):
3、创建 docker 组(如果它不存在):
4、将 bitwarden 用户添加到 docker 组:
5、创建 bitwarden 目录:
6、授予 /opt/bitwarden
目录权限:
7、授予 bitwarden 用户对 /opt/bitwarden
目录的所有权:
要使用 Bitwarden 服务器所需的资产配置您的机器:
1、创建一个名为 bwdata
的新目录,并将 docker-stub.zip
解压到其中,例如:
解压缩后,bwdata
目录需要与 ./docker/docker-compose.yml
文件的映射卷所期望的目录相匹配。如果您愿意,您也可以更改这些映射在主机上的位置。
2、编辑 ./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
替换为随机密钥字符串。
3、从 ./bwdata
为身份容器生成一个 .pfx
证书文件并将其移动到已映射的卷目录(默认为 ./bwdata/identity/
)。例如,运行以下命令:
然后
在上述命令中,将 IDENTITY_CERT_PASSWORD
替换为在步骤 2 中创建和使用的证书密码。
4、在 ./bwdata/ssl
中创建一个以您的域名命名的子目录,例如:
5、在新创建的 ./bwdata/ssl/bitwarden.example.com
子目录中提供受信任的 SSL 证书和私钥。
6、在 ./bwdata/nginx/default.conf
中:
将所有实例 bitwarden.example.com
替换为您的域名,包括 Content-Security-Policy
标头。
将 ssl_certificate
和 ssl_certificate_key
变量设置为步骤 6 中提供的证书和私钥的路径。
根据您的证书设置,执行以下操作之一:
如果您使用受信任的 SSL 证书,请将 ssl_trusted_certificate
变量设置为证书的路径。
如果您使用自签名证书,请注释掉 ssl_trusted_certificate
变量。
7、在 ./bwdata/env/mssql.override.env
中,将 RANDOM_DATABASE_PASSWORD
替换为在步骤 2 中创建的密码。
8、在 ./bwdata/web/app-id.json
中,将 bitwarden.example.com
替换为您的域名。
9、在 ./bwdata/env/uid.env
中,设置您之前创建的 bitwarden
用户和组的 UID 和 GID,以便容器在它们下面运行,例如:
要获取 docker 镜像以在离线机器上使用:
1、从已连接互联网的机器上,下载如 docker-stub.zip
中的 docker-compose.yml
文件中所列的所有 bitwarden/xxx:latest
docker 镜像,。
2、将每一个镜像保存为 .img
文件,例如:
3、将所有 .img
文件传输到您的离线计机器上。
4、在离线机器上,加载每一个 .img
文件以创建本地 docker 映像,例如:
使用以下命令启动您的 Bitwarden 服务器:
验证所有容器是否正常运行:
恭喜你!Bitwarden 现在已启动并运行在您指定的域名(如上面的示例 https://bitwarden.example.com
)上了。在网页浏览器中访问网页密码库以确认它是否已经正常工作。
将此新的 docker-stub.zip
存档解压缩并将其内容与当前 bwdata
目录中的内容进行比较,将任何新内容复制到 bwdata
中预先存在的文件中。
不要使用此较新的 docker-stub.zip
存档的内容直接覆盖您预先存在的 bwdata
目录,因为这会覆盖您已经完成的任何自定义配置工作。
运行以下命令以使用已更新的配置和最新的容器重新启动服务器:
这些步骤是 Bitwarden 推荐的最佳实践,但不是必须的。更多信息,请参阅 Docker 的文档。
如果,请从 /opt/bitwarden
目录以 bitwarden
用户身份完成以下操作。 请勿以 root 用户身份安装 Bitwarden,否则会在安装过程中遇到问题
globalSettings__installation__id=
:输入从 获取到的安装 ID。
globalSettings__installation__key=
:输入从 获取到的安装密钥。
此时,还要考虑为所有 globalSettings__mail__smtp__
变量和 adminSettings__admins
设置值。这样做将配置用于向新组织成员发送邀请的 SMTP 邮件服务器,并提供对的访问权限。
。
现在,您可以注册一个新账户并登录了。您需要配置 smtp
环境变量(请参阅)以验证新账户的电子邮箱地址。
如果您打算自托管一个 Bitwarden 组织,请参阅以开始。
如需了解更多信息,请参阅。
更新已手动安装和部署的自托管服务器与有所不同。要更新您手动安装的服务器:
从 下载最新的 docker-stub.zip
存档。
下载最新的容器镜像,并按照所述将其传输到离线计算机。