前言

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

【VPS折腾记录】Docker部署code-server实现在线IDE

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

预览图:

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

话不多说直接开始。


准备工作

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

VPS:Japan BGP(xtom机房),有条件的建议选择大陆的服务器,速度会更快。
系统:Debian 11(Linux x86_64)
环境:安装好Docker,Docker Compose等。
我们先确认一下docker是否安装成功,在ssh输入docker -v出现版本号类似页面即可。

最好也更新一下先:

#Ubuntu/Debian
sudo apt-get update
#Centos
yum -y update

部署

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

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

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

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

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

docker images

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

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文件即可。执行下面代码:

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

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

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

配置反向代理

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

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

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。

systemctl restart nginx

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


配置ssl

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

首先是安装acme.sh。

#curl安装
curl https://get.acme.sh | sh -s [email protected]
#wget安装
​wget -O -  https://get.acme.sh | sh -s [email protected]

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

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

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

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

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

记录下cert和key的地址,等会需要填写。

接着我们重新来到之前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。

systemctl restart nginx

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


后记

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

这里的一切都有始有终,却能容纳所有的不期而遇和久别重逢。
最后更新于 2022-09-12