docker安装bitwarden

docker安装bitwarden

说明:

bitwarden是一款开源密码管理器,其衍生版本docker镜像名为bitwarden_rs。

bitwarden_rs 项目从 v2.21.0 开始,已更名为 Vaultwarden。

项目地址:https://github.com/dani-garcia/vaultwarden

Ps:文中会使用到Portainer-Docker可视化工具进行操作。

1.安装Vaultwarden

docker拉取bitwarden镜像

$ docker pull vaultwarden/server:latest

创建bitwarden容器,8001端口

$ docker run -it -d --name vaultwarden -v /data/vaultwarden/data/:/data/ -p 8001:80  --restart=always  vaultwarden/server:latest

Portainer中操作如下:

2.安装acme.sh,使用Letsencrypt颁发SSL证书

2.1docker安装acme.sh

acme官方说明文档:https://github.com/acmesh-official/acme.sh/wiki/

$ docker pull neilpang/acme.sh

2.2注册帐户

<注意:从 acme.sh v3.0.0 开始,acme.sh 使用 Zerossl 视为默认 ca,您必须先注册帐户(一次),然后才能颁发新证书。>

ZeroSSL申请EAB Credentials for ACME Clients:https://app.zerossl.com/developer

$ docker  run  --rm  -it  -v  "/data/acme.sh/out/":/acme.sh  neilpang/acme.sh  --register-account  --server zerossl --eab-kid  AxxxxQ --eab-hmac-key  5xxxxQ

# 注册成功后会显示一个ACCOUNT_THUMBPRINT和ZeroSSL-CA
# --rm 参数表示运行停止后立即删除该容器

如下图:

2.3修改默认CA

acme.sh的初始CA为ZeroSSL,如果想使用letsencrypt,请用以下代码

$ docker  run  --rm  -it  -v  "/data/acme.sh/out/":/acme.sh  neilpang/acme.sh  --set-default-ca  --server letsencrypt

2.4颁发证书

Godaddy申请API Key Management:https://developer.godaddy.com/keys

$ docker  run  --rm  -it  -v  "/data/acme.sh/out/":/acme.sh  -e  GD_Key="exxxK_3xxxH"  -e  GD_Secret="Vxxxh"  neilpang/acme.sh  --issue  --dns  dns_gd  -d  example.com  -d  *.example.com

# --rm 参数表示运行停止后删除该容器,参数v表示容器路径映射到本地路径,参数-e中GD_Key和GD_Secret表示是Godaddy的域名。
# 成功之后,证书会保存在out文件夹,也可以指定路径,修改上面第一行 `"/data/acme.sh/out/"`,改为你想要保存的路径即可
# zerossl的eab-kid和eab-hmac-key,godaddy的GD_Key和GD_Secret有效期不长。有时候出现“docker: invalid reference format.”时,更新上述参数即可。'

2.5其他操作

$ docker run --rm  -it -v "/data/acme.sh/out/":/acme.sh neilpang/acme.sh --revoke  -d example.com	# 撤销证书
$ acme.sh --renew -d example.com --force	# 续期证书

3.配置nginx反向代理

3.1docker安装nginx

$ docker  pull  nginx

3.2运行nginx,把nginx容器的端口映射到本地端口,

把nginx容器的目录映射到本地的目录,设置重启策略

$ docker  run  -it  -d  -v  "/data/nginx/config/":/config/  -v "/data/nginx/www/html/":/usr/share/nginx/html/ -v "/data/nginx/download/":/opt/download/ -p  80:80  -p 443:443  -p  3012:3012  --name nginx  --restart=always  nginx

3.3把acme.sh生成的证书上传到nginx服务目录下

<因为已把'/config' 目录目录映射到本地,所以只要复制文件到 '/data/nginx/' 目录下就可以了>

$ cd /data/acme.sh/out/example.com/
$ cp  example.com.cer  /data/nginx/example.com.cer
$ cp example.com.key  /data/nginx/example.com.key

3.4创建web.conf文件并上传

把web.conf重名为example.com.conf(自己的域名),上传到容器内 '/etc/nginx/conf.d/' 目录下

# 方法1
$ docker ps
# 查看容器ID
$ docker cp /data/example.com.conf 容器ID:/etc/nginx/conf.d/example.com.conf		
# 前面路径为本地路径,后面路径为容器内路径

# 方法2
$ mv web.conf /data/nginx/download/web.conf

# docker 进入容器的系统内
$ docker exec -it nginx /bin/bash
$ mv /opt/download/web.conf /etc/nginx/conf.d/example.com.conf

然后重启nginx服务。

此时就可以访问 https://example.com 进入bitwarden页面,注册使用。

创建web.conf文件

server
    {
        listen 80;
        #listen [::]:80;
        server_name example.com;
    	# 修改为自己的域名
		rewrite ^/(.*) https://$server_name/$1 permanent;
    }

server
    {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name example.com;
    	# 修改为自己的域名
        ssl on;
        ssl_certificate /config/example.com.cer;
    	# 修改为自己的证书所在路径
        ssl_certificate_key /config/example.com.key;
    	# 修改为自己的证书的key所在路径
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;
        
		# openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
        # ssl_dhparam /etc/nginx/dhparam.pem;
		
		add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
		add_header X-Frame-Options DENY;
		add_header X-Content-Type-Options nosniff;

		location / {
        		proxy_set_header  Host  zheteng.pw;
        		proxy_pass http://192.168.20.5:8001;
        		# 修改为bitwarden的ip和端口
        		proxy_redirect off;
       			proxy_set_header X-Real-IP $remote_addr;
        		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}

		location /notifications/hub {
    		proxy_pass http://127.0.0.1:3012;
    		proxy_set_header Upgrade $http_upgrade;
    		proxy_set_header Connection "upgrade";
  		}

  		location /notifications/hub/negotiate {
    		proxy_pass http://192.168.20.5:8001;
        	# 修改为bitwarden的ip和端口
  		}
	}

4.certbot使用

4.1安装更新snap

ubuntu20自带snap

$ sudo snap install core; sudo snap refresh core	# 更新snap

4.2安装certbot

$ sudo snap install --classic certbot	# 安装certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot	#准备 Certbot 命令
$ sudo certbot --apache	# 获取证书并让 Certbot 自动编辑 apache 配置
$ sudo certbot certonly --apache	# 只获取证书,手动编辑 apache 配置

参考链接:

https://certbot.eff.org/instructions?ws=apache&os=ubuntufocal

posted @   柠萌不甜  阅读(4639)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示