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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)