IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    云服务器docker搭建自动领京豆bot互动指令

    张三的网络日志发表于 2021-04-30 22:49:08
    love 0

    使用docker部署自动领金豆bot脚本

    使用的版本:

    服务器:centos 8

    docker: 20.10.6

    docker-compose: 1.27.4

    1、服务器安装docker,docker-compose

    推荐使用centos服务器安装docker、docker-compose

    Docker安装

    • 国内一键安装 curl -sSL https://get.daocloud.io/docker | sh
    • 国外一键安装 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

    docker-compose安装

    $ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    要安装其他版本的 Compose,请替换 1.24.1。

    最新发行的版本地址:https://github.com/docker/compose/releases。

    将可执行权限应用于二进制文件:

    $ sudo chmod +x /usr/local/bin/docker-compose

    创建软链:

    $ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

    通过docker-compose version查看docker-compose版本,确认是否安装成功。

    2、安装jd_scripts

    创建一个目录jd_scripts用于存放备份配置等数据,迁移重装的时候只需要备份整个jd_scripts目录即可

    需要新建的目录文件结构参考如下:

    jd_scripts
    ├── logs
    │   ├── XXXX.log
    │   └── XXXX.log
    ├── my_crontab_list.sh
    └── docker-compose.yml
    
    • jd_scripts/logs建一个空文件夹就行
    • jd_scripts/docker-compose.yml 参考内容如下(自己动手能力不行搞不定请使用默认配置):

    根据文档一步一步下去就ok了,下面主要记录下可能用到的命令

    目录文件配置好之后在 jd_scripts目录执行。
    docker-compose up -d 启动(修改docker-compose.yml后需要使用此命令使更改生效);
    docker-compose logs 打印日志;
    docker-compose logs -f 打印日志,-f表示跟随日志; docker logs -f jd_scripts 和上面两条相比可以显示汉字; docker-compose pull 更新镜像;
    docker-compose stop 停止容器;
    docker-compose restart 重启容器;
    docker-compose down 停止并删除容器;

    3、开代理机器,激活tg-bot

    这里是个大坑,拿个小本本记下来,其实就是docker内代理宿主机代理的问题

    由于众所周知的原因,国内的机器不能访问tg,而又想使用tg-bot来控制,无奈,国外机子太贵(穷),最低也要5美刀!遂买国内机子开代理使用

    1、买国内机器,推荐大厂的

    这里应该放各大厂的aff的,留个坑

    2、安装clash

    一直在使用clash,直接网上搜索clash下载,找到对应版本下载,博主用的是centos,下载linux-amd64的

    1、下载clash,最新版本可去官网找

    wget https://github.com/Dreamacro/clash/releases/download/v0.19.0/clash-linux-amd64-v0.19.0.gz
    

    2、解压

    gzip -d clash-linux-amd64-v0.19.0.gz
    

    3、移动至usr/bin/clash并重命名为clash

    sudo mv clash-linux-amd64-v0.19.0 /usr/bin/clash
    

    4、赋予clash运行权限

    sudo chmod +x /usr/bin/clash
    

    5、检查是否安装成功

    clash -v 
    
    3、创建配置文件、安装控制面板

    1.创建配置文件目录

    mkdir -p /etc/clash/
    

    2.进入目录

    cd /etc/clash/
    

    3.创建配置文件

    vim config.yaml
    

    4.手动编辑很麻烦,可用winscp上传

    配置参数自行查找

    5.下载前端代码

    wget https://github.com/Dreamacro/clash-dashboard/tree/gh-pages
    

    6.解压

    unzip gh-pages.zip
    

    7.修改目录名,这里的目录名是上面配置文件里的 external-ui: dashboard

    mv clash-dashboard-gh-pages dashboard
    

    可用这个面板远程控制

    4、设置clash开机启动

    1.创建service文件

    sudo vim /usr/lib/systemd/system/clash.service
    

    2.输入下面代码

    [Unit]
    Description=clash proxy
    After=network.target
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/clash -d /etc/clash
    
    [Install]
    WantedBy=multi-user.target
    

    3.重新加载 systemd 模块

    sudo systemctl daemon-reload
    

    4.启动Clash

    sudo systemctl start clash.service
    

    5.设置Clash开机自启动

    sudo systemctl enable clash.service
    

    6.判断是否成功开启代理

    curl -I https://www.google.com
    

    返回200即表示代理已经成功

    5、自动更新订阅配置文件

    通过shell脚本自动更新Clash在线配置

    通过systemctl来管理Clash的进程,对应clash.service文件,通过两个脚本start-clash.sh和stop-clash.sh来管理Clash的启停:

    把上面的配置文件修改下:

    vim /usr/lib/systemd/system/clash.service
    
    [Unit]
    Description=clash proxy
    After=network.target
    
    [Service]
    WorkingDirectory=/当前用户目录/.config/clash
    Type=simple
    ExecStart=/当前用户目录/.config/clash/start-clash.sh
    ExecStop=/当前用户目录/.config/clash/stop-clash.sh
    Environment="HOME=/当前用户目录"
    Environment="CLASH_URL=你的订阅链接"
    
    [Install]
    WantedBy=multi-user.target
    
    vim /当前用户目录/.config/clash/start-clash.sh
    
    #!/bin/bash
    # save this file to ${HOME}/.config/clash/start-clash.sh
    
    # save pid file
    echo $$ > ${HOME}/.config/clash/clash.pid
    
    diff ${HOME}/.config/clash/config.yaml <(curl -s ${CLASH_URL})
    if [ "$?" == 0 ]
    then
        /usr/bin/clash
    else
        TIME=`date '+%Y-%m-%d %H:%M:%S'`
        cp ${HOME}/.config/clash/config.yaml "${HOME}/.config/clash/config.yaml.bak${TIME}"
        curl -L -o ${HOME}/.config/clash/config.yaml ${CLASH_URL}
        /usr/bin/clash
    fi
    
    vim /当前用户目录/.config/clash/stop-clash.sh
    
    #!/bin/bash
    # save this file to ${HOME}/.config/clash/stop-clash.sh
    
    # read pid file
    PID=`cat ${HOME}/.config/clash/clash.pid`
    kill -9 ${PID}
    rm ${HOME}/.config/clash/clash.pid
    

    配置添加完成后,如果你的clash 正在运行中,需要重新加载配置文件并重启

    $ systemctl daemon-reload
    $ sudo systemctl restart clash.service
    

    这样每次启动clash时就会自动更新配置文件了,接下来通过crontab 自动重启 clash.service实现自动更新节点

    #新建shell文件
    vim restart-clash.sh
    

    新增一条命令

    #/bin/sh
    sudo systemctl restart clash.service
    
    chmod +x restart-clash.sh
    crontab -e
    #插入下面命令
    #每3小时重启一次
    0 */3 * * * restart-clash.sh
    #每分钟重启一次
    * * * * * restart-clash.sh
    

    大功告成,可通过tail -500f /var/log/cron查看定时任务是否执行

    sudo systemctl status clash.service 查看是否重启成功

    4、docker内开代理

    由于主要用来使用tg-bot,故只检测tgapi即可

    1、判断宿主机可连接tgapi

    curl -sX POST "https://api.telegram.org/bot'''Your Token'''/sendMessage" -d "chat_id="Some Chat id"&text=hello"
    
    curl -sX POST "https://api.telegram.org/botxxxxxxxxugt5A/sendMessage" -d "chat_id=48xxxxxx&text=hello"
    

    如果返回成功,即表示成功

    2、进入容器

    docker exec -it jd_scripts /bin/sh
    

    执行步骤1命令,如若响应时间长或失败,则需要配置代理

    3、配置容器代理走宿主机

    docker官方有教程

    docker版本大于 17.07以上可用下面的方法

    cd
    mkdir .docker
    vim  ~/.docker/config.json
    

    填入下面json

    {
     "proxies":
     {
       "default":
       {
         "httpProxy": "http://172.17.0.1:7890",
         "httpsProxy": "http://172.17.0.1:7890",
         "noProxy": "localhost,127.0.0.1"
    "
       }
     }
    }
    

    保存文件创建或者启动新容器时才生效

    这里有个大坑,搞了一天,就是

    代理的ip一定要写对!

    代理的ip一定要写对!

    代理的ip一定要写对!

    下午调试的时候https的写成了127的了,机器启动起来,pull代码的时候,直接找不到文件,当时还骂这破代理,没法,就把报错ip不走代理了,没想到下面不报错了,直接无限重启,搞得头都大了,还在想是不是内存爆了呢!晚上,打开配置文件,定睛一看,WC!“httpsProxy"端口写的127…赶紧改了,重新跑遍,妥了,bot成功了!

    4、删除容器,重新启用

    接下来在jd_scripts 目录内

    docker-compose down
    docker-compose up -d
    

    启动成功后,tgbot即可收到成功的消息,尽情享用吧!

    Clash相关的管理命令

    ## 启动Clash ##
    sudo systemctl start clash.service
    
    ## 重启Clash ##
    sudo systemctl restart clash.service
    
    ## 查看Clash运行状态 ##
    sudo systemctl status clash.service
    
    ## 实时滚动状态 ##
    sudo journalctl -u clash.service -f
    

    docker相关命令

    docker exec -it jd_scripts /bin/sh -c 'git -C /scripts pull && node /scripts/jd_bean_change.js' 手动运行一脚本

    docker exec -it jd_scripts /bin/sh -c 'env' 查看设置的环境变量

    docker exec -it jd_scripts /bin/sh -c 'crontab -l' 查看已生效的crontab_list定时器任务

    docker exec -it jd_scripts sh -c "docker_entrypoint.sh" 手动更新jd_scripts仓库最新脚本

    docker exec -it jd_scripts /bin/sh 仅进入容器命令

    rm -rf logs/*.log 删除logs文件夹里面所有的日志文件

    • [1] jd_docker
    • [2] clash安装参考
    • [3] docker内代理参考
    • [4] clash自动更新订阅配置


沪ICP备19023445号-2号
友情链接