首页
关于
Search
1
AdGuardHome 安装及部署教程
42,168 阅读
2
搭建基于telegram的无限网盘
10,332 阅读
3
关于微软Azure学生白嫖指南
10,260 阅读
4
Oracle开放全部端口并关闭防火墙
10,105 阅读
5
最新Cloudflare免费自选IP教程(非Partner)
9,615 阅读
默认分类
技术搬砖
教学设计
故事奇谈
生活琐事
错题分析
精品软件
登录
Search
标签搜索
docker
张至顺
PHP
图床
Cloudflare
金刚长寿功
内网穿透
PT
qBittorrent
阿里云
onedrive
telegram
代理
青龙
FRP
python
一键
telegraph
ipv6
cf_workers
myedunote
累计撰写
113
篇文章
累计收到
1
条评论
首页
栏目
默认分类
技术搬砖
教学设计
故事奇谈
生活琐事
错题分析
精品软件
页面
关于
搜索到
19
篇与
docker
的结果
2023-11-20
Docker搭建headscale和derp异地组网完整教程
目前国家工信部在大力推动三大运营商发展 IPv6,对家用宽带而言,可以使用的 IPv4 公网 IP 会越来越少。有部分地区即使拿到了公网 IPv4 地址,也是个大内网地址,根本不是真正的公网 IP,访问家庭内网的资源将会变得越来越困难。部分小伙伴可能会选择使用 frp 等针对特定协议和端口的内网穿透方案,但这种方案还是不够酸爽,无法访问家庭内网任意设备的任意端口。更佳的选择还是通过 VPN 来组建大内网。至于该选择哪种 VPN,毫无疑问肯定是 WireGuard,WireGuard 就是 VPN 的未来。WireGuard 目前最大的痛点就是上层应用的功能不够健全,因为 WireGuard 推崇的是 Unix 的哲学,WireGuard 本身只是一个内核级别的模块,只是一个数据平面,至于上层的更高级的功能(比如秘钥交换机制,UDP 打洞,ACL 等),需要通过用户空间的应用来实现。Tailscale 是什么?Tailscale 是一种基于 WireGuard 的虚拟组网工具,和 Netmaker 类似,最大的区别在于 Tailscale 是在用户态实现了 WireGuard 协议,而 Netmaker 直接使用了内核态的 WireGuard。所以 Tailscale 相比于内核态 WireGuard 性能会有所损失,但与 OpenVPN 之流相比还是能甩好几十条街的,Tailscale 虽然在性能上做了些许取舍,但在功能和易用性上绝对是完爆其他工具:开箱即用无需配置防火墙没有额外的配置高安全性/私密性自动密钥轮换点对点连接支持用户审查端到端的访问记录在原有的 ICE、STUN 等 UDP 协议外,实现了 DERP TCP 协议来实现 NAT 穿透基于公网的控制服务器下发 ACL 和配置,实现节点动态更新通过第三方(如 Google) SSO 服务生成用户和私钥,实现身份认证简而言之,我们可以将 Tailscale 看成是更为易用、功能更完善的 WireGuard。Tailscale 是一款商业产品,但个人用户是可以白嫖的,个人用户在接入设备不超过 20 台的情况下是可以免费使用的(虽然有一些限制,比如子网网段无法自定义,且无法设置多个子网)。Tailscale 终究是第三方平台,如该平台发生数据泄露、异常崩溃、服务终止等,就无能为力。或许,我们可以自己建一个类似的私有平台?Headscale 是什么?Headscale 旨在实现一个自托管、开源的Tailscale控制服务器替代方案,可以实现较小范围内和实现单个Tailnet的功能,通常可用于设置为单个组织、家庭或个人使用。一、搭建headscale服务端Headscale 部署很简单,推荐直接在 Linux 主机上安装。<!--理论上来说只要你的 Headscale 服务可以暴露到公网出口就行,但最好不要有 NAT,所以推荐将 Headscale 部署在有公网 IP 的云主机上。-->1.创建相关文件并配置这里需要手动创建 db.sqlite,这是根服务器的数据库文件。另外,还需要下载官网给的配置文件示例,然后需要修改一部分。mkdir -p /home/docker/headscale/config && \ mkdir -p /home/docker/headscale/data && \ touch /home/docker/headscale/data/db.sqlite && \ wget https://github.com/juanfont/headscale/raw/main/config-example.yaml -O /home/docker/headscale/config/config.yaml修改相关配置文件,比如配置文件中配置 127.0.0.1 的话,那么就只能本机访问。这里修改为 0.0.0.0 那么就所有的 ip 都能访问。sed -i 's/127.0.0.1/0.0.0.0/g' /home/docker/headscale/config/config.yaml这将修改以下几个地方# 1. server_url: http://0.0.0.0:8080 # 2. listen_addr: 0.0.0.0:8080 # 3. metrics_listen_addr: 0.0.0.0:9090 # 4. grpc_listen_addr: 0.0.0.0:50443<!--/* 修改配置文件两个注意地方:a、hs的监听端口号,要和docker-compose.yaml里定义的端口一致,默认是8080b、没有部署中继服务器,但derp部分不能删除,把enabled项设为fasle即可,否则后面headscale-webui进行overview时会出现服务器错误。-->其中server_url还需要另外修改:server_url是对外访问和登录的地址,如果你需要使用域名并开启https,那么照我如下配置。如果你仅仅使用ip,那么这个地址修改为ip+端口的方式即可。<!--如果是国内服务器,域名必须要备案-->域名填自己的sed -i 's#http://0.0.0.0:8080#https://headscale.yourname.com#g' /home/docker/headscale/config/config.yaml修改 dns 配置文件,如果不进行修改,那么登录时选择接受服务器的 dns 地址就会出现域名无法解析的情况。注意,这里的 dns 地址可以有多个,如果有需要自行添加即可。sed -i 's/1\.1\.1\.1/119.29.29.29/g' /home/docker/headscale/config/config.yaml客户端可以通过 主机名 + 用户 + 基础域名 访问任意一台终端,所以这里修改下基础域名[根域名],根据自己的实际域名进行填写。域名填自己的sed -i 's/example.com/yourname.com/' /home/docker/headscale/config/config.yaml设置客户端随机端口,这里是听见有说不开机随机端口可能出现只能加入一台客户端的情况,为了保险还是选择开启。sed -i 's/randomize_client_port: false/randomize_client_port: true/' /home/docker/headscale/config/config.yaml可自定义私有网段,也可同时开启 IPv4 和 IPv6:ip_prefixes: # - fd7a:115c:a1e0::/48 - 10.1.0.0/162、启动headscale服务端docker run -d \ --name headscale \ --restart always \ -v /home/docker/headscale/config:/etc/headscale/ \ -v /home/docker/headscale/data:/var/lib/headscale \ -p 8080:8080 \ -p 9090:9090 \ --restart always \ headscale/headscale:0.22.3 \ headscale serve下面是一些相关的命令:以前是 namespace 的概念,现在似乎改为 user 了# 查看用户 docker exec -it headscale headscale users ls # 创建用户 docker exec -it headscale headscale users create hz # 生成apikey docker exec -it headscale headscale apikey create # 查询apikey docker exec -it headscale headscale apikey ls3、搭建web-uidocker run -d \ --name headscale-webui \ --restart always \ -v /home/docker/headscale/config:/etc/headscale/:ro \ -v /home/docker/headscale/web-ui/data:/data \ -u root \ -p 5000:5000 \ -e HS_SERVER=https://headscale.amjun.com \ # -e DOMAIN_NAME=https://headscale.amjun.com \ # 反向代理后的域名,必须要先设置好! -e SCRIPT_NAME=/admin \ -e AUTH_TYPE=Basic \ -e BASIC_AUTH_USER=admin \ -e BASIC_AUTH_PASS=admin \ -e KEY="2uHP6BSVocX+wcWU5mzuXA7JvnZA70UaTadB8L1heOo=" \ --restart always \ ifargle/headscale-webui:latest其中 /home/docker/headscale/config 为上面服务端的映射目录,这两个目录需要一致。HS_SERVER 和 DOMAIN_NAME 填写自己的域名1。KEY 是用来加密待会需要保存的 apikey 的字符串,使用命令 openssl rand -base64 32 生成。接下来需要创建 headscale 服务器的 api-key,这里设置一个比较久的过期时间。4、配置nginx和web-uiNPM配置nginx在 Nginx Proxy Manager 中配置一下反向代理,并且配置下 SSL。需要注意的是,要把 Websockets Support 打开,否则客户端会无法登录。如果 webui 跟 Headscale 使用了同一个域名,需要配置一下 Custom locations。最后访问下 Headscale 的域名,如果返回了 404,说明部署成功。保存配置后重启 nginx,如果配置正确,那么通过 https://域名/admin 应该可以访问到 web-ui 界面,输入容器启动时配置的用户名密码即可进入。宝塔面板Nginx配置server { listen 443 ssl; listen [::]:443 ssl; server_name headscale.amjun.com; ssl_certificate /etc/nginx/conf.d/cert/amjun.com.cer; ssl_certificate_key /etc/nginx/conf.d/cert/amjun.com.key; location ^~/ { proxy_pass http://localhost:8080/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $server_name; proxy_redirect https:// https://; proxy_buffering off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; } location ^~/admin/ { proxy_pass http://localhost:5000/admin/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } server { listen 80; server_name headscale.amjun.com; rewrite ^(.*)$ https://$host:443$1 permanent; }配置web-ui上面提示输入 apikey,这个需要 headscale 服务端生成,这里设置一个比较长的时间,根据自己的需要即可。docker exec -it headscale headscale apikeys create -e 10000d运行命令后将生成的 key 输入,点击 save 即可,概览页面如下:5、创建用户和授权密钥headscale 个人理解是用户就是命名空间,进行网络隔离,所以需要先创建用户。# 创建用户 docker exec -it headscale headscale users create hz授权密码的作用是,客户端登陆时不需要再服务端进行确认,阿蛮君总是喜欢使用简单的方式,所以就选择这种方式了。# reusable 参数代表可以重复使用,不加的话密钥只能用来一个客户端加入 docker exec -it headscale headscale preauthkeys create -e 10000d --reusable -u hz # 查看密钥 docker exec -it headscale headscale preauthkeys list -u hz这里记得记录好授权密钥,下面将会用到。二、搭建Derp服务端由于 Tailscale 官方的 DERP 服务在中国大陆地区并没有服务提供,并且使用的人也非常的多,以至于中继的体验并不好,因此可以自建一个中继服务来改善这个问题。1、使用如下命令即可搭建 derp 服务器:docker run -d \ --name derper \ -p 12345:12345 \ -p 3478:3478/udp \ -e DERP_ADDR=:12345 \ -e DERP_DOMAIN=derper.your-domain.com \ -e DERP_VERIFY_CLIENTS=false \ --restart always \ yangchuansheng/derper有几点需要注意:能用 443 端口尽量用 443 端口,实在不行再用别的端口;默认情况下也会开启 STUN 服务,UDP 端口是 3478;防火墙需要放行端口 12345 和 3478;准备好 SSL 证书;derper.your-domain.com 修改为自己的域名。设置环境变量 DERP_VERIFY_CLIENTS 是为了验证域名,这里考虑到有些人不一定需要所以设置为 false,如果真正自己使用还是建议设置为 true。目前 derper 运行一段时间就会崩溃,暂时还没有更好的解决方案,只能通过定时重启来解决,比如通过 crontab 来设置每两小时重启一次容器:0 */2 * * * docker restart derper &> /dev/null2. 配置nginxserver { listen 443 ssl; listen [::]:443 ssl; server_name derper.your-domain.com; ssl_certificate /etc/nginx/conf.d/cert/your-domain.com/your-domain.com.cer; ssl_certificate_key /etc/nginx/conf.d/cert/your-domain.com/your-domain.com.key; location / { proxy_pass http://localhost:12345/; proxy_redirect https:// https://; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header Content-Security-Policy upgrade-insecure-requests; } } server { listen 80; server_name derper.your-domain.com; rewrite ^(.*)$ https://$host:443$1 permanent; }设置了强制跳转 https,如果有需要可以不设置,如果没有域名请不需要配置。配置修改后,记得重启下 nginx,这里需要使用域名或者 ip + 端口能够访问到 derp 页面。在 Nginx Proxy Manager 中配置一下反向代理,这个也需要开启 Websockets Support ,否则客户端中会无法连接 DERP 服务。如果自建了 DERP 服务,可以把 Tailscale 官方的公共服务禁用,只用自己的服务。修改 config.yaml3. 创建derp.yaml需要告诉 headscale 服务器我们创建的 derp 节点的地址,否则客户端不知道地址将无法使用。如果你是按照我之前的教程搭建的 headscale,那么运行如下命令,否则需要自己注意配置文件的位置。cat << EOF > /home/docker/headscale/config/derp.yaml regions: 900: regionid: 900 regioncode: ts regionname: Tencent Shanghai nodes: - name: 900a regionid: 900 hostname: derper.your-domain.com # ipv4: ip stunport: 3478 stunonly: false derpport: 443 EOF这里的域名替换为自己的域名,如果没配置域名就使用 ip。另外需要注意的是,如果你使用域名配置了 https,那么这里的 derpport 一般填写 443,否则应该使用上面启动容器时指定的 12345 端口。记得开放3478端口!!!regions 是 YAML 中的对象,下面的每一个对象表示一个可用区,每个可用区里面可设置多个 DERP 节点,即 nodes。每个可用区的 regionid 不能重复。每个 node 的 name 不能重复。regionname 一般用来描述可用区,regioncode 一般设置成可用区的缩写。ipv4 字段不是必须的,如果你的域名可以通过公网解析到你的 DERP 服务器地址,这里可以不填。如果你使用了一个二级域名,而这个域名你并没有在公共 DNS server 中添加相关的解析记录,那么这里就需要指定 IP(前提是你的证书包含了这个二级域名,这个很好支持,搞个泛域名证书就行了)。stunonly: false 表示除了使用 STUN 服务,还可以使用 DERP 服务。regions: 901: regionid: 901 regioncode: jp regionname: Aliyun Japan nodes: - name: 901a regionid: 901 hostname: 'derper.yourdomain1.com' ipv4: '' stunport: 3478 stunonly: false derpport: 443 902: regionid: 902 regioncode: cn regionname: Aliyun Guangzhou nodes: - name: 902a regionid: 902 hostname: 'derper.youdomain2.com' ipv4: '' stunport: 3478 stunonly: false derpport: 4434. 修改headscale配置文件修改 config.yaml 文件,paths 指定 derp.yaml 文件的位置,urls 下面的链接是官方提供的中继服务器,根据自己判断是否需要注释。# /etc/headscale/config.yaml derp: # List of externally available DERP maps encoded in JSON urls: # - https://controlplane.tailscale.com/derpmap/default # Locally available DERP map files encoded in YAML # # This option is mostly interesting for people hosting # their own DERP servers: # https://tailscale.com/kb/1118/custom-derp-servers/ # # paths: # - /etc/headscale/derp-example.yaml paths: - /etc/headscale/derp.yaml # If enabled, a worker will be set up to periodically # refresh the given sources and update the derpmap # will be set up. auto_update_enabled: true # How often should we check for DERP updates? update_frequency: 24h修改文件后记得重启 headscale。docker restart headscale5、验证再次执行 netcheck 命令,可以看见自己搭建的 derp 节点,如果是使用国内的服务器搭建,那么一般这个服务器是最近的。# docker 运行的客户端 docker exec -it tailscaled tailscale netcheck # 非 docker 运行的客户端 tailscale netcheck三、客户端安装目前除了 iOS 客户端,其他平台的客户端都有办法自定义 Tailscale 的控制服务器。OS是否支持 HeadscaleLinuxYesOpenBSDYesFreeBSDYesmacOSYesWindowsYes 参考 Windows 客户端文档Android支持,参考 这个 PRiOS暂不支持1、Linux1.1脚本安装curl -fsSL https://tailscale.com/install.sh | sh && \ tailscale login --login-server https://headscale.amjun.com --authkey b6a9b4f4e9c3a7c7e7b9b1a3a6b9e6b7a5e7c2a1e3a0a4a1 --accept-dns=false --accept-routes这里仅仅安装方式不同,登录的命令完全一样1.2Docker安装docker run -d \ --name=tailscaled \ -v /home/docker/tailscale/:/var/lib \ -v /dev/net/tun:/dev/net/tun \ -e TS_STATE_DIR=/var/lib/state/ \ --network=host \ --restart always \ --privileged tailscale/tailscale:v1.44.0 \ tailscaled --tun=tailscale0 -debug=:8088 -no-logs-no-support=true这里需要将 TS_STATE_DIR 指定的文件夹持久化,否则删除容器再新建后,在服务端能看见重复的设备。并且需要指定 --tun=tailscale0,不然似乎不能在宿主机创建网卡。然后使用如下命令进行登录:docker exec tailscaled tailscale login --login-server https://headscale.amjun.com --accept-dns=false --accept-routes=false --authkey b6a9b4f4e9c3a7c7e7b9b1a3a6b9e6b7a5e7c2a1e3a0a4a1 --advertise-routes=172.21.9.0/24,172.30.1.0/24,172.26.1.0/24,172.20.2.0/23根据自己网络情况设置 --advertise-routes,我这是需要通过这台内网机器访问公司其他网络。如果出现如下错误:running [/sbin/ip6tables -t filter -N ts-input --wait]: exit status 3: modprobe: can't change directory to '/lib/modules': No such file or directoryip6tables v1.8.8 (legacy): can't initialize ip6tables table `filter': Table does not exist (do you need to insmod?)Perhaps ip6tables or your kernel needs to be upgraded执行以下命令:# 防止探测ip6table sudo modprobe ip6table_filter1.3 手动安装Tailscale 官方提供了各种 Linux 发行版的软件包,但国内的网络你懂得,软件源根本用不了。好在官方还提供了 静态编译的二进制文件,我们可以直接下载。例如:wget https://pkgs.tailscale.com/stable/tailscale_1.22.2_amd64.tgz解压:tar zxvf tailscale_1.22.2_amd64.tgz将二进制文件复制到官方软件包默认的路径下:cp tailscale_1.22.2_amd64/tailscaled /usr/sbin/tailscaled cp tailscale_1.22.2_amd64/tailscale /usr/bin/tailscale将 systemD service 配置文件复制到系统路径下:cp tailscale_1.22.2_amd64/systemd/tailscaled.service /lib/systemd/system/tailscaled.service将环境变量配置文件复制到系统路径下:cp tailscale_1.22.2_amd64/systemd/tailscaled.defaults /etc/default/tailscaled启动 tailscaled.service 并设置开机自启:systemctl enable --now tailscaled查看服务状态:systemctl status tailscaledTailscale 接入 Headscale:# 将 <HEADSCALE_PUB_IP> 换成你的 Headscale 公网 IP 或域名 tailscale up --login-server=http://<HEADSCALE_PUB_IP>:8080 --accept-routes=true --accept-dns=false这里推荐将 DNS 功能关闭,因为它会覆盖系统的默认 DNS。如果你对 DNS 有需求,可自己研究官方文档,这里不再赘述。执行完上面的命令后,会出现下面的信息:To authenticate, visit: http://xxxxxx:8080/register?key=905cf165204800247fbd33989dbc22be95c987286c45aac303393704 1150d8462、其他 Linux 发行版除了常规的 Linux 发行版之外,还有一些特殊场景的 Linux 发行版,比如 OpenWrt、威联通(QNAP)、群晖等,这些发行版的安装方法已经有人写好了,这里就不详细描述了,我只给出相关的 GitHub 仓库,大家如果自己有需求,直接去看相关仓库的文档即可。OpenWrt: https://github.com/adyanth/openwrt-tailscale-enabler群晖: https://github.com/tailscale/tailscale-synology威联通: https://github.com/ivokub/tailscale-qpkg3、AndroidAndroid 客户端从 1.30.0 版本开始支持自定义控制服务器(即 coordination server),你可以通过 Google Play 或者 F-Droid 下载最新版本的客户端。国内本地下载安装完成后打开 Tailscale App,会出现如下的界面:点开右上角的“三个点”,你会看到只有一个 About 选项:接下来就需要一些骚操作了,你需要反复不停地点开再关闭右上角的“三个点”,重复三四次之后,便会出现一个 Change server 选项:点击 Change server,将 headscale 控制服务器的地址填进去:然后点击 Save and restart 重启,点击 Sign in with other,就会跳出这个页面:将其中的命令粘贴到 Headscale 所在主机的终端,将 NAMESPACE 替换为之前创建的 namespace,然后执行命令即可。注册成功后可将该页面关闭,回到 App 主页,效果如图:docker exec -it headscale headscale nodes register --user hz --key nodekey:xxxx4、Windowstailscale 客户端下载地址:https://tailscale.com/download/4.1 安装客户端下载 windows 客户端并进行安装。4.2 安装注册表访问 https://headscale.amjun.com/windows,可以看见配置的教程。提示需要修改注册表,这里可以直接 curl https://headscale.amjun.com/windows/tailscale.reg 下载文件后,双击运行文件进行安装即可。4.3 登录在 tailscale 的安装目录下使用 cmd 打开,输入命令:tailscale login --login-server https://headscale.amjun.com --authkey b6a9b4f4e9c3a7c7e7b9b1a3a6b9e6b7a5e7c2a1e3a0a4a1 --accept-dns=false --accept-routes这里的 authkey 是第四步生成的,然后在服务器使用命令查看。docker exec -it headscale headscale nodes ls总结目前从稳定性来看,Tailscale 比 Netmaker 略胜一筹,基本上不会像 Netmaker 一样时不时出现 ping 不通的情况,这取决于 Tailscale 在用户态对 NAT 穿透所做的种种优化,他们还专门写了一篇文章介绍 NAT 穿透的原理, 中文版翻译自国内的 eBPF 大佬赵亚楠,墙裂推荐大家阅读。放一张图给大家感受一下:
2023年11月20日
3,022 阅读
0 评论
1 点赞
2023-08-19
Docker的网络代理配置
在国内用docker去拉取image时会很慢, 此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如:阿里云加速器(点击管理控制台 -> 登录账号(淘宝账号) -> 右侧镜像工具 -> 镜像加速器 -> 复制加速器地址)网易云加速器 https://hub-mirror.c.163.com百度云加速器 https://mirror.baidubce.com一、配置加速器vim /etc/docker/daemon.json{ "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ] }注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。之后重新启动服务sudo systemctl daemon-reload sudo systemctl restart docker二、docker pull代理在执行docker pull时,是由守护进程dockerd来执行。 因此,代理需要配在dockerd的环境中。 而这个环境,则是受systemd所管控,因此实际是systemd的配置sudo mkdir -p /etc/systemd/system/docker.service.dsudo touch /etc/systemd/system/docker.service.d/proxy.conf在这个proxy.conf文件(可以是任意*.conf的形式)中,添加以下内容:[Service] Environment="HTTP_PROXY=http://USERNAME:PASSWORD@[your.proxy.server]:[port]" Environment="HTTPS_PROXY=http://USERNAME:PASSWORD@[your.proxy.server]:[port]0" Environment="NO_PROXY=localhost,127.0.0.1,.example.com"之后重新启动服务sudo systemctl daemon-reload sudo systemctl restart docker三、Container代理1、用户级代理vim ~/.docker/config.json{ "proxies": { "default": { "httpProxy": "http://192.168.0.54:7890", "httpsProxy": "http://192.168.0.54:7890", "noProxy": "localhost,127.0.0.1,.example.com" } } }这种方法默认在所有配置修改后启动的容器生效2、容器级代理容器的网络代理,也可以直接在其运行时通过-e注入http_proxy等环境变量。docker-compose的是要配置environment 格式如下:web: environment: HTTP_PROXY: 'http://192.168.0.54:7890' HTTPS_PROXY: 'http://192.168.0.54:7890' NO_PROXY: 'localhost, *.test.lan'四、docker build代理虽然docker build的本质,也是启动一个容器,但是环境会略有不同,用户级配置无效。 在构建时,需要注入http_proxy等参数docker build . \ --build-arg "HTTP_PROXY=http://192.168.0.54:7890" \ --build-arg "HTTPS_PROXY=http://192.168.0.54:7890" \ --build-arg "NO_PROXY=localhost,127.0.0.1,.example.com" \ -t your/image:tag
2023年08月19日
1,172 阅读
0 评论
3 点赞
2023-07-15
青龙面板安装及常见问题解决
支持Python3、JavaScript、Shell、Typescript的定时任务管理平台开源地址:https://github.com/whyour/qinglong一、功能支持多种脚本语言(python3、javaScript、shell、typescript)支持在线管理脚本、环境参数、配置文件支持在线查看任务日志秒级支持任务设置支持系统级通知支持暗黑模式支持手机端操作二、青龙面板安装# curl -sSL get.docker.com | sh docker run -dit \ -v $PWD/ql/data:/ql/data \ -p 5700:5700 \ -e QlBaseUrl="/" \ # 部署路径非必须,以斜杠开头和结尾,比如 /test/ --name qinglong \ --hostname qinglong \ --restart unless-stopped \ whyour/qinglong:latest三、手动安装(在面板里安装的依赖-个人推荐)1、NodeJs下crypto-js prettytable dotenv jsdom date-fns tough-cookie tslib ws@7.4.3 ts-md5 jsdom -g jieba fs ds form-data json5 global-agent png-js @types/node require typescript js-base64 axios moment2、Python3下requests canvas ping3 jieba pycryptodome bs4 rsa PyExecJS aiohttp redis Crypto fake-useragent json53、Linux下bizCode bizMsg lxml libc-dev python3-dev --no-cache build-base g++ cairo-dev gcc pango-dev giflib-dev四、部分依赖问题解决方法1.一般出现这种错误:(缺依赖)Error: Cannot find module ‘xx’2.一般出现这种错误:(缺文件)Error: Cannot find module ‘./xx’解决方法:一般是拉库命令不完整,请检查或复制完整的拉库命令重新拉库。3.一般出现这种错误:(缺py依赖)ModuleNotFoundError: No module named ‘xxx’.py解决方法:docker exec -it 容器名 pip3 install xxx4.遇到这种问题:(脚本问题)TypeError: Cannot read property ‘xxxx’ of undefined这种脚本问题、IP问题、服务器网络、京东接口修改或者账号活动被限制等!导致的脚本无法正常运行。解决方法:此类问题较为复杂根据实际情况解决吧。最好搞动态IP。
2023年07月15日
1,974 阅读
0 评论
1 点赞
2023-07-14
玩客云刷机-玩机教程
玩客云是17年的一款矿渣产品,当时入手价499可以挖矿换话费和备份手机照片、使用迅雷高速下载,阿里云盘出来后不限速,也没有下载需求了,吃灰良久。Armbian是轻量级的Debian系统和为ARM开发板专门发行并重新编译的Debian系统。最近折腾了玩客云刷机Armbian作为Linux的方案,把它最后当做一个下载器和学习Linux的工具来玩了一、玩客云硬件参数CPU是晶晨S805 ,32位,ARM 4核1.5GHz1G(DDR3)+8G(eMMC)两个USB 2.0,HDMI接口,一个千兆网口(RJ45 )二、刷机准备工具WIN10电脑一台矿渣玩客云双公头USB线一根【用于连接电脑和玩客云,用于刷底层包】螺丝刀,一把金属镊子,用来短接用(用金属线也是可以的)闲置 U 盘一个,或者读卡器配合存储卡也行【U盘用于刷 Armbian 系统】晶晨刷机软件 USB Burning Tool,update.img 文件为安卓底包,zip 文件为 armbian 固件三、刷机包基本常识1、**直刷包**:直接刷,刷完就OK可以直接使用优点:(1)方便快捷,不用U盘等工具(2)速度快,省去中间过程缺点:(1)再次刷机可能需要重新短接(2)换系统可能需要重新对emmc进行大量读写2、**底包**:用于对设备进行引导,引导设备启动USB设备上的系统(类似于PE系统),一般搭配U盘刷机包使用优点:(1)可以随便换系统,一个U盘一个系统(2)在没将系统输入emmc之前可以不用拆机缺点:(1)系统性能受限于USB设备与接口,稳定性难绷(USB2.0的接口我也不好说什么了)(2)占用一个USB接口注:如果你将U盘内系统写入emmc的话那基本和直刷包没区别了3、镜像包:直刷包的内包含了系统镜像,直刷直用底包和系统镜像分离,底包包含引导,镜像包包含系统镜像,镜像包也就是U盘刷机包4、选择:如果你身边没有U盘等设备,那肯定只有用直刷包了当然如果你选择的固件只有U盘刷机包那种,那也只能找一个U盘了如果你的数据线或者因为成色而导致直刷用的那个USB接口不稳定,那建议用刷底包的方式底包因为只包含引导或者部分驱动会刷得很快,而直刷包就需要一个漫长的过程,如果不稳定的话就会导致刷机失败以至于要重新刷,那就得不偿失了同样的,如果你用来U盘引导的那个接口不稳定(用来直刷和引导系统的那个接口不一样)所以没有哪个更好的说法,全部看实际情况和你选择的固件包四、刷机教程1、拆机及注意玩客云的拆机十分简单,有接口那一侧,外层塑料挡板是双面胶粘上去的,使用撬棒或者一字批起子之类,从缝隙入手,慢慢转圈撬开即可,挡板弹性挺大, 并不容易搞坏。然而二层挡板就是 6 颗螺丝下掉完事,主板是卡在壳子的卡槽里的,可以捏住 SD 卡槽部分的主板空白位,用点力即可把主板拔出来。2、刷入安卓底包玩客云要刷 armbian 的话,需要先刷一个安卓固件作为过渡包使用USB线一头连接玩客云靠近hdmi接口的usb接口,一头连接至电脑,台式机请连接后面的USB口,暂时不要通电!安装并打开 USB Burning Tool,导入 update.img 镜像,勾选 “擦除flash” 和 “擦除bootloader” 并点击 “开始”【开始】按钮变成显示【停止】状态,此时晶晨刷机工具正在准备刷机,等待设备接入<u>推荐大佬编译的eMMC.burn.img,eMMC.burn.img,启动顺序:U盘—SD卡—eMMC</u><u>关键步骤:先短接触点,再接通玩客云主板电源</u>用啥都行,镊子或者找根导线剥掉两头外皮都可以,玩客云有两种版本,它们的短接位置也是不一样的:短接焊点稳定以后usb插入玩客云「靠近HDMI的接口」、另一头接入电脑usb、通电如果顺利的话,刷机软件会发现设备,自动开始刷入流程。观察电脑上晶晨刷机工具提示。“叮咚”一声,界面开始出现进度条表示短接成功,短接成功还有个显著的提示,就是主板指示灯不会亮。短接失败了也不会怎么样,软件没反应而已,可以放心大胆的多次尝试,如果有错误,换一个usb接口,多试几次这个固件很小,很快就会写完,一般几秒钟,提示烧录成功后,先点”停止“,然后关闭,拔掉电源、拔掉USB。<u>提示:设备短接一次成功刷入底包后,有几率按住重置键烧录</u>直接插双公头usb数据线「靠近HDMI的接口」,先不要接通电源,长按住重置键,再接通电源,发现硬件即可刷机,如果出错1.多试几次 2.换个USB口 3.重启机器 4.换个机器3、U盘先刷入armbian5.88系统打开 balenaEtcher 工具,并选择 armbian5.88.img 镜像,选择写入设备为 U 盘(一定要确认以一下),点击 ”Flash“ 开始写入。等待几分钟,写入速度和U盘传输速度有关,一般是几分钟,提示成功后,关闭软件,拔出U盘。把U盘插入玩客云靠近网口的USB,然后通电,指示灯会蓝色→绿色→蓝紫闪烁→蓝色,证明刷机成功,过程好几分钟,多等下。全程不插入网线,armbian5.88系统写入完成后,直接断电,然后拔u盘4、U盘再刷入armbian5.9系统打开 balenaEtcher 工具,并选择 WKY-Armbian_20.12_5.9.0.img 镜像,选择写入设备为 U 盘(一定要确认以一下),点击 ”Flash“ 开始写入。<u>推荐大佬专用库,一直在更新,Armbian for onecloud. 玩客云用armbian</u>主机名: onecloud 账号: root 密码: 1234<u>提示:</u>这里推荐Armbian_23.11.0-trunk_Onecloud_bookworm_edge_6.4.16_minimal.img.xz,可以安装Dockerbookworm表示Debian12,bullseye表示Debian11,带burn标志的代表可线刷烧录,前提需要先解压armbian5.9系统写入完成后,U盘不要动,用网线接入路由器LAN口,进入路由,查看新加入的设备过一会打开路由器后台,找到”aml-s812“的设备IP地址,复制打开 putty (也可以使用其他工具)输入连接IP地址,默认密码是:1234,第一次登录需要修改一个密码(要包含大写字母、小写字母、数字、符号)。从欢迎信息中可以看到 Linux 5.9.0-rc7-aml-s812 可知目前我们刷写的系统版本为 Armbian 5.9.0。现在系统时从 U 盘启动的,拔掉 U 盘就无法启动了,接下来还需把系统写入到 EMMC 中。想要写入emmc的,下载下面的文件,放入u盘的boot分区:emmc-install整个仓库拉下来,重命名为install,放入boot分区,u盘系统启动后在 SSH 命令面板中输入以下命令cd /boot/install ./install.sh刷入系统时灯会 蓝 / 紫 闪烁,表示正在写入 EMMC完成后,拔电源,拔掉U盘,终于ARMBIAN系统刷机完成。启动完成即可用你刚刚设置的密码登陆进去了。五、安装Docker1、换Debian源mv /etc/apt/sources.list /etc/apt/sources.list.bk vi /etc/apt/sources.list2、粘贴deb https://mirrors.ustc.edu.cn/debian/ bullseye main non-free contrib deb-src https://mirrors.ustc.edu.cn/debian/ bullseye main non-free contrib deb https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main deb-src https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main deb https://mirrors.ustc.edu.cn/debian/ bullseye-updates main non-free contrib deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-updates main non-free contrib deb https://mirrors.ustc.edu.cn/debian/ bullseye-backports main non-free contrib deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-backports main non-free contrib可以进入清华大学Debian软件源官网定制源更新源报错的解决方法(E: The repository 'http://apt.armbian.com stretch Release' does not have a Release file.)编辑 /etc/apt/sources.list.d/armbian.list,将 http://apt.armbian.com 替换为以下链接https://mirrors.tuna.tsinghua.edu.cn/armbian或者可以由以下命令完成sed -i.bak 's#http://apt.armbian.com#https://mirrors.tuna.tsinghua.edu.cn/armbian#g' /etc/apt/sources.list.d/armbian.list3、保存并更新软件apt-get update && apt-get upgrade4、安装Dockerdocker和iptables不兼容,建议安装前执行update-alternatives --set iptables /usr/sbin/iptables-legacy update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy如果报错:update-alternatives: error: no alternatives for iptables尝试更新iptables再执行以上两行命令apt install iptables完成之后,执行Docker安装可视化一键脚本bash <(curl -sSL https://linuxmirrors.cn/docker.sh)5、安装Docker面板docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data 6053537/portainer-ce:2.19.0@sha256:df464e724255c2c3db304b343bec82d4510e507c77893e8ed61e122b9fa42bf1六、安装FRPC客户端内网穿透1、创建frp.ini文件并创建目录mkdir /frp vim /frp/frpc.ini2、编辑frpc.ini配置文件[common] server_addr = x.x.x.x server_port = 7000 token = XXXXX [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 60003、拉取镜像docker pull snowdreamtech/frpc4、启动docker容器docker run --restart=always --network host -d -v /frp/frpc.ini:/etc/frp/frpc.ini --name frpc snowdreamtech/frpc七、永久性挂载硬盘1、查看硬盘名称fdisk -l查看刚刚接入的U盘/硬盘并记下其设备名称Device:对应硬盘名称 -Size:对应硬盘大小- Type:对应硬盘格式2、格式化硬盘Linux硬盘格式需要Etx4,我这个硬盘已经格式化了,再演试一次,使用命令:mkfs -t ext4 /dev/sda1 #格式化硬盘选择ext4文件系统此过程会提示Proceed anyway? (y,N),问你是否继续格式化,输入y回车继续,后面提示其它回车就OK3、挂载硬盘/U盘接下来开始挂载硬盘,查看硬盘的UUID,输入:blkid 硬盘名称(例如blkid /dev/sda1)UUID="这里面就是UUID"复制下来使用ftp工具连接玩客云找到/etc/fstab文件打开编辑(我使用的finalshell自带ftp工具,如果你装了宝塔直接在宝塔文件里找也可以,当然你也可以使用VI命令行直接编辑)在fstab文件后面追加:UUID=改为你的硬盘UUID /mnt/随便命名后面创建对应的文件夹最好时英文/ ext4 defaults 0 0编辑后保存上传回去,在/mnt/文件夹下创建你刚刚设置的文件夹名称,例如我刚刚设置的是/mnt/Disk,就创建一个Disk文件夹回到命令行窗口输入reboot重启玩客云,等1-2分钟重启成功,登录宝塔,在首页就可以看到刚刚挂载的硬盘
2023年07月14日
4,554 阅读
0 评论
2 点赞
2023-07-13
搭建Frp内网穿透服务
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。 可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。开源地址:FRP github网址通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间代理组间的负载均衡端口复用,多个服务通过同一个服务端端口暴露多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作一、服务端部署Docker部署1.debian、ubuntu、Centos系统一键安装dockercurl -fsSL get.docker.com -o get-docker.sh curl -sSL https://get.daocloud.io/docker | sh sudo sh get-docker.sh --mirror Aliyun2.创建frp.ini文件并创建目录mkdir /frp vim /frp/frps.ini3.编辑frps.ini配置文件[common] bind_port = 7000 # 启用面板 dashboard_port = 7500 # 面板登录名和密码 dashboard_user = admin dashboard_pwd = xxxxxx # 使用http代理并使用80端口进行穿透 vhost_http_port = 80 # 使用https代理并使用443端口进行穿透 vhost_https_port = 443 # 日志路径 log_file = ./frps.log # 日志级别 log_level = info # 日志最大保存天数 log_max_days = 2 # 认证超时时间 authentication_timeout = 900 # 认证token,客户端需要和此对应 token=123123123 # 最大连接数 max_pool_count = 5 max_ports_per_client = 0官方发现发布 0.52.0 版本后,取消了原有 INI 配置文件,改为 TOML 新格式,完整frps配置bindPort = 7000 auth.method = "token" auth.token = "12345678" webServer.addr = "0.0.0.0" webServer.port = 7500 webServer.user = "admin" webServer.password = "admin123456"4.拉取镜像docker pull snowdreamtech/frps:latest5.启动docker容器#0.52.0版本之前 docker run --restart=always --network host -d -v /frp/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps #0.52.0版本之后 docker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps6.直接访问dashboard,输入账号密码可以直接访问,说明部署成功本地文件部署1、下载程序包前往GitHub Releases页面下载:根据自己实际情况选择,我的是x64的windows系统,服务器也是x64架构,选择图中两项。玩客云是armv7架构,选择linux_arm包解压如下:2、配置文件官方发现发布 0.52.0 版本后,取消了原有 INI 配置文件,改为 TOML 新格式,完整frps配置,完整frpc配置# frps.toml bindPort = 7000 # 服务端与客户端通信端口 auth.token = "public" # 身份验证令牌,frpc要与frps一致 transport.tls.force = true # 服务端将只接受 TLS链接 # Server Dashboard,可以查看frp服务状态以及统计信息 webServer.addr = "0.0.0.0" # 后台管理地址 webServer.port = 7500 # 后台管理端口 webServer.user = "admin" # 后台登录用户名 webServer.password = "admin" # 后台登录密码# frpc.toml transport.tls.enable = true # 从 v0.50.0版本开始,transport.tls.enable的默认值为 true serverAddr = "x.x.x.x" serverPort = 7000 # 公网服务端通信端口 auth.token = "public" # 令牌,与公网服务端保持一致 [[proxies]] name = "test-http" type = "tcp" localIP = "127.0.0.1" # 需要暴露的服务的IP localPort = 9000 # 将本地9000端口的服务暴露在公网的6060端口 remotePort = 6060 # 暴露服务的公网入口 [[proxies]] name = "ssh" type = "tcp" localIP = "127.0.0.1" localPort = 22 remotePort = 6000注意: 访问的端口一定要开放3、系统守护启动如果您的 Linux 服务器上尚未安装 systemd,可以使用包管理器如 yum(适用于 CentOS/RHEL)或 apt(适用于 Debian/Ubuntu)来安装它:# 使用 yum 安装 systemd(CentOS/RHEL) yum install systemd # 使用 apt 安装 systemd(Debian/Ubuntu) apt install systemd使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。vim /etc/systemd/system/frps.service写入内容[Unit] # 服务名称,可自定义 Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,/path/to需修改为您的frps的安装路径 ExecStart = /path/to/frps -c /path/to/frps.toml [Install] WantedBy = multi-user.target使用 systemd 命令管理 frps 服务# 开机启动frp systemctl enable frps # 启动frp sudo systemctl start frps # 停止frp sudo systemctl stop frps # 重启frp sudo systemctl restart frps # 查看frp状态 sudo systemctl status frps或者:也可以使用任意方式编辑 /usr/lib/systemd/system/frps.service 并添加如下内容,其中 path_alist 为 frp 所在的路径但需要执行 systemctl daemon-reload 重载配置二、Windows客户端部署内网穿透工具:配置生成Windows客户端下载压缩包里包含以下文件配置客户端文件,找到压缩包里的frpc.ini。打开frp客户端,运行 打开frpc.bat 即可打开三、Android客户端部署首先下载Frpc客户端GitHub开源项目:https://github.com/mainfunx/frpc_android下载仓库最新的(虽说frps须与frpc版本一致,但frps不配置token还是可以跨版本使用的):https://github.com/mainfunx/frpc_android/releases/download/0.39.1.1/frpc_adnroid-v0.39.1.1.apk下载安装好就是这个样子配置文件如下:(根据个人需求进行修改,切勿照搬)[common] server_addr = 54.180.101.36 server_port = 55185 [web] type = tcp local_ip = 127.0.0.1 local_port = 9978 remote_port = 7080 [web02] type = tcp local_ip = 127.0.0.1 local_port = 5245 remote_port = 7081点保存名字随便取四、Magisk-FRPC部署用于在 Android 设备上运行 FRPC 的 Magisk 模块。如果您的终端设备使用WEB服务或者其他需要远程访问的服务,那么该模块将是您不错的选择。Magisk-FRPC:https://github.com/Yang2635/Magisk-FRPC/releases模块支持arm、arm64、amd64、x86架构。安装时自动判断设备指令架构并应用。使用模块携带的 Busybox 程序中 crond 命令建立定时任务检测状态。FRPC 配置文件修改后会自动检测并重载配置文件。Magisk 模块页面自动显示模块状态信息。检验文件完整性,防止模块被破坏。(感谢 Riru 模块提供的灵感)。可在 Magisk 模块中开启或关闭来控制 FRPC 程序启动与结束。设备电量低于 20% 且未在充电自动终止 FRPC 程序,请保持设备电量充足!在模块目录创建 screen 文件则表示息屏检测,反之不检测。模块安装完成后,请到 Android/frpc 目录下浏览并编辑 frpc.ini 配置文件文件。然后重启设备,设备运行后,会在你的设备上运行 FRPC 守护程序。模块仅在设备 Android/frpc 目录释放额外工作需要的文件(不含 frpc 日志自定义其它路径设置),若模块卸载时未执行 uninstall.sh 脚本,请手动清除 Android/frpc 目录内文件。
2023年07月13日
1,461 阅读
0 评论
0 点赞
2022-07-11
Check酱:监测网页内容变化
Check酱:监测网页内容变化,并发送异动到微信。亦支持http status、json和rss监测。配合自架云端,关电脑后也能运行。⚠️ 浏览器插件不开源,docker目录下的代码仅供安全核查和编译多平台镜像,采用附加条件的GPLV3授权:不得修改或删除默认对接的Server酱通道。不得对接其他消息通道后再次发布。满足以上两个条件后,遵从GPLv3协议。最新版本插件·Chrome/Edge:2022.06.26.14.42 下载 (Github下载地址,无需注册)Docker镜像(云端+远程桌面二合一):2022.06.26.14.22 Docker Hub文档:2022.06.26.14.49更新日志:GitHubDocker镜像安装命令请参阅后文云端架设一节什么是「Check酱」Check酱是方糖气球出品的网页内容监测工具,它包含一个Edge/Chrome浏览器插件和可以自行架设的云端。基于浏览器插件,它通过可视化选择器理论上可以监控网页上的任意内容(文本)、除了浏览器通知,还可以配合Server酱将异动推送到微信或手机。Check酱的原理是,通过浏览器插件后台打开网页进行监测,从而完全模拟用户的真实行为,可以监控绝大部分复杂的动态网页,需要登录的各种后台页面,并(在绝大多数情况下)自动延续登录态。除了支持网页内容(Dom)的监测,还支持HTTP状态(通过GET监测)、JSON和RSS方式。配合可以自行架设的云端,可以将监测任务同步到服务器,这样当浏览器和电脑关掉以后,监测任务依然可以定时运行一、插件的安装和使用插件可以独立使用,只是关掉后定时监测任务不执行。1、 安装目前Check酱正在内测,尚未上架Edge商店,只能通过手工方式载入下载插件ZIP包(Github下载地址,无需注册),解压为目录(后文称其为A)。打开Edge的插件页面,打开「开发者模式」,点击「Load Unpacked」,选择上边解压得到的目录A。成功载入的话,就可以看到Check酱界面了。如果失败,通常是因为解压时多了一层目录导致的,可以试试重新选择A目录的下一级目录2、使用添加网页监控点安装插件后,打开要监控的网页,在网页上点击右键,可以看到「定位监测对象」一项点击后,开始初始化可视化选择器移动鼠标可以看到高亮区域,放到要监控的文字上点击鼠标左键。注意,选择区域必须包含文本,否则会返回空。有很多文本是印在图片上的,这种也会返回空。将转向到添加页面。可以修改名称、设置监控间隔时间、延迟、最大重试次数。在保存之前,最好点击CSS选择器路径一栏后的测试按钮进行测试。如果提示「检测内容为空」,说明存在问题。再次点击进行观察:如果发现页面打开后favicon没有出来就关了,可以增加「延迟读取」的秒数;如果打开后还是返回空,那么刚才自动生成的选择器路径可能不正确。可以更换为浏览器自动生成的,方法如下:① 在要检测的文本上点右键,选择「inspect/审查元素② 这时候会自动打开开发者工具,并自动选中源码中元素的对应行。在高亮的行上点击右键,选择「复制/Copy」→ 「复制选择器/Copy selector」③ 将复制到的剪贴板的路径填入到「CSS选择器路径」一行后,再次点击「测试」按钮进行测试。测试通过后,点击「提交」保存监测点。通过Server酱推送到微信和其他设备在添加和修改监测点时,填入Sendkey即可将消息推送到Server酱。3、监测周期限制有些任务只需要在特定的时间段执行,为了节省资源,我们添加了「监测周期限制」功能。比如某动画每周五上午十点更新,那么我们可以将「监测周期限制」设置如下:这样其他时间段就不再启动监测。对于无法预知事件段的任务,使用默认的「每分钟」即可。注意在「监测周期限制」之上,还有「监控间隔时间」。如果 「监测周期限制」 为每分钟,而「监控间隔时间」为60分钟,那么每分钟都会尝试监测,而一旦监测成功一次,那么下次监测将是60分钟后。同时,因为执行监测任务本身也耗费时间,所以「监控间隔时间」为1分钟时,往往每隔一分钟(即每两分钟)才会运行一次任务。4、日志查看和错误定位为了更清楚的了解定时任务的执行情况,你可以打开「开发者工具」(F12)在 Console 标签页中可以看到任务产生的日志错误信息也会在这里以红色高亮的行显示,遇到Bug时提供日志错误截图可以帮助我们更快的定位到问题。5、更新浏览器插件上架商店后,可以自动升级,在此之前需要手动升级。升级方式为下载zip包解压后覆盖原有文件,再在浏览器的插件管理面板中「reload」一下。二、镜像的安装和使用新版镜像已经将云端和远程桌面版本集成,只需一次安装都可以使用。云端:配合自行架设的服务器,可以将任务同步到云端执行,即使关掉浏览器和电脑后监测任务也会一直运行。远程桌面:在Docker中封装了Chrome浏览器,可以通过VNC和Web界面像在电脑上一样使用。⚠️ 特别说明:因为云端的网络、环境都和本机不同,所以并不保证本机能运行的任务都能在云端运行成功,一些复杂网页和有较多动态效果的网页可能失败。1、安装架设自架版云端需要技术基础,非技术用户建议购买我们的官方版云端(将在内测完成后发布)需要docker环境。如果你没有云服务器,可以看看腾讯云轻量服务器。2、 通过 Docker-compose 启动登录服务器(假设其IP为IPB),在要安装的目录下新建目录 data,并使其可写:mkdir data && chmod 0755 data新建一个 docker-compose.yml 文件,将下边的内容按提示调整后粘贴保存:version: '3' services: chrome: image: easychen/checkchan:latest volumes: - "./data:/checkchan/data" environment: - "CKC_PASSWD=<这里是远程桌面的密码,写一个你自己想的>" - "VDEBUG=OFF" - "VNC=ON" #- "WIN_WIDTH=414" #- "WIN_HEIGHT=896" #- "XVFB_WHD=500x896x16" - "API_KEY=<这里是云端的API KEY,写一个你自己想的>" - "ERROR_IMAGE=NORMAL" # NONE,NORMAL,FULL #- "SNAP_URL_BASE=<开启截图在这里写服务器地址(结尾不用加/),不开留空>..." #- "SNAP_FULL=1" - "TZ=Asia/Chongqing" # - WEBHOOK_URL=http://... # 云端 Webhook地址,不需要则不用设置 ports: - "5900:5900" - "8080:8080" - "8088:80"将其中<这里是远程桌面的密码,写一个你自己想的>和 <这里是云端的API KEY,写一个你自己想的> 换成别人不知道的密码(下文称密码C和D)。注意不要包含$字符,替换完后也不再有两边的尖括号<>。如果不希望启动远程桌面,请将 VNC=ON 改为 VNC=OFF。保证Docker用户对此目录有写权限,并在同一目录下运行以下命令:docker-compose up -d如提示docker服务未安装/找不到/未启动,可在 docker-compose 前加 sudo 再试等待初始化完成后,访问 http://$BBB:8080( 将$BBB替换为IP B),看到 NoVNC Web界面说明容器已经启动。服务所在的端口为:云端:8088远程桌面(VNC): 5900远程桌面的Web界面(NoVNC): 80803、通过 Docker 启动你也可以将 docker-compose 中的参数传给 docker 来启动:docker run -d -p 8088:80 -p 8080:8080 -p 5900:5900 -v ${PWD}/data:/checkchan/data -e API_KEY=123 -e VDEBUG=OFF -e VNC=ON -e SNAP_URL_BASE=http://localhost:8088 -e CKC_PASSWD=123 -e TZ=Asia/Chongqing easychen/checkchan:latest请将上述命令中的123替换为你想要设定的密码、将SNAP_URL_BASE换成服务器的外网IP(如果想通过手机查看截图)。4、更新镜像Check酱云端镜像更新后,你可以将正在运行的云端服务升级到最新版。方式如下:首先停现有的容器:通过 docker-compose 启动的运行:docker-compose down通过 docker 直接启动的运行 docker ps 查询到容器id,通过 docker stop 容器id 停止。然后运行 docker pull 拉取最新版:docker pull easychen/checkchan:latest完成后再启动服务即可。三、云端的使用将浏览器插件对接云端点击插件右上方菜单中的云端服务。在服务器地址一栏输入 http://$BBB:8088(将$BBB替换为IP B,这里的URL不用加key参数);在API_KEY一栏输入密码C。点击保存,连接成功后,配置完成。同步本地任务到云端配置好云端以后回到列表页,每行最右边会多出来一个「电脑」图标,点击后会变成「云」图标,该任务将改为在云端执行。点击右上角 「云+箭头」的按钮,可以主动同步任务到云端。Check酱也会每十分钟自动同步一次云端截图Check酱自架云端支持对网页(dom)类型任务进行截图,可以通过给镜像传递环境变量来开启:SNAP_URL_BASE=<开启截图在这里写服务器地址,不开留空> #如 http://ip.com/SNAP_FULL=1 #完整网页长图可参考上文的docker-compser.yml。添加环境变量后重启服务即可。注意截图功能需要较大的内存,部分服务器可能会报错云端网络和本地不同,可能会超时失败,请适当增加延时,并将取消完整截图云端任务的安全性Check酱云端任务的原理是将cookie同步到云端,然后用浏览器查看,本质和用户操作一样。但因为出口IP可能是机房和数据中心,频次太高也有被风控的可能。如果将云端部署在家里,则和在家用电脑访问效果一样。云端错误排查通常来讲,出现本地任务可以执行,云端不能执行的问题,是因为两者网络环境、浏览器软件存在差异,比如:页面结构每次都会变动:比如一些网站的首页,建议进入分类列表页面选择监控点电脑网络和云端网络不同:在浏览器中可以访问的内容,在数据中心可能访问不到CDN更新延迟:电脑和云端CDN节点刷新未完成,会造成一边可用一边不可用,等待更新完成后再监控浏览器插件改变了网页结构:比如本地通过 AdBlock 过滤了广告,但云端没有,造成结构不同,监测失败由于服务器内存通常没大家电脑大,所以很多在本地执行OK的任务同步到云端后会因为「延迟读取」秒数太小中途停止而失败。如果遇到类似情况,请尝试增加「延迟读取」
2022年07月11日
3,015 阅读
0 评论
2 点赞
2021-04-28
用宝塔面板Docker管理器,自建Bitwarden个人密码服务器
bitwarden 是一款开源的密码管理器,支持 Web、Chrome,很快将要发布 Firefox、Opera 以及 Edge 浏览器插件,拥有 iOS、Android 客户端,采用本地加密,云同步的方式宝塔安装Docker进入到宝塔面板的软件商店,搜索docker安装即可。获取镜像打开docker管理器,点击获取镜像,输入Bitwarden_rs的官方镜像bitwardenrs/server后点击获取镜像。创建容器点击创建容器按钮填写端口映射中的容器端口:80,服务端口:6666(6666可以自定义)填写目录映射中的服务器目录:/www/wwwroot/bitwarden.liubing.me(该目录可以自定义),容器目录:/data填写内存配额,根据自己服务器的配置按需填写提交创建容器点击容器名称,修改容器名称为Bitwarden以方便辨认端口映射和目录映射填写完成后一定要点击+号进行添加添加站点一般可以添加一个二级域名,按自己需要起名字即可,由于我用的cloudflare的服务,所以以这个为演示,阿里云、百度云等其他厂商添加二级域名都是差不多的。添加一个A记录,名字为bitwarden,指向的IP为你服务器VPS的IP地址,最后的访问地址就是bitwarden.liubing.me了。域名准备好后,在宝塔里面添加一个站点,FTP、数据库均不用创建,PHP版本选择纯静态。网站添加完成后设置SSL,自己准备证书,或者用免费的,我用的一直是cloudflare颁发的证书。设置完毕后开启强制Https最后添加一个反向代理,名称随意填,目标URL为http://127.0.0.1:6666,端口号和上面创建容器时服务端口保持一直。完成自建上述步骤都做完后别忘了在宝塔面板安全-防火墙中放行端口6666。最后不出意外的话访问https://bitwarden.liubing.me就能看到界面了。首次完成安装页面是英文的,自己可以创建一个账号登录进去,在设置-选项-语言中设置语言。其他问题一般自建的服务都是自己用的,所以如果想关闭注册的话可以按照下面的方法做:在docker管理器中点击刚才创建的容器的状态绿色图标,停止容器运行,然后删除容器(删除容器后不会删除数据)![11](https://t.663618.xyz/i/2022/11/21/637b882b2d896.png) 在VPS中运行下面的命令重新运行容器,其中Bitwarden为容器的名字,SIGNUPS_ALLOWED=false代表禁止注册,/www/wwwroot/bitwarden.liubing.me为上面创建容器时所写的服务器目录,/data为容器目录,6666:80代表上面创建容器时的服务端口:容器端口docker run -d --name Bitwarden \ -e SIGNUPS_ALLOWED=false \ -v /www/wwwroot/bitwarden.liubing.me/:/data/ \ -p 6666:80 \ bitwardenrs/server:latest 12345SHELL运行完成后在容器列表里就又能看到了。然后再去试下创建账号就会出现一个不能创建账号的错误提示。其他配置参考项目的wiki即可:https://github.com/dani-garcia/bitwarden_rs/wiki插件及App下载可以到bitwarden官网自行下载:https://bitwarden.com/#download连接自建的服务以CHrome的插件为例子,如果之前有安装及登录过,可以在设置中退出登录。点击左上角的设置图标,填写自建服务器的URL保存后登录即可。结语最后就可以愉快的在浏览器和手机上愉快的使用了,顺便说句:我的密码存储我做主,再也不用害怕密码忘记的事了,也可以记录些银行卡等隐私信息,随时复制。
2021年04月28日
3,431 阅读
0 评论
1 点赞
2021-04-17
使用Docker运行qBittorrent,并通过WEB界面管理
为什么要使用qBittorrent玩过BT/PT的人应该对Transmission和qBittorrent都不陌生,两者各具特点,qBittorrent在抢占上传方面比Transmission更具优势。而Transmission在资源方面占用更低。因此一般玩PT建议Transmission + qBittorrent共用,qBittorrent用来刷上传,Transmission用来做种赚魔力。qBittorrent镜像说明基于Debian 10 x64镜像制作qBittorrent版本为v4.1.5已内置GeoIP数据库默认设置为简体中文界面安装 DockerDocker安装 yum install docker 启动docker systemctl start docker 查看当前版本 docker -v 实现开机启动docker systemctl enable docker 停止docker systemctl stop dockerDocker运行qBittorrentdocker run -d \ --name=qbittorrent \ -p 7881:7881 \ -p 7881:7881/udp \ -p 18080:18080 \ -v /data/qbittorrent/config:/etc/qBittorrent \ -v /data/qbittorrent/downloads:/downloads \ --restart unless-stopped \ helloz/qbittorrent7881:用于传入连接的端口,TCP/UDP都需要映射,且主机端口和容器端口必须一致,否则无法下载和上传18080:qBittorrentWEBUI访问端口,主机端口和容器端口必须一致,否则无法打开WEB界面/data/qbittorrent/config:qbittorrent配置文件存储目录,可自行修改/data/qbittorrent/downloads:下载目录,可自行修改使用说明运行成功后可通过http://IP:18080进行访问,用户名为admin,密码为adminadmin,默认已经设置为了中文界面。大部分设置均可通过WEB界面直接修改,若需要修改部分特殊配置,可自行修改配置文件夹/你的挂载路径/config/qBittorrent.conf,修改后重启下容器docker restart qbittorrent项目地址Github:Github镜像地址:镜像地址手机上使用手机上访问Transmission WEB操作还是挺麻烦的,我们可以打开微信小程序搜索“TransClient”进行使用,该小程序支持添加Transmission/BitTorrent等服务端,这样手机上添加、删除BT/PT任务就非常方便了。
2021年04月17日
7,017 阅读
0 评论
2 点赞
2021-03-15
私有qiandao框架Docker搭建教程
基于quchaonet的蓝调主题签到增加了 源镜像:https://hub.docker.com/r/quchaonet/qiandao项目地址:https://github.com/AragonSnow/qiandao运行命令开始运行:docker run -d --name qiandao -p 12345:80 -v $(pwd)/qiandao/config:/usr/src/app/config asdaragon/qiandao数据库备份指令:docker cp 容器名:/usr/src/app/config/database.db .数据库恢复指令:docker cp database.db 容器名:/usr/src/app/config/设置管理员./chrole.py your@email.address admin
2021年03月15日
1,703 阅读
0 评论
0 点赞
1
2