#Youtube链接
https://youtu.be/kB6EZOFcUF4
#SmokePing主从模式(不像哪吒等主控端和被控端的安装不一样的程序,SmokePing主控和被控安装的程序是一样的,只是配置不一样;主从模式将被控的数据拉取到主控,这样就可以从主控观察被控)
环境:Debian12 root 端口全开
二进制安装非常复杂,一开始我也是抗拒docker安装的,等我上手之后就后悔了;docker已经将难度降低50%以上,但是仍旧很复杂
如果从易用性出发,请选择哪吒,mynodequery等(我都有视频),但是从装逼性来讲SmokePing排第一,然后是serverstatus(个人排名)
#项目官方网址
https://oss.oetiker.ch/smokeping/
#docker镜像由linuxserver构建
https://github.com/linuxserver/docker-smokeping
#安装必要组件
apt update && apt upgrade -y && apt install curl sudo -y
#安装并设置docker自动启动
curl -sSL https://get.docker.com/ | sh
#添加自动启动
systemctl enable docker && systemctl start docker
#创建工作目录和文件
mkdir -p /home/smokeping/{config,data}
#创建主从模式必要文件(如果你玩单机,可以省略,创建了也没有影响)
touch /home/smokeping/smokeping_secrets && chown 1000:root /home/smokeping/smokeping_secrets && chmod 600 /home/smokeping/smokeping_secrets
权限是一定要改的,不然客户端会拒绝启动
#一键创建docker-compose.yml 文件(其中hostname、PUID、PGID、TZ、ports的8080可以自定义,hostname就是主机名最好改一改,比如叫DMIT、BWH等)
cat > docker-compose.yml << EOF services: smokeping: image: lscr.io/linuxserver/smokeping:latest container_name: smokeping hostname: SmokePing restart: unless-stopped environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai volumes: - /home/smokeping/config:/config - /home/smokeping/data:/data - /home/smokeping/smokeping_secrets:/etc/smokeping/smokeping_secrets ports: - 8080:80 EOF
把smokeping_secrets映射到config文件夹会报错,请按照示例映射
#拉取docker镜像
docker compose pull
#启动容器
docker compose up -d
#配置targets(就是VPS去ping的运营商IP)
/home/config/smokeping/Targets
+ ++ +++ 后面不能跟有空格的词组(比如telecommunication operators要写成telecommunicationoperators),也不能跟中文
menu或者title之后可以跟中文
官方例子在下面连接里面(太复杂啦)
https://oss.oetiker.ch/smokeping/doc/smokeping_examples.en.html
#重启生效,每次修改都要重启
docker compose restart
#下面开始添加被控,先要改一些主控的配置
/home/smokeping/config/Slaves
#+slave2
#display_name=another
#color=00ff00
三个#都要删除,不然报错,还可以添加location字段(比如location=US)
#添加通信密码
/home/smokeping/smokeping_secrets
#主控的targets里面添加被控
slaves = slave1 slave2 (如果有更多的用空个隔开,例子slaves = DMIT BWH Claw Halo)
添加在第一个+前面,这样被控可以用全部的探针;否则被控只能用相应层级的探针
#接下去的配置要去被控端操作
由于是docker安装,主控的配置修改不会立刻反映为被控,需要重启被控的docker,可以通过设定定时任务的方法,周期性重启被控的docker来实现更新
被控操作原文:https://github.com/linuxserver/docker-smokeping/issues/115
#安装必要组件
apt update && apt upgrade -y && apt install curl sudo -y
#安装并设置docker自动启动
curl -sSL https://get.docker.com/ | sh
#添加自动启动
systemctl enable docker && systemctl start docker
#创建工作目录和文件
mkdir -p /home/smokeping/{config,data}
#创建文件/root/run(不可以用cat创建,因为有环境参数)
#!/usr/bin/with-contenv bash if [ -a /config/MasterUrl ] && [ -a /config/SlaveSecret ]; then chmod 600 /config/SlaveSecret chmod 600 /config/MasterUrl if [ ! -d /var/smokeping ]; then mkdir /var/smokeping fi chown abc:abc /var/smokeping chmod 755 /var/smokeping masterurl=$(cat /config/MasterUrl) exec s6-setuidgid abc /usr/sbin/smokeping --master-url=$masterurl --cache-dir=/var/smokeping --shared-secret=/config/SlaveSecret else exec s6-setuidgid abc /usr/sbin/smokeping --config="/etc/smokeping/config" --nodaemon 这里很多坑都踩过了,请谨慎修改 #!/usr/bin/with-contenv bash if [ -a /config/MasterUrl ] && [ -a /config/SlaveSecret ]; then chmod 600 /config/SlaveSecret chmod 600 /config/MasterUrl if [ ! -d /var/smokeping ]; then mkdir /var/smokeping fi chown abc:abc /var/smokeping chmod 755 /var/smokeping masterurl=$(cat /config/MasterUrl) exec s6-setuidgid abc /usr/sbin/smokeping --config="/etc/smokeping/config" --master-url=$masterurl --cache-dir=/var/smokeping --shared-secret=/config/SlaveSecret --nodaemon fi
#创建Dockerfile
cat > Dockerfile << EOF FROM lscr.io/linuxserver/smokeping:latest COPY run /etc/services.d/smokeping/run RUN chmod +x /etc/services.d/smokeping/run EOF #创建docker-compose.yml 文件(其中hostname、PUID、PGID、TZ、ports的8080可以自定义,hostname必须和主控端Slaves和smokeping_secrets里面设定的VPS名称一致) cat > docker-compose.yml << EOF services: smokeping-slave: build: context: . dockerfile: Dockerfile container_name: smokeping-slave hostname: home restart: unless-stopped environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai volumes: - /home/smokeping/config:/config - /home/smokeping/data:/data ports: - 8080:80 EOF
#重新构造镜像
docker compose build
#启动容器
docker compose up -d
#创建SlaveSecret
cat > /home/smokeping/config/SlaveSecret << EOF
这里直接输入主控里面给这个vps分配的密码
EOF
cat > /home/smokeping/config/smokeping_secrets << EOF
这里直接输入主控里面给这个vps分配的密码
EOF
#创建MasterUrl
cat > /home/smokeping/config/MasterUrl << EOF
http://主控的ip加端口号/smokeping/smokeping.cgi
EOF
#重启生效,每次修改都要重启
docker compose restart
#关闭容器
docker compose down
#查看日志
docker logs -f smokeping-slave
#进入容器
docker exec -it smokeping-slave /bin/bash
#退出容器
exit
ls -l /config/smokeping_secrets
ls -l /etc/smokeping/smokeping_secrets
#反代端口
#安装 caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl && curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg && curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list && sudo apt update && sudo apt install caddy
#默认配置文件目录
/etc/caddy/caddyfile
//配置文件
example.com {
reverse_proxy 127.0.0.1:8080
}
#测试配置文件
caddy validate –config /etc/caddy/Caddyfile
#启动服务端
caddy run –config /etc/caddy/Caddyfile
//得到“certificate obtained successfully ” “releasing lock”
#关闭caddy
ctrl+c
#后台运行caddy:
caddy start –config /etc/caddy/Caddyfile
caddy常用指令:
前台运行caddy:
caddy run
后台运行caddy:
caddy start
停止caddy:
systemctl stop caddy
重载配置:
caddy reload