搭建自托管密码管理器

文章目录

    • 背景
    • 准备工作
      • 服务器
      • 域名
      • SSL 证书
    • 开始
      • 安装 Docker
      • 安装 Docker Compose
      • 阿里云
        • 安装 Docker
        • 安装 Docker Compose
      • 验证
    • 起飞
      • 安装官方 Bitwarden
        • 修改配置文件 (端口号、SSL 证书等)
        • (可选) 修改环境配置文件:
        • 启动 Bitwarden 服务
        • 验证所有容器是否正常运行
      • 安装第三方 Bitwarden
        • 自定义配置
        • 验证容器是否正常运行
    • 反向代理
    • 总结

背景

之前一直在用 iPhone 备忘录作为账号密码管理,但在有些场景下用起来不是很顺手,比如会误修改文本,修改完后,自动给保存,找不到原始文本。用起来不是很方便。看看业界有那些密码管理方案。1Password,付费,用不起。经朋友推荐,尝试尝试 bitwarden 自搭建,免费版平替 1Password

准备工作

服务器

Tips:bitwarden 官方推荐配置最低2GRAM起步

准备一台靠谱的服务器

域名

注册一个域名用于访问你的服务器,然后进入域名 DNS 解析后台,新增一条 A 记录指向你的服务器 IP (这一步最好先做,因为部分 DNS 生效会比较久)

如果没有域名,裸 IP 号 + 端口也不是不行

SSL 证书

各大云厂商都有固定的免费额度 SSL 证书申请,如果没有的话,请点击这

再不行,bitwarden 可以一键生成 SSL

开始

这里以 CentOS7 为例

安装 Docker

如果你的服务器上已经安装了 DockerDocker Compose,这一步就可以跳过了。Docker 要求 CentOS 系统的内核版本高于 3.10,可以运行 uname -r 查看版本。

Tips:安装,如果超时的话,建议使用国内镜像安装

# 1、(可选)更新系统的软件包
yum update -y# 2、安装 docker 依赖的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2# 3、添加 docker 的 yum 源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 4、通过 yum 安装 docker
sudo yum install docker-ce docker-ce-cli containerd.io
# 如上述命令出错,可能是系统上已有旧版本 Docker,需要先卸载旧版本
# 卸载命令:yum remove docker docker-common docker-selinux docker-engine docer-io# 5、测试 docker 是否安装成功 (查看版本号)
docker version
# 有 client 和 service 两部分表示 docker 安装并启动成功了(有部分错误不用管)# 6、启动 Docker 服务并设置开机启动
sudo systemctl start docker
sudo systemctl enable docker# 7、查看Docker是否启动
sudo systemctl status docker

安装 Docker Compose

Tips:安装,如果超时的话,建议使用国内镜像安装

# 1、首先前往 https://github.com/docker/compose/releases/latest 查看最新的 docker-compose 版本号,比如截稿时最新版本为 2.1.1。# 2、下载最新版本的 docker-compose,你需要将下面的 2.1.1 替换成最新的版本号
sudo curl -L "https://github.com/docker/compose/releases/download/2.1.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 3、授予可执行权限
sudo chmod +x /usr/local/bin/docker-compose# 4、测试是否安装成功(可能需要重启系统)
docker-compose -v
# 安装成功会显示 docker-compose 版本

阿里云

安装 Docker
# 1、运行以下命令,下载docker-ce的yum源
sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 2、运行以下命令,安装Docker
sudo yum -y install docker-ce# 3、测试 docker 是否安装成功 (查看版本号)
docker version
# 有 client 和 service 两部分表示 docker 安装并启动成功了(有部分错误不用管)# 4、设置开机启动
sudo systemctl start docker
sudo systemctl enable docker# 5、查看Docker是否启动
sudo systemctl status docker
安装 Docker Compose

Tips:仅Python 3及以上版本支持docker-compose,并请确保已安装pip。

# 1、安装setuptools
sudo pip3 install -U pip setuptools# 2、安装docker-compose
sudo pip3 install docker-compose# 3、验证docker-compose是否安装成功
docker-compose --version

验证

起飞

安装官方 Bitwarden

确认服务器已成功安装好 DockerDocker Compose 之后,我们就可以来安装 Bitwarden 了。其实 Bitwarden 官方就已经提供了非常方便的一键安装脚本,我们只需执行即可。

Tips:由于 docker 镜像的体积比较大,国内服务器可能遇到中途卡住不动的情况

可通过,输入域名网址 https://go.btwrdn.co/bw-sh,下载到本地,再上传到服务器,执行 ./bitwarden.sh install

# 1、下载 Bitwarden 的安装脚本
curl -Lso bitwarden.sh https://go.btwrdn.co/bw-sh && chmod 700 bitwarden.sh# 2、执行安装程序
./bitwarden.sh install

然后,安装脚本会一步步提示你输入,下面是部分重点选项

  1. Enter the domain name for your Bitwarden instance
    输入你要给 Bitwarden 分配的域名,这里例子为 bitwarden.iplaysoft.com

  2. Do you want to use Let’s Encrypt to generate a free SSL certificate? (y/n)
    是否使用 Let’s Encrypt 自动生成免费的 SSL 证书,一般选 y (你有自己的证书也可以选 n,后面需要配置证书的路径)

  3. Enter the database name for your Bitwarden instance
    输入用于 Bitwarden 的数据库名称

  4. Enter your installation id / Enter your installation key
    你需要访问 https://bitwarden.com/host 获取一组安装 ID 和安装密钥 Key (官网被 xx 无法访问的话,只能各显神通了)

修改配置文件 (端口号、SSL 证书等)
  • 如果你需要使用自己的 SSL 证书、修改默认的端口号等需求,可以编辑配置文件 ./bwdata/config.yml比如你的服务器本身就有服务占用了 80 和 443 端口,那么可以修改配置里的 http_port 和 https_port 端口号来避免冲突。比如我改成 9980 和 9443,这样日后我访问时的域名就是 https://bitwarden.iplaysoft.com:9980。

  • 要注意的是,腾讯云、阿里云等机器默认的「安全组规则」会阻止非常用端口的访问,如使用非 80/443 端口,需要登录后台修改安全组规则允许你设置的端口才行。

  • 另外,如果你使用「宝塔面板」,或者懂得修改 Nginx 的配置,也可以对你的 bitwarden 服务进行“反代”,有建站经验的朋友,可以查查相关的资料,搞定应该不难。

  • 修改完后,必须执行一下 ./bitwarden.sh rebuild 命令才能让新配置生效。

(可选) 修改环境配置文件:
  • 另外,在环境配置文件 ./bwdata/env/global.override.env 里还有诸如 SMTP、启用 Yubico、启用系统管理员门户、是否禁止用户注册等设置。

  • 其中,如果你的 Bitwarden 打算是私人使用,建议在注册完自己账号之后,改成 “禁止用户注册”,对应的项为:globalSettings__disableUserRegistration=false

  • 修改此文件后,需要重启 Bitwarden 容器才能生效,重启命令为:./bitwarden.sh restart

启动 Bitwarden 服务
./bitwarden.sh start
验证所有容器是否正常运行
docker ps

如果运行不正常,请查看日志,日志服务在 bitwarden/logs/

安装第三方 Bitwarden

vaultwarden

机器配置不达标,比如启动容器之后,mssql 无法正常工作,估计就是 RAM 配置不达标,官方 mssql 占 RAM 1.3G 内存。无法运行官方 Bitwarden,这时推荐使用第三方 Bitwarden

# 1、下载 vaultwarden 的安装脚本
docker run -d --name vaultwarden -v /vw-data/:/data/ -p 80:80 vaultwarden/server:latest# 2、启动容器
docker start vaultwarden
自定义配置
docker run -d --name bitwarden \-e SIGNUPS_ALLOWED=false \-e TZ=Asia/Shanghai \-e SIGNUPS_ALLOWED=false \-e INVITATIONS_ALLOWED=false \ -e SMTP_USERNAME=你的邮箱 \-e SMTP_PASSWORD=邮箱密码 \-v /vw-data/:/data/ \-p 9980:80 \vaultwarden/server:latest
验证容器是否正常运行
docker ps

反向代理

如果你有自己的 Nginx 服务,需要反向代理 官方 bitwarden 和第三方bitwarden,以及配置自己的 SSL 证书,可以参考以下配置:

user root;
worker_processes auto;
pid /run/nginx.pid;
#include /usr/share/nginx/modules/*.conf;
events {worker_connections 512;
}
http {etag on;expires 7d;gzip on;gzip_min_length 1k;gzip_buffers   2 8k;client_max_body_size 50m;gzip_comp_level 2;gzip_types   text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg;gzip_vary off;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';sendfile            on;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;types_hash_max_size 2048;#include             /etc/nginx/mime.types;include             mime.types;default_type        application/octet-stream;#include /etc/nginx/conf.d/*.conf;server {listen 80;server_name bitwarden.iplaysoft.com;rewrite ^(.*)$ https://$host$1 permanent;}server {listen 443 ssl;server_name  bitwarden.iplaysoft.com;index index.html;ssl_certificate   /usr/local/webserver/nginx/cert/vd.downfuture.com.pem;ssl_certificate_key  /usr/local/webserver/nginx/cert/vd.downfuture.com.key;ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;access_log /usr/local/webserver/nginx/logs/nginx_access.log;error_log /usr/local/webserver/nginx/logs/nginx_error.log error;error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}location / {proxy_pass http://服务器公网IP:9980;}}
}

总结

bitwarden 强大的自托管程序,让我拥有了免费密码管理器,感谢!

文章同步更新平台:掘金、CSDN、知乎、思否、博客,公众号(野生程序猿江辰)
我的联系方式,v:Jiang9684,欢迎和我一起学习交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/282359.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32 DAC+串口

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、DAC是什么?二、STM32 DAC1.什么型号有DAC2. 简介3. 主要特点4. DAC框图5. DAC 电压范围和引脚 三、程序步骤1. 开启DAC时钟2. 配置引脚 PA4 PA5…

Shell三剑客:sed(命令)一

一、删除命令:d [rootlocalhost ~]# sed -r /root/d passwd.txt bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync…

gitlab 安装

1.安装依赖 sudo apt updatesudo apt-get upgradesudo apt-get install curl openssh-server ca-certificates postfix安装gitlab curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash官网下载安装包 要选ubuntu focal 安…

Linux环境下HTTP请求的代码详解与实例

嘿,Linux狂热者们,是时候让我们在这个充满激情的平台上探索一下HTTP协议的奥秘了。我知道,对于这个我们每天都在使用,但却可能没深入了解过的HTTP,你们一定充满了好奇和期待。那么,让我们一起踏上这趟探索之…

基于ssm线上学习网站论文

线上学习网站 摘要 随着信息技术在管理上越来越深入而广泛的应用,作为学校以及一些培训机构,都在用信息化战术来部署线上学习以及线上考试,可以与线下的考试有机的结合在一起,实现线上学习网站在技术上已成熟。本文介绍了线上学…

论文修改润色算学术不端吗 快码论文

大家好,今天来聊聊论文修改润色算学术不端吗,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 标题:论文修改润色是否算学术不端?专业软件…

gin使用自签名SSL证书与自签名证书不受信任方法解决

文章目录 1. X.509 V3证书介绍2、使用openssl生成自签名证书和解决不受信任问题2.1、生成根证书2.2、为域名生成证书申请文件2.3、为域名创建证书的扩展描述文件2.4、为域名创建证书 3、Go应用中使用自签名证书3.1、gin框架调用实现3.2、运行效果 4、使用java的bouncycastle生成…

C语言——预处理详解(#define用法+注意事项)

#define 语法规定 #define定义标识符 语法: #define name stuff #define例子 #include<stdio.h> #define A 100 #define STR "abc" #define FOR for(;;)int main() {printf("%d\n", A);printf("%s\n", STR);FOR;return 0; } 运行结果…

设计可编辑表格组件

前言 什么是可编辑表格呢&#xff1f;简单来说就是在一个表格里面进行表单操作&#xff0c;执行增删改查。这在一些后台管理系统中是尤为常见的。 今天我们根据vue2 element-ui来设计一个表单表格组件。&#xff08;不涉及完整代码&#xff0c;想要使用完整功能可以看底部连…

【C语言】实战项目——通讯录

引言 学会创建一个通讯录&#xff0c;对过往知识进行加深和巩固。 文章很长&#xff0c;要耐心学完哦&#xff01; ✨ 猪巴戒&#xff1a;个人主页✨ 所属专栏&#xff1a;《C语言进阶》 &#x1f388;跟着猪巴戒&#xff0c;一起学习C语言&#x1f388; 目录 引言 实战 建…

使用Audition录制电脑内部声音

在电脑上播放的媒体文件&#xff0c;包括视频和声音&#xff0c;很多是可以播放却无法保存的。例如一些网页播放的视频&#xff0c;或者在线播放的音乐。 视频的话&#xff0c;可以使用工具来截图&#xff0c;抓取GIF或录屏。 声音的话&#xff0c;也可以使用工具进行录制。这里…

vue中实现使用相框点击拍照,canvas进行前端图片合并下载

拍照和相框合成,下载图片dome 一、canvas介绍 Canvas是一个HTML5元素,它提供了一个用于在网页上绘制图形、图像和动画的2D渲染上下文。Canvas可以用于创建各种图形,如线条、矩形、圆形、文本等,并且可以通过JavaScript进行编程操作。 Canvas元素本身是一个矩形框,可以通…