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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM