1347 字
7 分钟
【VPS折腾记录】Docker部署Ward实时监控

前言#

好久没有更新了,最近开学忙的事情比较多。这几天还新搞了一台机子,专门用于搭建之前的 code-server,具体请看:

https://hoyue.fun/vps-code-server.html

但是 code-server 占用的硬盘让我原来那只小鸡吃不消了,于是重新开一个,顺便搭建个简单的实时监控来看看运行情况。这里没有用到很多功能强大探针,是因为我的机子不是很多没必要,而且 Ward 界面好看。

预览图:

演示地址:https://status.code.hoyue.fun/

话不多说直接开始。


准备工作#

我们在部署前需要做一些准备工作,本次记录使用的环境:

  • VPS:Japan BGP(xtom 机房),有条件的建议选择大陆的服务器,速度会更快。
  • 系统:Debian 11(Linux x86_64)
  • 环境:安装好 Docker,Docker Compose 等。

我们先确认一下 docker 是否安装成功,在 ssh 输入 docker -v 出现版本号类似页面即可。

最好也更新一下先:

Terminal window
# Ubuntu/Debian
sudo apt-get update
# CentOS
yum -y update

部署#

因为开发者取消了一键部署,我们使用传统的手动部署。

首先我们先建立镜像文件夹以便等会 clone:

Terminal window
mkdir -p ~/data/docker_data/Ward
cd ~/data/docker_data/Ward
git clone https://github.com/AntonyLeons/Ward.git ## 在创建的文件夹下克隆项目并构建镜像
cd Ward
docker build . --tag ward

建议这个地方一行行来运行!

全部执行完以后我们检查一下,输入下面代码看看是否已经成功拉取:

Terminal window
docker images

接下来就是部署了,直接执行下面代码:

Terminal window
docker run -d --name ward -p 4000:4000 --restart=always --privileged=true
# -d 后台运行
# --restart=always 跟随宿主机启动
# --privileged=true 宿主机设备的完全访问权限
# --name 容器名称
# -p 端口映射

记住你这里的端口,之后要用到。

然后我们就可以打开了,地址:http://ip:4000(或者是你刚才的端口)。

第一次运行需要设置,在这个 main setting 这里填写标题名称,就是显示在浏览器地址栏的标题名称。在 additon setting 中可以选择亮色模式或者暗色模式,在底下的框输入刚才部署的端口号,默认 4000.

最后我们点击 launch 就可以了,成功如图:


进阶设置#

接下来我们还可以进行一下进阶设置,即修改配置信息,反向代理域名,配置 SSL。

修改配置信息#

我们刚才第一次进入的那个设置写错了,或者是想换个模式、换个标题什么的,我们需要修改配置信息。我们只需要进入容器内部,修改 setup.ini 文件即可。执行下面代码:

Terminal window
docker exec -it ward /bin/sh # 进入容器
nano setup.ini # 修改配置

当然如果你觉得麻烦,也可以 remake:

Terminal window
docker stop ward
docker rm -f ward
docker run -d --name ward -p 4000:4000 --restart=always --privileged=true

配置反向代理#

我们一般也是通过域名访问的比较多,于是设置个反向代理即可用域名访问。这里使用的是 nginx 的反代,其他程序请询问搜索引擎。我们先安装 nginx(这里没有安装在 docker 里)。

如果是使用宝塔等一键安装的用户可以直接在面板中修改配置,跳过安装步骤

Terminal window
sudo apt update
sudo apt install nginx
# CentOS
yum -y install nginx

修改默认配置,在 /etc/nginx/nginx.conf 里,为了防止太多太乱,我们自己建立一个新的配置文件,于是在 http {} 里加上:

include /etc/nginx/conf.d/*.conf;

之后就可以在 conf.d 文件夹里自己建立新的配置文件了。来到 conf.d 文件夹,建立一个配置文件,例如 status.conf,内容填上:

server {
listen 80;
server_name yourdomain; # 填写你的域名
location / {
proxy_pass http://localhost:4000/; # 修改你的端口
}
}

保存即可,然后重启 nginx:

Terminal window
systemctl restart nginx

然后我们就可以通过 http://域名 来访问了。


配置 SSL#

使用 http:// 来访问总会显示不安全,我们继续给它配置上 SSL。证书还是通过 acme.sh 来申请。

首先是安装 acme.sh:

Terminal window
# curl 安装
curl https://get.acme.sh | sh -s email=my@example.com
# wget 安装
wget -O - https://get.acme.sh | sh -s email=my@example.com

可以把 email 改成自己的。安装好以后开始申请证书:

如果你没有在上面先配置 nginx 反代,则不能使用这个模式,可以通过 DNS 等其他模式来申请!!!

Terminal window
acme.sh --issue --nginx -d example.com

这里记得把 example.com 改为你的域名。注意这里的域名要和上面配置 nginx 的域名一致,并且域名已解析到服务器上。

接着等待证书申请完毕。成功大致这样(网络上的图):

记录下 certkey 的地址,等会需要填写。

接着重新来到之前 nginx 配置 status.conf 文件里,改为:

server {
listen 443 ssl;
server_name yourdomain; # 你的域名
ssl_certificate /root/.acme.sh/yourdomain/yourdomain.cer; # 你的证书地址
ssl_certificate_key /root/.acme.sh/yourdomain/yourdomain.key; # 证书私钥
location / {
proxy_pass http://localhost:4000/; # 你的端口
}
}
# 下面配置 http 自动跳转 https
server {
listen 80;
server_name yourdomain; # 你的域名
return 301 https://$host$request_uri;
}

保存即可,然后重启 nginx:

Terminal window
systemctl restart nginx

然后我们就可以通过 https://域名 来访问了。


后记#

这个项目可以监控单台服务器,页面美观,而且占比比较小,非常适合监控小型服务器。下面是参考资料:

【VPS折腾记录】Docker部署Ward实时监控
https://hoyue.fun/vps-ward.html
作者
Hoyue
发布于
2022-09-12
最后更新于
2022-09-12
许可协议
CC BY-NC-SA 4.0
评论