Giter Club home page Giter Club logo

docker_ttnode's Introduction

视频教程

youtube 哔哩哔哩

视频教程比较详细,欢迎大家点赞订阅支持一下

特别说明

目前甜糖官方已经提供了docker方案,建议大家尽量使用甜糖官方docker镜像,使用本项目不能确保获取及时的更新。如果只想使用本镜像的自动收割星愿和自动提现的功能,可以把环境变量DISABLE_TTNODE设置成1,参考代码:

docker run -itd \
  -v /your/cache/path:/mnts \
  -e DISABLE_TTNODE=1 \
  -p 1043:1043 \
  --name ttnode \
  --restart=always \
  ericwang2006/ttnode:alpine

alpine版本

  • 基于官方OpenWrt程序构建
  • 多架构支持(x86 arm32 arm64均为原生程序)
  • 更新后uid会发生变化
  • 需要删除.yfnode/config目录,再升级容器,原有缓存才能使用
  • 缓存下载还是一如既往的慢(几天没有缓存也属于正常)

请充分了解以上事项后再决定是否更新,当然欢迎测试并反馈问题。此版本属于测试版,不排除有较多bug。 使用方法和老版本相同,只是需要把代码中的ericwang2006/ttnode替换成ericwang2006/ttnode:alpine

甜糖星愿镜像

  • 基于debian:stable-slim构建
  • 多架构支持,目前支持linux/amd64,linux/arm/v7,linux/arm64(其中amd64镜像内部使用QEMU模拟arm32目前全部架构下都是原生支持)
  • 去除了crontab任务,改用脚本监控ttndoe进程
  • 提供网页控制面板查询UID,设置通知参数,只需访问 http://容器IP:1043 ,网页的web服务使用thttpd,一个开源的轻量级的HTTP服务,只有100多K
  • docker日志中直接查询UID
  • docker日志中直接查看UPNP端口号
  • 显示可替代端口转发的iptables命令(仅供高级用户使用)
  • 自动收取星愿,基于Shell脚本,参见自动收取星愿配置说明(SHELL脚本参考了yjce1314大神的代码
  • 自动使用加成卡功能,感谢houfukude
  • 完全开源

使用条款

  • 本程序唯一发布地址https://github.com/ericwang2006/docker_ttnode
  • 本程序仅用于测试和学习研究目的,不能保证其准确性,有效性,可用性和可靠性, 本作者对使用此程序带来的任何直接或间接的损失不承担任何责任
  • 请勿将本程序的任何内容用于商业或非法目的,否则后果自行承担
  • 作者保留随时更改或补充此使用条款的权利
  • 一旦您开始使用本程序则视为您已接受此使用条款

食用方法

如果是arm架构(例如N1盒子),可直接使用,如果是x86平台,是不支持arm架构镜像,因此我们可以运行一个新的容器让其支持该特性。 已经实现多架构自适应,这步可以省略了。以后只要无脑docker pull ericwang2006/ttnode,就是这么方便。

docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

方法一

打开混杂(这步可以省略,如果不能正常工作再打开)

ip link set eth0 promisc on

创建网络(自行替换网关以及网段)

docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.88 -o parent=eth0 -o macvlan_mode=bridge macnet

运行容器(自行替换路径、IP以及可选替换dns)

docker run -itd \
  -v /mnt/data/ttnode:/mnts \
  --name ttnode \
  --hostname ttnode1 \
  --net=macnet --ip=192.168.2.2 --dns=114.114.114.114 --mac-address C2:F2:9C:C5:B2:94 \
  --privileged=true \
  --restart=always \
  ericwang2006/ttnode

方法二: 直接主网络运行(替换路径)

docker run -itd \
  -v /mnt/data/ttnode:/mnts \
  --name ttnode \
  --hostname ttnode1 \
  --net=host \
  --privileged=true \
  --restart=always \
  ericwang2006/ttnode

方法三: docker-compose

version: '2'

services:     
  ttnode:
    image: ericwang2006/ttnode
    container_name: ttnode
    hostname: ttnode1
    privileged: true
    restart: always
    mac_address: C2:F2:9C:C5:B2:94
    dns: 114.114.114.114
    networks: 
      macvlan:
        ipv4_address: 192.168.2.2
    volumes:
      - /mnt/data/ttnode:/mnts

networks:
  macvlan:
    driver: macvlan
    driver_opts:
      parent: eth0
    ipam:
      config:
        - subnet: 192.168.2.0/24
          gateway: 192.168.2.1

进入容器:

docker attach ttnode
or
docker exec -it ttnode /bin/bash 

查询UUID:

  • 浏览器地址栏输入 http://容器IP:1043 (推荐)

  • 容器内执行/usr/node/ttnode -p /mnts

  • 容器外执行docker logs ttnode

环境变量

名称 说明 说明
DISABLE_ATUO_TASK 自动收星愿 1 禁用 非1 启用
DISABLE_CONTROL_PANEL 控制面板 1 禁用 非1 启用
DISABLE_IPDBCF 禁用ipdbcf进程 1 禁用ipdbcf进程 非1 不做任何处理
DISABLE_TTNODE 禁用甜糖服务 1 禁用甜糖服务,仍可使用自动收割星愿和自动提现的功能 非1 不做任何处理

FAQ

  1. 怎么多开?

    使用方法一macvlan,友情提示:不是开得越多越好。

  2. 主路由就是docker宿主机,为啥macvlan用不了?

    劝你们放过软路由吧,如果不服到恩山翻翻其他大神的贴子,有解决方案,但是路由器真的不是这么玩的。

  3. 升级镜像如何保持uid不变?

    uid和mac地址,hostname高度相关,缓存目录也尽可能和原来保持一致,建议按照以下步骤操作,如果不幸uid还是变化了,那就随缘吧。

    • 记录原来的mac地址,hostname和缓存目录(hostname可以进入容器执行hostname命令获取)
    • 记录/config/config.json文件中的配置参数
    • 删除原来容器
    • 执行docker pull ericwang2006/ttnode获取最新镜像
    • 创建新的容器,mac地址,hostname和缓存目录要和原来一样
    • 更新了最新的镜像后,配置参数可以在控制面板中设置
    • 建议将/config目录映射到宿主机目录,下次再更新就不需要设置配置参数了
    • 即使uid发生了变化也不要紧,只要缓存目录不变,在手机客户端重新绑定新的uid就可以了
  4. 我不用自动收割星愿,不用控制面板,可以不启用这两项功能吗?

    参看环境变量,如果你不懂啥叫环境变量,那就开着吧,基本不占用啥资源。

  5. 为什么我是优质网络,但却一直没有流量?

    CDN流量去如黄鹤,来如晨风。玩玩就好,何必认真。

  6. 内存占用过多,机器跑死

    执行下面命令限制一下容器内存,其中ttnodeA是容器名称,1024M是限制内存使用的上限,这个参数要根据自己机器配置调整。

docker update ttnodeA --memory-swap -1 -m 1024M

已知问题

  • 日志中会提示cannot create /proc/sys/net/core/wmem_max: Directory nonexistent,是因为在docker中不能设置Linux内核参数,不影响使用
  • docker中ttnode第一次启动后大约20秒后有自动退出的概率,不用理会,脚本会再次启动ttnode(这是由于ttnode自动升级导致的)
[2020-11-18 10:25:12] ttnode进程不存在,启动ttnode,
/bin/sh: 1: cannot create /proc/sys/net/core/wmem_max: Directory nonexistent,
如果不能自动发现设备,请将此UID e1c8191de1e1e16a67e05ab3d7bc86ba 生成二维码并用甜糖客户端扫描添加,
[2020-11-18 10:25:34] ttnode启动失败,再来一次,
/bin/sh: 1: cannot create /proc/sys/net/core/wmem_max: Directory nonexistent,
  • 在x86架构下,重新创建容器,即使是同样的IP和mac地址,也会导致ttnode的uid变化 根据日志utility.cpp(2511)-GetMacFromIfreq: ioctl error = 19!推测,ttnode内部应该是使用ioctl函数来获取mac地址的,在qemu中不支持ioctl调用是个已知问题 可以参考这里,这个问题可以用下面的方法证实

     $ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes -c yes
     $ docker run --privileged -t -i armv7/armhf-ubuntu /bin/bash
     $ apt-get update
     $ apt-get install uml-utilities
     $ tunctl
     Unsupported ioctl: cmd=0x400454ca
     TUNSETIFF: Function not implemented
    

    这个问题目前有了最新进展,经过多次测试发现ttnode的uid和以下因素同时相关

    • hostname
    • 网卡的mac地址

    由于此前创建docker容器时并未指定hostname,所以每次创建容器都是随机的hostname,导致出现了随机的uid,目前已经修改了相关示例代码,创建容器时指定了hostname

  • 在x86架构下,UPnP功能无效,需要手动在路由器上做端口转发 最新的方案改用qemu模拟arm32架构(原来是模拟arm64架构),大大改善了x86下路由器UPnP不生效的问题,如果使用最新镜像UPnP还是有问题,请继续使用端口映射的方案

  • ericwang2006/ttnode:x86_arm64这个镜像是x86架构下模拟arm64,据说这种模式效率高,我还没有很好的方法测试,UPnP是确定不支持,其它问题未知,不建议普通用户碰

特别说明

2021年3月30日测试,ipdbcf文件已经不会自动自动下载并运行了,新版本镜像默认将不再处理ipdbcf的行为,如果需要,请参看环境变量DISABLE_IPDBCF。

2021年3月19日官方升级了新版本(v194),使用之前的镜像会报错sh: 1: /mnts/ipdbcf: Exec format error,目前最新镜像已经做了针对性修改,但请知悉以下问题

  1. 这个错误目前只涉及x86架构设备,arm架构(玩客云,N1,树莓派等)设备不受影响。

  2. 请尝试更新GMT+8 2021-03-21 10:00:00后的最新镜像,注意不要使用国内的docker的镜像服务器(缓存更新缓慢,不能保证下载到的是最新版本),如果无法拉取最新版本可以尝试我发布的离线镜像 https://wws.lanzous.com/b01zvsbwj 密码:h92y

  3. 关于x86架构镜像长时间运行后CPU和内存占用过高的说明

    一句话,都是ipdbcf惹的祸。

    • ipdbcf的作用目前尚不明确,由ttnode进程动态下载到/mnts目录并启动,未监听任何端口

    • ttnode进程每分钟会检查一次ipdbcf进程是否存在,如果没有会尝试启动

    • 在arm架构下ipdbcf进程只会启动一个,不会占用过多资源

    • 在x86架构下,使用qemu模拟器运行,ttnode似乎不能判断ipdbcf进程是否存在,所以会不断启动新的ipdbcf进程(猜测)

    • 目前暂时用了点雕虫小技把ipdbcf禁用了,副作用尚不明确

    • x86架构下,使用qemu模拟器运行ttnode非官方建议做法,不能保证完美运行,且用且珍惜

    • 也希望官方尽早推出x86原生程序,x86设备众多,性能和稳定性都有一定优势

如果觉得还有点用,麻烦用一下我的邀请码631441,有加成卡15张,我也有推广收入

docker_ttnode's People

Contributors

dellear avatar ericwang2006 avatar houfukude avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

docker_ttnode's Issues

docker-compose里面的macvlan没看懂........

就是设置ip的部分没看明白
ip段应该填宿主机同ip段还是不同?比如我宿主机是192.168.1.15,那macvlan里应该写192.168.1.x还是192.168.2.x ???

另外docker-compose就不用开混杂吧?

配置文件和缓存位置

配置完以后配置文件和缓存位置都在/mnt下,手机客户端显示的缓存大小是/mnt的大小,第三行代码改成 -v /mnts:/mnts \后手机客户端显示成了挂载的/mnts大小

更改映射目录后提示cannot access

如题,我是在unraid中以docker方式安装的,安装命令如下:
docker run -itd
-v /mnt/data/ttnode:/mnt/user/appdata/ttnode
-v /config:/mnt/user/appdata/ttnode/config
--name ttnode
--hostname ttnode4125B
--net=host
--privileged=true
--restart=always
ericwang2006/ttnode

然后容器倒是启动了,但甜糖不工作,在日志中出现如下错误:storage [/mnts],dev [/mnts] cannot access
挂载目录出错
请问应该如何解决?谢谢指教!

请问 爱快docker运行无法获取UID,无法绑定,怎么回事

=======爱快docker运行无法获取UID。
=======日志提示:
root@ttnode:/usr/node# ./start.sh

[ ok ] Starting periodic command scheduler: cron.
[2021-03-20 12:33:10] ttnode进程不存在,启动ttnode
./start.sh: line 93: /usr/node/ttnode: cannot execute binary file: Exec format error
/usr/node/qr.sh: line 21: /usr/node/ttnode: cannot execute binary file: Exec format error
获取二维码失败
[2021-03-20 12:33:10] 正在获取端口信息...

=======容器IP:1043 页面也是无法获取 提示 玩命加载中

请问,我这里提示:ttnode进程不存在,启动ttnode........

===================================================================
-18 02:37:22] 正在获取端口信息...
annot create /proc/sys/net/core/wmem_max: Directory nonexistent
-18 02:37:42] ttnode进程不存在,启动ttnode
1.0.0.188
257fee0a85bc------------be1b

ericwang2006.github.io/docker_ttnode/qrgen.htm?str=21257fee0a85bc8f------------be1b

===================================================================
-18 02:37:43] 正在获取端口信息...
annot create /proc/sys/net/core/wmem_max: Directory nonexistent
-18 02:38:03] 正在获取端口信息...
-18 02:38:23] 正在获取端口信息...

-18 02:38:43] 如果UPNP失效,请在路由器上对下列端口做转发

8
8
2
2

在r2s的openwrt 的docker下运行失败了- -

报错信息如下:Containers: start ttnode...code:500 OCI runtime create failed: container_linux.go:370: starting container process caused: process_linux.go:338: getting the final child's pid from pipe caused: EOF: unknown

openwrt版本:Powered by LuCI openwrt-18.06 branch (git-21.050.58382-e3dad08) / ArgonTheme v1.7.1 / ImmortalWrt 18.06-SNAPSHOT r0-55d533fb

openwrt的docker版本:20.10.2-1
openwrt的dockerman版本:v0.4.7-leanmod

求大佬做个32位版

在hub.docker.com找了一圈大多是适配n1的arm64位docker

现在玩客云也可以 刷armbian挂甜糖了 就是没有32位镜像。。

大佬可否有空做一个

执行 ./usr/node/ttnode -p /mnts后有报错,麻烦大神看下

./usr/node/ttnode -p /mnts

执行缓存路径指定后报错误

version: 1.0.0.188
2021-02-25 14:41:03.119 utility.cpp(2511)-GetMacFromIfreq: ioctl error = 19!
2021-02-25 14:41:03.121 utility.cpp(2511)-GetMacFromIfreq: ioctl error = 19!
uid = 145461c77e71b03b2d28897fbe5669ed
2021-02-25 14:41:03.130 node [145461c77e71b03b2d28897fbe5669ed,/mnts] exist,error = 11
请问对运行有影响吗? 还是我哪里配置有问题,谢谢

运行环境
X86
操作系统
centos7.6
内核
5.4.100-1.el7.elrepo.x86_64

启动脚本
docker run -itd
-v /app/docker/ttnode:/mnts
--name ttnode
--hostname ttnode1
--net=host
--privileged=true
--restart=always
ericwang2006/ttnode

建议把配置信息放到单独的文件夹

建议把配置文件(config.json、crontab_list.sh )放到/config文件夹下,docker使用时,可以把配置目录映射,不必每次重建容器都要重新设置自动收星。

储存大小只显示1GB

32GB u盘只显示1GB,都是按照教程走的,之前用的“会赚钱的软路由]Openwrt下挂docker版甜糖CDN 支持X86/ARM设备 -保姆级原创教程”,这个帖子没问题,请问怎么解决

多个docker容器同时运行,只有一个跑流量

使用的威联通453B mini。j3455的U 16G内存,威联通虚拟机安装openwrt作为主路由,四拨成功上传带宽叠加。在威联通中直接使用container运行三个甜糖,使用负载均衡对应不同ip,镜像缓存目录也挂载到了不同目录。
三个节点都显示优质节点,但是每次都只有一个容器有上传,另外两个就是0,三个容器交替上传。而且跑上传的那个容器还会显示离线,实际从路由看是有上传的,是不支持单线多拨吗?

wget https://cdn.jsdelivr.net/gh/ericwang2006/docker_ttnode/build_dir/ttnode_task.sh这儿报错是什么情况

root@ttnode:/usr/node# wget https://cdn.jsdelivr.net/gh/ericwang2006/docker_ttnode/build_dir/ttnode_task.sh
--2021-01-11 14:16:57-- https://cdn.jsdelivr.net/gh/ericwang2006/docker_ttnode/build_dir/ttnode_task.sh
Resolving cdn.jsdelivr.net (cdn.jsdelivr.net)... 121.18.212.135
Connecting to cdn.jsdelivr.net (cdn.jsdelivr.net)|121.18.212.135|:443... connected.
ERROR: The certificate of ‘cdn.jsdelivr.net’ is not trusted.
ERROR: The certificate of ‘cdn.jsdelivr.net’ doesn't have a known issuer.

爱快软路由Docker跑甜糖的问题

在爱快软路由中跑docker甜糖有3个问题
1.缓存大小一直为0
2.持续运行24小时以上可能会出现离线状态并且持续好几个小时依然是离线状态重启docker中的甜糖服务则重新上线。
3.给docker中的甜糖服务分配512M内存持续运行24小时以上内存占用380M但是缓存大小一直为0。甜糖直接使用内存对外提供服务?

未配置网络

有台腾讯云 S4,用来跑自己的一个小工具 web,没啥性能需求,然后发现甜糖这种东西,想在上面跑,虽然带宽才 1Mbps。
按照方法二运行绑定后,状态如下图
https://sm.ms/image/2cofr1WDbTXBkVn

麻烦大佬补充一个云主机下运行方法?

断网后uid失效

arm64和x86似乎都存在这个问题,断网后重新连接,客户端已经绑定的设备永远处于未配置网络状态,局域网扫描一下发现已经生成了新的UID,需要重新绑定,但并非每次断网都会这样。

双宽带配置

我有电信300m和100m,现在我已经配置好了300m宽带,我想把它们都利用上,通过docker,可以的话,你能告诉我怎么做吗。我是想net=macnet --ip 172.111.0.3 --dns=119.29.29.29。然后桥接到我第二个宽带的接口是通过100m的路由器分配的地址。然后100m路由器配置端口转发,但在这以上docker的访问控制里的接口设置就得添加100m的吗?这会导致我原来部署好的甜糖变成多个出口ip。求解如何在单臂路由设备上通过另一个宽带100m的接口来跑甜糖

【求助】我无法安装镜像

root@N1:~# docker pull ericwang2006/ttnode

Using default tag: latest
latest: Pulling from ericwang2006/ttnode
0321b5753c35: Extracting [==================================================>] 25.86MB/25.86MB
9e6d48305a82: Download complete
0e510fdd5797: Download complete
failed to register layer: ApplyLayer exit status 1 stdout: stderr: write /usr/share/zoneinfo/America/Fort_Wayne: no space left on device

然而744开头的那个镜像我能够安装啊😥
root@N1:# docker pull 744287383/linux-arm64-ttnode
Using default tag: latest
latest: Pulling from 744287383/linux-arm64-ttnode
e21d51d128ea: Pull complete
1082593b59bc: Pull complete
Digest: sha256:251270b86ac1334247e7f3a88d303549061ebc6f39d4128fc4e2b7e26272c8ca
Status: Downloaded newer image for 744287383/linux-arm64-ttnode:latest
docker.io/744287383/linux-arm64-ttnode:latest
root@N1:#

3867U OpenWrt5.4.101

Intel(R) Celeron(R) CPU 3867U @ 1.80GHz : 2 Core 2 Thread (CpuMark : 26135.249918 Scores)

报错

stdout: No binfmt support in the kernel.
stdout: Try: '/sbin/modprobe binfmt_misc' from the host

无法收到验证码

#28

出现类似问题,一直在网页面板上填入手机号无法获取验证码

使用环境:Raspberry Pi 4b Ubuntu 18.04

无法启动容器

错误提示Containers: start ttnode...code:500 failed to create default sandbox: namespace creation reexec command failed: exit status 1

r2s 天灵固件

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.