安装vaultwarden 1 2 3 4 cd mkdir -p docker/vaultwarden/data docker pull vaultwarden/server:latest docker run -d --name vaultwarden -v ~/docker/vaultwarden/data/:/data/ -p 11080:80 vaultwarden/server:latest
如果需要备份,~/docker/vaultwarden/data目录下有所有需要备份的内容。
docker-compose.yml 1 2 3 4 5 6 7 8 9 10 version: "2.1" services: vaultwarden: image: vaultwarden/server:latest container_name: vaultwarden volumes: - ~/docker/vaultwarden/data/:/data/ ports: - 11080 :80 restart: unless-stopped
设置frp 服务器端 打开防火墙8888端口。
下载frp (https://github.com/fatedier/frp )
解压文件。修改frps.ini
1 2 3 [common] bind_port = 8888 token = <password>
运行
1 2 3 4 ./frps -c frps.ini & 2023/01/24 16:11:38 [I] [root.go:206] frps uses config file: frps.ini 2023/01/24 16:11:38 [I] [service.go:200] frps tcp listen on 0.0.0.0:8888 2023/01/24 16:11:38 [I] [root.go:215] frps started successfully
服务器端systemd控制服务
https://gofrp.org/docs/setup/systemd/
1 sudo vim /etc/systemd/system/frps.service
文件内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 [Unit] Description =Frp Server ServiceAfter =network.target syslog.targetWants =network.target[Service] Type =simpleRestart =on -failureRestartSec =5 sExecStart =/home/ubuntu/frp/frps -c /home/ubuntu/frp/frps.ini[Install] WantedBy =multi-user.target
使用 systemd 命令,管理 frps
1 2 3 4 5 6 7 8 # 启动frp sudo systemctl start frps # 停止frp sudo systemctl stop frps # 重启frp sudo systemctl restart frps # 查看frp状态 systemctl status frps
配置 frps 开机自启。
1 sudo systemctl enable frps
客户端 下载frp (https://github.com/fatedier/frp)。因为客户端是armbian,所以需要下载arm64版本的。
解压文件。修改frpc.ini
1 2 3 4 5 6 7 8 9 10 [common] server_addr = <server ip>server_port = 8888 token = <password>[vaultwarden] type = tcplocal_ip = 127.0 .0.1 local_port = 11080 remote_port = 11080
运行
客户端systemd控制服务
https://gist.github.com/imyelo/b6c3d3d9383f7d5623f06a0c11052530
1 sudo vim /etc/systemd/system/frpc.service
文件内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [Unit] Description =Frp Client ServiceAfter =network.targetWants =network.target network-on line.target[Service] Type =simpleRestart =on -failureRestartSec =5 sExecStart =/home/user/frp/frpc -c /home/user/frp/frpc.ini[Install] WantedBy =multi-user.target
使用 systemd 命令,管理 frpc
1 2 3 4 5 6 7 8 # 启动frp sudo systemctl start frpc # 停止frp sudo systemctl stop frpc # 重启frp sudo systemctl restart frpc # 查看frp状态 systemctl status frpc
配置 frps 开机自启。
1 sudo systemctl enable frpc
绑定域名 noip.com申请免费域名并绑定服务器IP地址。
Caddy映射 Caddy是跟Nginx类似的web服务器。用Caddy可以做到自动申请letsencrypt证书。我服务器的Caddy版本是v1版本,所以配置文件格式是老格式。
在Caddyfile文件根中增加如下一段
1 2 3 4 5 <绑定的域名> { proxy / http://10.0.0.32:11080 { transparent } }
上面的10.0.0.32是服务器内网IP地址。11080是通过frp映射的端口号。
注册新帐号 浏览器打开https://域名访问vaultwarden。注册新帐号。
关闭注册帐号功能 停止并删除vaultwarden container,并用以下命令重新运行vaultwarden
1 docker run -d --name vaultwarden -e SIGNUPS_ALLOWED=false -v ~/docker/vaultwarden/data/:/data/ -p 11080:80 vaultwarden/server:latest
局域网映射HTTPS访问 整个服务过于复杂,依赖
本地服务器
本地网络
公网服务器
FPR服务器和客户端
Caddy
为防止服务不可用,设置在局域网访问。服务本身是HTTP协议11080端口。但是服务却不允许通过HTTP访问,必须通过HTTPS访问。 利用nginx设置反向代理通过HTTPS端口11443的步骤如下。
https://www.techrepublic.com/article/how-to-enable-ssl-on-nginx/
安装nginx
生成自签名证书
1 sudo openssl req -x509 -nodes -days 9365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
提示Common Name的时候输入IP地址
配置nginx
1 sudo nano /etc/nginx/snippets/self-signed.conf
文件内容
1 2 ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
然后,生成另外一个配置文件
1 sudo nano /etc/nginx/snippets/ssl-params.conf
内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384; ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0 ssl_session_timeout 10m; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; # Requires nginx >= 1.5.9 # ssl_stapling on; # Requires nginx >= 1.3.7 # ssl_stapling_verify on; # Requires nginx => 1.3.7 resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 5s; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block";
生成dhparam.pem文件
1 sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
生成nginx配置文件myproxy
1 sudo nano /etc/nginx/sites-available/myproxy
内容如下
1 2 3 4 5 6 7 8 9 10 11 12 server { listen 11443 ssl; listen [::]:11443 ssl; include snippets/self-signed.conf; include snippets/ssl-params.conf; server_name _; location / { proxy_pass http://localhost:11080; } }
替换配置文件,重启nginx
1 2 3 4 cd /etc/nginx/sites-enabled/ sudo rm default sudo ln -s /etc/nginx/sites-available/myproxy myproxy sudo systemctl restart nginx
参考
https://www.hash070.top/archives/bitwarden-docker-deploy.html https://hub.docker.com/r/vaultwarden/server