[{"content":"最近因为注册某些app需要用到海外的电话号码，目前海外大部分国家都支持esim，且部分国家的电话号码并不需要实名（上传护照等信息），但国内大部分手机都是不支持esim的，所以还需要把esim写入到实体sim卡，这里我就选择了爱沙尼亚的esim.gg卡（俗称乌龟卡），4.55欧（36.85元）即可永久使用，如果使用币安付款，价格可以在少0.2欧，4.35欧即可购买，不用实名且可以免费收短信。\n官网：https://esim.gg\n优惠码：techleu\n使用优惠码购买链接：https://esim.gg/new/number/estonia?coupon=techleu\n连接基站即可免费保号一年（已知，推特无法接收验证码）\n一、关于乌龟卡 这个esim购买网址是 esim.gg，而网站图标又是个乌龟，就俗称乌龟卡，他们家主要是爱沙尼亚的esim卡，其他地区的也有，但是太贵了，这个爱沙尼亚（区号为+372）的最便宜。他们那个网站有中文，工单也支持中文。\n说下具体资费，一次性购买费用4.55欧，相当于36.85rmb。为什么说是永久使用呢，因为除此之外就没有套餐费，收短信免费，在国内接听电话也免费，只要自己不发短信不开流量，当个接收短信的号码完全0额外成本。他这个保号规则也很简单，只要1年只能连接上一次基站，就可以延长1年使用期（或者余额有变动也可以延长1年），所以平常接收完验证码，直接拔卡就行，一年内连上一次基站，实现0额外成本一直使用。\n二、购买乌龟卡 上面也说了网址，直接浏览器打开，进入购买，进入到购买界面就有简体中文了，往下拉选择全球地区，输入折扣码techleu可以减0.15欧，不然开卡费就要4.7欧，下面那个充值金额最低就是1欧，之后就是选择个自己喜欢的号码，这里因为只充值1欧所以可选的免费号码比较少（嗯靓号也是要收费的），最后支付宝完成支付，这个非常贴心，直接用支付宝就行。\n选择自己需要充值的余额 这里我选择充值最低1欧\n选择自己喜欢的号码 有免费的也有付费的 这里我选择免费的\n选择不选购流量包\n选择不自动延期（连接基站会自动续期）\n输入折扣代码techleu减0.15欧 最后选择支付方式即可\n我想肯定是有人想拿这个上网，，，，怎么说呢，也能用，但是流量费肯定是贵。\n支付完成后就可以下卡了，自己账户里面就会出现这个号码，选择install esim，就会出现二维码，此时用支持esim的手机扫描就可以下卡了，如果自己手机不支持esim，就需要写入到实体sim卡。\n三、写入实体sim卡 开头前先了解一下基础知识，所谓的写入实体sim卡，是自己购买euicc卡，然后通过软件或者读卡器把esim信息写入到euicc。euicc就是一个能写入多个esim的实体卡，不同euicc卡片容量不同，能写入的数量也不同，一般都是500k，可以写20个esim（可以不同运营商），这样当你需要哪个卡的适合就直接切换到对应的esim，一个卡顶20个传统卡。\n可能大火有听说过5ber/9esim这种，其实都是euicc卡，只是前者有牌子，卖的非常贵，普通euicc卡俗称小白卡，即小作坊产品，质量不好说（有人写入一次就炸鸡），但是非常便宜，40不到就能拿下（500k容量）。需要注意的是，安卓目前写入和切卡（切换euicc内的esim信息）非常方便，但是苹果只能切卡，而且需要特定的euicc才支持，这类euicc也要贵几块钱，如果自己用苹果的建议买海外esim版的。\n刚刚说了，苹果只支持切卡，不能写卡，所以苹果写卡是需要专门的读卡器，这玩意也要40多，安卓则不需要，直接用app写入就行。本篇就用安卓做演示，至于苹果，我也没设备。苹果不但卖的比安卓贵，在各个方面都要多掏一笔钱hhhhh。忘记说了，买之前记得问问店家这个卡带不带ara-m（证书），如果不带这玩意安卓需要root才能写入，如果带的话就不用。\n记得关掉短信、语音避免扣费\n安卓写入需要用到一个叫做“easyeuicc”的app，这个自己谷歌下载，安装好后可以运行检测下，前三项能通过就没问题，基本上大部分手机都可以通过，我这好几年前的红米都可以，至于后面几项不用管。对了，有些手机只能sim卡1槽才支持写卡，卡2槽不行，，，，\neasyeuicc下载网站：https://gitea.angry.im/PeterCxy/OpenEUICC/releases\n上面的检查没问题后就可以准备把euicc卡插到手机准备写卡，但是，我要说但是了，如果是小米手机，请务必关闭手机查找功能，这玩意会插入新的sim卡自动发短信，乌龟卡发一条就会扣0.24欧，给我气的，我一共就冲了0.3欧，一下子就被小米给花了0.24欧？？？？？？然后小米还会偷跑流量，我干，后面又给我跑了0.3k流量扣了0.0001欧，本来就不富裕的家庭更是雪上加霜。\n四、测试短信 随便写一个手机号 发送测试短信\n五、保号、重新写入esim 关于保号 连接基站即可免费保号一年，可在官网查看有效期。\n关于重新写入esim 联网删掉esim，在app内发送通知，即可在新的esim实体卡中写入esim（重新官网扫码写入即可 PS.二维码可写入十次，超出后需要补卡换新码）\n","date":"2025-10-13T08:32:16+08:00","image":"https://img.leu.pp.ua/file/教程/1772557147870_IMG_4048.webp","permalink":"/archives/26/","title":"esim.gg仅需37元永久使用爱沙尼亚eSIM 并写入实体eSIM卡"},{"content":"搭建教程 docker compose: version: \u0026#39;3.8\u0026#39; services: app: image: \u0026#39;jc21/nginx-proxy-manager:latest\u0026#39; restart: unless-stopped ports: - \u0026#39;80:80\u0026#39; - \u0026#39;81:81\u0026#39; - \u0026#39;443:443\u0026#39; volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt 默认用户名密码 Email: admin@example.com Password: changeme 查看docker内部ip: ip addr show docker0 ","date":"2026-05-15T00:00:00Z","permalink":"/archives/24/","title":"Nginx Proxy Manager 一款Nginx可视化面板 docker部署教程"},{"content":"前言 如果只需要临时IPv6地址，可以使用此教程添加ipv6。\n1. IPv6 基础概念 如果你是第一次折腾 IPv6，这几个概念一定要搞清楚：\n类型 说明 是否可自定义 静态 IPv6 上游给你一个固定 IPv6，如 2606:4700:1234:5678::2 ✔️ 可自定义尾段 SLAAC 自动 IPv6 由路由器自动分配，如 2606:4700:abcd:ef01:xxxx:xxxx:xxxx:xxxx ❌ 不可控 临时 IPv6（Privacy IPv6） 系统自动生成的随机 IPv6，用于保护隐私 ❌ 默认不可控 Stable Privacy IPv6（Token 自定义） 可自定义 EUI64 或 Token，稳定又隐私 ✔️ 可控、可长期使用 2. 检查 VPS 是否支持 IPv6 检查 IPv6 是否可用 ping6 ipv6.google.com 查看接口是否分配了 IPv6 ip -6 addr 如果没有 IPv6，则需要自己配置（见下文）。\n3. 配置静态 IPv6（可自定义 IPv6） 你可以完全自定义你的 IPv6，比如\n2a03:1234:abcd:5678::leu 也就是：\n2a03:1234:abcd:5678::1337、::666, ::114 等等。\n只要尾段在 /64 内就可任意自定义。\n3.1 Debian / Ubuntu 编辑：\nnano /etc/network/interfaces 添加：\niface eth0 inet6 static address 2a03:1234:abcd:5678::114 netmask 64 gateway 2a03:1234:abcd:5678::1 然后重载：\nsystemctl restart networking 3.2 CentOS / AlmaLinux / RockyLinux（NetworkManager） 编辑：\nnmcli con mod eth0 ipv6.method manual nmcli con mod eth0 ipv6.addresses \u0026#34;2a03:1234:abcd:5678::114/64\u0026#34; nmcli con mod eth0 ipv6.gateway \u0026#34;2a03:1234:abcd:5678::1\u0026#34; nmcli con up eth0 4. 配置 SLAAC 自动 IPv6 SLAAC = VPS 上网后自动从上游路由器获取 IPv6。\nDebian / Ubuntu: nano /etc/network/interfaces 加入：\niface eth0 inet6 auto 或 systemd-networkd： [Network] DHCP=no IPv6AcceptRA=yes 重启：\nsystemctl restart systemd-networkd 5. 配置临时 IPv6（Privacy IPv6） 用于浏览网页时隐藏真实 IPv6。\nDebian / Ubuntu 编辑：\nnano /etc/sysctl.conf 添加两行：\nnet.ipv6.conf.all.use_tempaddr = 2 net.ipv6.conf.default.use_tempaddr = 2 立即生效：\nsysctl -p 你会看到类似：\n2606:4700:abcd:ef01:7d27:89ad:4323:a91c 这就是临时 IPv6。\n6. 自定义临时 IPv6（Stable Privacy + Token） 如果你想要：\n临时 IPv6 但又不想随机变动 稳定、可预测 可以自定义后 64 位 Token（比如：::abcd:114:514） 可以使用 stable_secret 功能。\n6.1 设置稳定的 Token（可自定义） 查看你的网卡名 ip link 假设为 eth0。\n6.2 创建 Token 随便写一个 128-bit 十六进制，例如：\necho \u0026#34;f3a1c0ffee1234567890abcd19260811\u0026#34; \u0026gt; /etc/ipv6token 6.3 写入 Networkd 配置（推荐） 创建：\nnano /etc/systemd/network/10-eth0.network 内容：\n[Match] Name=eth0 [Network] DHCP=no IPv6AcceptRA=yes [IPv6Token] Token=f3a1c0ffee1234567890abcd19260811 重启：\nsystemctl restart systemd-networkd 然后查看：\nip -6 addr show dev eth0 你会看到一个稳定的隐私 IPv6，例如：\n2606:4700:abcd:ef01:f3a1:c0ff:ee12:3456 你也可以自定义它：\n例：\nToken=00000000000000000000000000000114 → ::114 Token=00000000000000000000000000000ACG → ::acg 7. 验证 IPv6 是否生效 ip -6 addr 检查能否访问 IPv6：\nping6 ipv6.google.com curl -6 https://ifconfig.co curl -6 https://api64.ipify.org 如果能显示 IPv6 地址代表成功。\n8. 常见问题（FAQ） ❓ 我可以自己创建任意 IPv6 吗？ ✔️ 只要在你的 /64 网段内，你可以完全自定义：\n自己的静态 IPv6：::1 ~ ::ffff:ffff:ffff:ffff\nToken 从 0～2^64 自定义\n例如：\n2a03:1234:abcd:5678::114514 2a03:1234:abcd:5678::233 ❓ 有 IPv6 但 ping6 不通？ 解决：\niptables -A INPUT -p ipv6-icmp -j ACCEPT ❓ 系统有 IPv6 但 curl -6 出不来？ 要加 NAT66 或开启路由器 RA，取决于你的上游。\n结语 以上就是 VPS 添加 IPv6 的最完整教程，包含： ✔ 静态 IPv6（任意自定义）\n✔ SLAAC 自动 IPv6\n✔ 临时 IPv6（Privacy）\n✔ 可控的 Stable IPv6 Token\n✔ 自定义 IPv6 后缀\n","date":"2026-05-15T00:00:00Z","permalink":"/archives/25/","title":"VPS 添加 IPv6 超详细教程（含静态 IPv6、SLAAC、临时 IPv6）"},{"content":"测试配置 CPU 核心数：1 vCPU 内存：512 MB 硬盘空间：8 GB 流量：2 TB 带宽速率：2 Gbps IPv6 数量：1 价格：1USD/月 iperf3测速 - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 8.00-9.00 sec 13.8 KBytes 112 Kbits/sec [ 7] 8.00-9.00 sec 13.8 KBytes 112 Kbits/sec [ 9] 8.00-9.00 sec 0.00 Bytes 0.00 bits/sec [ 11] 8.00-9.00 sec 9.62 KBytes 78.6 Kbits/sec [ 13] 8.00-9.00 sec 12.4 KBytes 101 Kbits/sec [SUM] 8.00-9.00 sec 49.5 KBytes 404 Kbits/sec ip质量 ######################################################################## IP质量体检报告：2a0f:7803:f6cc:*:*:*:*:* https://github.com/xykt/IPQuality bash \u0026lt;(curl -sL https://Check.Place) -I 报告时间：2025-10-29 17:18:05 CST 脚本版本：v2025-10-28 ######################################################################## 一、基础信息（Maxmind 数据库） 自治系统号： AS214013 组织： Debee Broadband Network Ltd 坐标： 113°33′21″E, 22°12′4″N 地图： https://check.place/22.201,113.5559,15,cn 城市： N/A, 澳门 使用地： [MO]澳门, [AS]亚洲 注册地： [GB]英国 时区： Asia/Macau IP类型： 广播IP 二、IP类型属性 数据库： IPinfo ipregistry ipapi IP2Location AbuseIPDB 使用类型： 机房 机房 家宽 机房 机房 公司类型： 机房 机房 家宽 机房 三、风险评分 风险等级： 极低 低 中等 高 极高 IP2Location： 3 | 低风险 Scamalytics： 0 | 低风险 ipapi： 0.00% | 极低风险 AbuseIPDB： 0 | 低风险 IPQS： 0 | 低风险 DB-IP： （空）| 低风险 四、风险因子 库： IP2Location ipapi ipregistry IPQS Scamalytics ipdata IPinfo IPWHOIS 地区： [GB] [MO] [CN] [MO] [MO] [MO] [MO] [MO] 代理： 否 否 否 否 否 否 否 否 Tor： 否 否 否 否 否 否 否 否 VPN： 否 否 否 否 否 无 否 否 服务器： 是 否 是 无 否 否 是 否 滥用： 否 否 否 否 否 否 无 无 机器人： 否 否 无 否 否 无 无 无 五、流媒体及AI服务解锁检测 服务商： TikTok Disney+ Netflix Youtube AmazonPV Spotify ChatGPT 状态： 失败 待支持 解锁 禁会员 屏蔽 解锁 解锁 地区： [MO] [MO] [MO] [MO] 方式： 原生 原生 原生 原生 六、邮局连通性及黑名单检测 本地25端口出站：阻断 通信：+Gmail-Outlook-Yahoo-Apple+QQ-MailRU-AOL-GMX-MailCOM-163-Sohu-Sina ======================================================================== 今日IP检测量：1344；总检测量：679706。感谢使用 xy 系列脚本！ 报告链接：https://Report.Check.Place/ip/EKX4CVUIE.svg 回程测试ipv6 ","date":"2026-05-14T00:00:00Z","permalink":"/archives/23/","title":"DeBee HKBGP-V6 - MO V6 | Lite 测评"},{"content":"很多人在购买 VPS 后，经常会好奇一个问题：\n我的服务器有没有被别人扫描？\n实际上，只要你的 VPS 有公网 IP，几乎每天都会被扫描。\n常见的扫描包括：\nSSH 暴力破解 Web 漏洞扫描 全端口扫描（nmap / masscan） 本文整理几种 简单有效的方法，查看服务器是否被扫描。 一、查看 SSH 被暴力破解情况 SSH 是最容易被攻击的服务。\n在 Debian / Ubuntu 上可以通过日志查看失败登录：\njournalctl -u ssh | grep \u0026#34;Failed password\u0026#34; 如果服务器被扫，你会看到类似：\nFailed password for root from 185.xxx.xxx.xxx port 52341 ssh2 Failed password for admin from 45.xxx.xxx.xxx port 41211 ssh2 统计攻击 IP：\njournalctl -u ssh | grep \u0026#34;Failed password\u0026#34; | awk \u0026#39;{print $11}\u0026#39; | sort | uniq -c | sort -nr | head 示例输出：\n120 185.xxx.xxx.xxx 85 45.xxx.xxx.xxx 60 103.xxx.xxx.xxx 说明这些 IP 尝试登录你的服务器最多。\n二、查看服务器当前连接 可以使用 ss 查看服务器当前 TCP 连接：\nss -tn 例如：\nESTAB 0 0 87.xxx.xxx.xxx:58364 87.xxx.xxx.xxx:22 ESTAB 0 0 87.xxx.xxx.xxx:46888 172.67.xx.xx:443 含义：\n项目 含义 Local Address 你的 VPS Peer Address 对方服务器 ESTAB 已建立连接 如果看到大量陌生 IP 连接，可能正在被扫描。\n三、查看服务器开放端口 先确认自己的服务器到底开放了哪些端口：\nss -tulnp 示例：\ntcp LISTEN 0 128 0.0.0.0:22 tcp LISTEN 0 128 0.0.0.0:80 tcp LISTEN 0 128 0.0.0.0:443 说明服务器开放：\n22 → SSH 80 → HTTP 443 → HTTPS 这些端口都会被扫描。 四、使用 tcpdump 查看端口扫描 如果想实时查看扫描，可以抓包：\n安装工具：\napt install tcpdump 抓取 SYN 包：\ntcpdump -i any -nn \u0026#39;tcp[tcpflags] \u0026amp; tcp-syn != 0 and tcp[tcpflags] \u0026amp; tcp-ack == 0\u0026#39; 如果有人扫描端口，会看到类似：\nIP 185.xxx.xxx.xxx.52341 \u0026gt; your-ip.22: Flags [S] IP 185.xxx.xxx.xxx.52341 \u0026gt; your-ip.80: Flags [S] IP 185.xxx.xxx.xxx.52341 \u0026gt; your-ip.443: Flags [S] 这就是典型的端口扫描行为。\n五、统计连接最多的 IP 可以快速查看连接你服务器最多的 IP：\nss -ant | awk \u0026#39;{print $5}\u0026#39; | cut -d: -f1 | sort | uniq -c | sort -nr | head 输出示例：\n150 185.xxx.xxx.xxx 80 45.xxx.xxx.xxx 60 103.xxx.xxx.xxx 这些通常就是扫描你服务器的 IP。\n六、如何防止 VPS 被扫描 被扫描其实是正常现象，但可以减少攻击风险。\n1 安装 Fail2ban Fail2ban 可以自动封禁暴力破解 IP：\napt install fail2ban -y systemctl enable fail2ban systemctl start fail2ban 查看封禁状态：\nfail2ban-client status sshd 2 修改 SSH 端口 编辑 SSH 配置：\nnano /etc/ssh/sshd_config 修改：\nPort 22 例如：\nPort 22222 然后重启：\nsystemctl restart ssh 3 禁止 root 密码登录 建议使用 SSH Key 登录。\nPermitRootLogin prohibit-password 或者：\nPermitRootLogin no 总结只要 VPS 暴露公网 IP： 每天都会被扫描 SSH 每天几百次尝试很正常 不需要过度担心 只要做好： Fail2ban SSH Key 登录 关闭不必要端口 服务器基本是安全的。 ","date":"2026-05-14T00:00:00Z","permalink":"/archives/22/","title":"如何查看 VPS 是否被扫描端口（Linux 服务器安全指南）"},{"content":"前言 免费注册 180天可以免费续期\n教程 前往官网注册账号\n官网：https://dash.domain.digitalplat.org\n选择qzz.io域名\n托管至CloudFlare 修改ns记录\n已托管至Cloudflare\n","date":"2026-05-13T00:00:00Z","permalink":"/archives/21/","title":"永久免费qzz.io域名 支持托管至CloudFlare"},{"content":" 有时候，服务器的网络明明都通，但访问某些网站、仓库或 API 却慢得离谱。\n这很可能是因为系统默认使用了“错误的协议栈顺序”——\nLinux 默认优先使用 IPv6，而不是 IPv4。\n如果你想手动调整这个顺序（比如让 IPv4 优先），这篇教程正是为你准备的。\n🧠 为什么要调整 IPv6 / IPv4 优先级 Linux 系统在进行 DNS 解析时，会先请求域名的 AAAA（IPv6） 和 A（IPv4） 记录。\n默认情况下，它会按照系统内部的优先级（policy table）选择哪种协议先尝试。 这意味着：\n如果 IPv6 可用 → 优先使用 IPv6； 即使 IPv6 延迟高、绕路、甚至不通，也会先试 IPv6，导致访问超时； 部分 VPS、Docker 镜像源、Cloudflare / GitHub / ChatGPT 等服务因此异常。 解决办法：调整 gai.conf 文件，修改协议优先顺序。 ⚙️ gai.conf 是什么？ /etc/gai.conf 是 Linux 系统中控制地址选择策略的配置文件，\n由 glibc 的 getaddrinfo() 函数使用。 你可以通过编辑它，改变系统在选择 IPv4 / IPv6 地址时的优先级。\n作用范围：系统级，对所有使用标准网络库的程序生效（curl、apt、wget、docker 等）。\n🛠️开始修改 gai.conf 1.打开配置文件 sudo nano /etc/gai.conf （或者用你喜欢的编辑器，例如 vim、vi。）\n2.查看默认配置 一般情况下，文件内会有许多被注释掉的行，比如：\n#For sites which prefer IPv4 connections change the last line to #precedence ::ffff:0:0/96 100 这句话其实已经告诉我们答案：\n如果你想 IPv4 优先，只需要取消注释这一行。\n3.设置 IPv4 优先 找到并修改：\n#precedence ::ffff:0:0/96 100 改成：\nprecedence ::ffff:0:0/96 100 ✅ 保存并退出即可，无需重启系统。 这表示：\n::ffff:0:0/96 表示 IPv4 映射地址； 100` 是它的优先级； 数字越大，优先级越高。 系统现在会优先使用 IPv4 地址。 4.如果你想让 IPv6 优先（默认） 如果之前改过，现在想恢复 IPv6 优先，只需要把这行重新注释掉：\n#precedence ::ffff:0:0/96 100 或者删除整行。\n🔍 测试是否生效 使用 getent 检查系统地址选择顺序\ngetent ahosts google.com 输出示例：\n2404:6800:4008::200e STREAM google.com 2404:6800:4008::200e DGRAM 2404:6800:4008::200e RAW 142.250.204.14 STREAM 142.250.204.14 DGRAM 142.250.204.14 RAW 📘 说明：\n如果 IPv6 在前面 → IPv6 优先 如果 IPv4 (::ffff: 开头或纯 IPv4 地址) 在前面 → IPv4 优先 Q1：修改后要重启网络吗？ 不需要。gai.conf 会在每次调用 getaddrinfo() 时被读取，立即生效。\nQ2：所有程序都受影响吗？ 只要程序使用系统标准的 DNS 解析库（glibc），都会受影响。\n比如 apt、curl、wget、ping 等。 但如果某个软件自己实现了解析逻辑（比如某些 Java 程序），可能不受影响。\nQ3：IPv6 不通怎么办？ 你可以临时关闭 IPv6：\nsudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1 不建议长期禁用，优先级调整更优雅。\n🧾 示例总结 优先策略 配置语句 效果 IPv4 优先 precedence ::ffff:0:0/96 100 优先使用 IPv4 IPv6 优先（默认） #precedence ::ffff:0:0/96 100 优先使用 IPv6 🧩 总结 Linux 默认 IPv6 优先； 可通过 /etc/gai.conf 改为 IPv4 优先； 立即生效，对大部分命令行工具和服务生效； 稳定性优先的 VPS、Docker 容器建议开启 IPv4 优先。 🚀 未来 IPv6 会越来越普及，但在网络质量不均的今天，\nIPv4 仍然是最稳、最“能打”的选择。\n","date":"2026-05-12T00:00:00Z","permalink":"/archives/20/","title":"Linux 设置 IPv6 或 IPv4 优先教程（gai.conf 配置指南）"},{"content":"🌐 什么是 iperf3？ iperf3 是一个强大的网络带宽测试工具，常被用于 VPS、家庭服务器、或内网节点之间的速度测试。\n它能测试 上传（上行）、下载（下行）、延迟、并发性能 等指标，是判断线路质量的“利器”。\n🧰 一、安装 iperf3 ✅ Debian / Ubuntu apt update \u0026amp;\u0026amp; apt install -y iperf3 ✅ CentOS / AlmaLinux / Rocky yum install -y iperf3 ✅ macOS（通过 Homebrew） brew install iperf3 ⚙️ 二、基本原理 iperf3 采用 客户端 - 服务端 模式：\n一台服务器充当 测试端（Server） 另一台主机作为 客户端（Client） 它们之间建立连接，通过 TCP 或 UDP 数据流进行测速。 🖥️ 三、服务端启动 在你想“接收测速数据”的机器上执行：\niperf3 -s 默认监听端口：5201 如果要在后台运行，可以用： nohup iperf3 -s \u0026gt; /dev/null 2\u0026gt;\u0026amp;1 \u0026amp; 若端口被防火墙或安全组限制，请放行 5201/tcp。\n💻 四、客户端测速 在另一台机器上执行（替换为你的服务端 IP）：\niperf3 -c 1.2.3.4 输出示例： [ ID] Interval Transfer Bandwidth [ 5] 0.00-10.00 sec 1.12 GBytes 960 Mbits/sec 这代表 平均下载速率约 960 Mbps。\n🔄 五、测试上传与下载方向 📤 上传（默认模式） iperf3 -c 1.2.3.4 客户端 → 服务端，测试上传速度。\n📥 下载（反向模式） iperf3 -c 1.2.3.4 -R 服务端 → 客户端，测试下载速度。\n（-R 即 “reverse” 反向传输）\n🧩 六、常用参数说明 参数 作用 -R 反向测试（下载） -t 30 测试 30 秒（默认 10 秒） -p 5201 指定端口 -P 4 开启 4 个并发线程 -u 使用 UDP 模式（测试抖动、丢包率） -b 100M 限制带宽（仅在 UDP 模式下） 📊 示例：多线程测速 iperf3 -c 1.2.3.4 -P 4 -t 30 适合高带宽（如千兆或多线路）测试，更能体现真实性能。\n📡 七、UDP 模式（测试延迟与丢包） iperf3 -c 1.2.3.4 -u -b 100M ``` 输出中你可以看到： - **Jitter**（抖动） - **Lost/Total Datagrams**（丢包统计） 这是判断 **线路稳定性** 的关键指标。 ### 📘 八、示例对比 | | | | | --- | --- | --- | | 场景 | 命令 | 测试方向 | | VPS 上传测速 | `iperf3 -c 你的VPSIP` | 本地 → VPS | | VPS 下载测速 | `iperf3 -c 你的VPSIP -R` | VPS → 本地 | | 节点间测速 | `iperf3 -c 节点BIP` | 节点A → 节点B | | 多线程测速 | `iperf3 -c 1.2.3.4 -P 8` | 多并发上传 | ### 🧭 九、简单测速结果解读 | | | | --- | --- | | 字段 | 含义 | | **Transfer** | 传输数据总量 | | **Bandwidth** | 平均带宽（速率） | | **Retr** | TCP 重传次数（过高说明线路不稳） | | **Jitter** | 抖动（UDP 模式） | \u0026gt; 💡 一般情况下，国内外 VPS 延迟高但带宽正常； \u0026gt; 若丢包严重、Retr 持续上升，则可能是线路质量差或中间节点拥塞。 ### 🧾 十、附加技巧 #### 📦 在 Docker 容器中测速 ```bash docker run --rm -it networkstatic/iperf3 -c 1.2.3.4 📜 输出结果保存 iperf3 -c 1.2.3.4 -t 60 --logfile result.txt 🔐 改端口防扫描 iperf3 -s -p 25001 ✨ 总结 功能 命令 启动服务端 iperf3 -s 上传测速 iperf3 -c IP 下载测速 iperf3 -c IP -R 并发测试 iperf3 -c IP -P 4 UDP 测试 iperf3 -c IP -u -b 100M 💬 写在最后 iperf3 是排查线路瓶颈、验证带宽性能的万能工具。\n无论你是在搭建节点、优化 VPS，还是测试家庭宽带，它都值得收藏。\n⚡ 如果你也爱折腾服务器，欢迎常来看看 👉 Leuの小站\n不定期分享一些实用脚本与服务器小技巧 🛠️\n","date":"2026-05-11T00:00:00Z","permalink":"/archives/19/","title":"用 iperf3 测试网络速度：最实用的教程与示例"},{"content":"1、安装Warp（如果VPS有ipv4忽略此步骤） wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh \u0026amp;\u0026amp; bash menu.sh [option] [lisence/url/token] 如果warp获取不到ip 执行：\nwg-quick down warp \u0026amp;\u0026gt;/dev/null; sed -i \u0026#34;s/Endpoint.*/Endpoint = engage.cloudflareclient.com:4500/\u0026#34; /etc/wireguard/warp.conf; warp o 2、安装NeZha curl -L https://raw.githubusercontent.com/nezhahq/scripts/refs/heads/main/install.sh -o nezha.sh \u0026amp;\u0026amp; chmod +x nezha.sh \u0026amp;\u0026amp; sudo ./nezha.sh 3、安装Caddy apt install caddy 4、Caddy反代（如需Nginx反代请移步官网查看） nano /etc/caddy/Caddyfile dashboard.example.com { @grpcProto { path /proto.NezhaService/* } reverse_proxy @grpcProto { header_up Host {host} header_up nz-realip {http.CF-Connecting-IP} # 替换为你的 CDN 提供的私有 header，此处为 CloudFlare 默认 # header_up nz-realip {remote_host} # 如果你使用caddy作为最外层，就把上面一行注释掉，启用此行 transport http { versions h2c read_buffer 4096 } to localhost:8008 } reverse_proxy { header_up Host {host} header_up Origin https://{host} header_up nz-realip {http.CF-Connecting-IP} # 替换为你的 CDN 提供的私有 header，此处为 CloudFlare 默认 # header_up nz-realip {remote_host} # 如果你使用caddy作为最外层，就把上面一行注释掉，启用此行 transport http { read_buffer 16384 } to localhost:8008 } } 5、CloudFlare开启grpc 网络-grpc开启 如图所示\n6、对接Agent NeZha后台要把端口换成443 开启tls 如图所示\n","date":"2026-05-10T00:00:00Z","permalink":"/archives/18/","title":"搭建NeZha探针 套CloudFlare ipv6小鸡废物利用"},{"content":"前言 支持解析到CloudFlare，首年免费。\n如有问题欢迎评论留言\n购买域名 官网：https://customer.l53.net/\n结算时候试用优惠码自动抵扣一年newuser\n解析到CloudFlare 点击控制面板 名称服务器 添加ns记录即可\n","date":"2026-04-01T00:00:00Z","permalink":"/archives/17/","title":"免费白嫖一年ggff.net域名 - 支持解析到CloudFlare"},{"content":"系统要求 在开始之前，请确保您的系统满足以下要求：\n操作系统: Linux，推荐纯净系统安装 Docker: 20.10+ Docker Compose: 1.29+ 或 Docker 内置 compose 命令 内存: 至少 1GB RAM 存储: 至少 1GB 可用空间 网络: 确保相关端口未被占用 一键安装（推荐） 提供了交互式安装脚本，会自动检测系统环境并引导您完成配置：\ncurl -L https://raw.githubusercontent.com/BrunuhVille/flux-panel/refs/heads/main/panel_install.sh -o panel_install.sh \u0026amp;\u0026amp; chmod +x panel_install.sh \u0026amp;\u0026amp; ./panel_install.sh 安装流程说明 运行脚本后选择操作：\n=============================================== 面板管理脚本 =============================================== 请选择操作： 1. 安装面板 ← 选择这个 2. 更新面板 3. 卸载面板 4. 退出 =============================================== 输入配置参数：\n面板服务器地址: 需要节点服务器能正常访问的地址 前端端口: 默认 6366 后端端口: 默认 6365 自动化处理：\n检测 Docker 环境 自动检测 IPv6 支持并选择合适的配置 生成随机的数据库配置 下载并启动服务 配置示例 当前面板服务器地址: 192.168.1.100 # 或您的公网IP 前端端口（默认 6366）: 6366 # 直接回车使用默认值 后端端口（默认 6365）: 6365 # 直接回车使用默认值\n验证安装 1. 检查服务状态 使用 docker-compose\ndocker-compose ps 或使用 docker compose\ndocker compose ps 您应该看到以下服务都处于 Up 状态\ngost-mysql - 数据库服务 springboot-backend - 后端 API 服务 vue-frontend - 前端 Web 界面 2. 访问 Web 界面 打开浏览器访问：http://your-server-ip:6366\n3. 登录系统 使用默认管理员账号登录：\n用户名: admin_user 密码: admin_user ⚠️ 重要: 首次登录后请立即修改默认密码！ IPv6 支持 脚本会自动检测系统的 IPv6 支持：\n✅ 支持 IPv6: 自动使用 IPv6 配置文件并配置 Docker IPv6 支持 ⚠️ 不支持 IPv6: 使用 IPv4 配置文件 Docker IPv6 配置 如果检测到 IPv6 支持，脚本会自动配置：\n{ \u0026#34;ipv6\u0026#34;: true, \u0026#34;fixed-cidr-v6\u0026#34;: \u0026#34;fd00::/80\u0026#34; } 端口说明 端口 服务 说明 可配置 6366 Web 界面 前端管理界面 ✅ 6365 API 服务 后端 REST API ✅ 3306 MySQL 数据库服务（容器内部） ❌ 动态分配 转发端口 用户创建的转发规则 ✅ ","date":"2026-02-01T00:00:00Z","permalink":"/archives/16/","title":"部署哆啦A梦转发面板 Gost转发 - Docker Compose部署"},{"content":"一、准备资料 1、一个邮箱（建议用gmail、outlook、qq等大厂邮箱）\n点击【注册地址】\n点击【登录地址】\n点击【申请地址】 二、注册帐号 1、帐号注册 点击【注册地址】\n2、在注册页面、填写邮箱注册、登录密码、输入邮箱验证码,然后点注册\n3、上面注册成功后,在邮箱里会收到一封邮箱(有可能在垃圾邮箱里),然后点邮箱里的激活帐号连接\n三、申请域名 点击【申请地址】 四、域名绑定Cloudflare 1、申请注册免费Cloudflare帐号(邮箱就可以免费注册) 【点击官网地址】\n登录cloudflare找到 域注册-\u0026gt;管理域-\u0026gt;填你注册的域名-\u0026gt;绑定DNS-\u0026gt;cloudflare检查成dns-\u0026gt;等激活成功 💡提醒：\nPS:这个需要续期，一年一续期，免费续期 到期前90天内可续期。\nPS:这个需要续期，一年一续期，免费续期 到期前90天内可续期。\nPS:这个需要续期，一年一续期，免费续期 到期前90天内可续期。\n【免费续期地址】\n","date":"2025-10-07T00:00:00Z","image":"https://img.leu.pp.ua/file/教程/1774237462533_IMG_4067.webp","permalink":"/archives/15/","title":"免费eu.cc域名 支持托管至cloudflare"},{"content":"前言 在 NAS 或 Linux 服务器上部署一个稳定、可管理的 BT 下载工具是很多人的刚需。本文将介绍如何使用 Docker Compose 快速部署一个基于镜像 superng6/qbittorrentee 的 qBittorrent 容器服务。 本教程适用于 Ubuntu / Debian / 群晖 / OpenMediaVault 等支持 Docker 的系统。\n一、环境准备 1️⃣ 安装 Docker 如果你的系统尚未安装 Docker，可参考官方文档安装：\n官网： https://www.docker.com/ Ubuntu 示例： sudo apt update sudo apt install docker.io -y sudo systemctl enable docker sudo systemctl start docker 2️⃣ 安装 Docker Compose 新版 Docker 已自带 compose 插件，可通过以下命令确认：\ndocker compose version 如果没有，可安装：\nsudo apt install docker-compose-plugin -y 二、创建项目目录 建议为 qBittorrent 创建独立目录：\nmkdir -p ~/docker/qbittorrentee cd ~/docker/qbittorrentee 三、编写 docker-compose.yml 文件 在当前目录创建文件：\nnano docker-compose.yml 写入以下内容：\nversion: \u0026#34;3\u0026#34; services: qbittorrentee: image: superng6/qbittorrentee container_name: qbittorrentee environment: - PUID=1026 - PGID=100 - TZ=Asia/Shanghai - WEBUIPORT=8080 - ENABLE_DOWNLOADS_PERM_FIX=true volumes: - ./qbittorrentee/config:/config - ./qbittorrentee/downloads:/downloads ports: - 6881:6881 - 6881:6881/udp - 8080:8080 restart: unless-stopped 保存并退出。\n四、参数说明 🔹 镜像说明 superng6/qbittorrentee 是一个封装好的 qBittorrent WebUI 版本镜像。\n🔹 关键环境变量说明 端口 用途 6881 TCP BT 下载 6881 UDP DHT 网络 8080 Web 管理界面 🔹 数据目录说明 宿主机路径 容器路径 作用 ./qbittorrentee/config /config 配置文件 ./qbittorrentee/downloads /downloads 下载目录 建议确保目录权限正确：\nmkdir -p qbittorrentee/config mkdir -p qbittorrentee/downloads chmod -R 775 qbittorrentee 五、启动服务 在 docker-compose.yml 所在目录执行：\ndocker compose up -d 查看运行状态：\ndocker ps 六、访问 Web 管理界面 浏览器访问：\nhttp://服务器IP:8080 默认用户名：admin\n默认密码为随机生成，首次启动容器请查看日志。\n七、常用管理命令 查看日志 docker compose logs -f 重启服务 docker compose restart 停止服务 docker compose down 八、升级容器 docker compose pull docker compose up -d 九、进阶建议 ✅ 1. 开放端口到公网（如有需要） 需在路由器上做端口转发。\n✅ 2. 配合反向代理 可结合 Nginx 或 Traefik 实现 HTTPS 访问。\n✅ 3. 搭配自动更新工具 可使用 Watchtower 实现自动更新容器。\n十、常见问题排查 ❓ 无法下载 / 无速度 检查 6881 端口是否开放 检查防火墙规则 检查 ISP 是否封锁 BT ❓ 权限错误 确认 PUID/PGID 是否与下载目录用户一致。\n总结 使用 Docker Compose 部署 qBittorrent 的优势：\n配置清晰 易于备份 一条命令即可恢复 升级简单 如果你是 NAS 用户或家庭服务器爱好者，这种部署方式非常推荐 👍\n","date":"2025-10-05T00:00:00Z","permalink":"/archives/14/","title":"使用 Docker Compose 部署 qBittorrent（qbittorrentee）完整教程"},{"content":"前言 komari 在随着使用的时间 数据库占用硬盘的大小也在随之增加 利用sqlite3 来清理数据库大小\n安装sqlite3 apt install sqlite3 停止komari systemctl stop komari.service 备份komari 防止修改数据库出现问题 修改前请备份 防止数据丢失\ncp /opt/komari/data/komari.db /opt/komari/data/komaribf.db 打开数据库 sqlite3 /opt/komari/data/komari.db 删除记录 DELETE FROM records; 删除长期保存的记录 DELETE FROM records_long_term; 删除延迟记录 DELETE FROM ping_records; 收缩数据库大小 VACUUM; 退出数据库 .exit 重启komari systemctl restart komari.service ","date":"2025-10-04T00:00:00Z","permalink":"/archives/13/","title":"Komari清理数据库"},{"content":"前言 永久免费netlib.re域名，支持托管至CloudFlare。\n注：添加NS记录会遇到名称服务器无效 可以尝试多注册几个（我注册第二个才成功）\n注册账号 官网：https://www.netlib.re/ 密码为15位 注册后会发邮箱验证token 验证登录即可\n注册域名 选择自己喜欢的域名 有netlib.re和codelib.re 托管至CloudFlare 点击注册的域名 点击Delegate your domain to different name servers添加NS记录即可 ","date":"2025-10-02T00:00:00Z","permalink":"/archives/12/","title":"永久免费netlib.re域名，支持托管至CloudFlare。"},{"content":"简介 最近我购买了一台新的服务器，需要把 Umami 服务器从旧服务器迁移到新服务器上。但我是用 Docker 安装的 Umami。\nversion: \u0026#39;3\u0026#39; services: umami: image: ghcr.io/umami-software/umami:postgresql-latest ports: - \u0026#34;3000:3000\u0026#34; environment: DATABASE_URL: postgresql://umami:umami@db:5432/umami DATABASE_TYPE: postgresql APP_SECRET: replace-me-with-a-random-string depends_on: db: condition: service_healthy restart: always db: image: postgres:15-alpine environment: POSTGRES_DB: umami POSTGRES_USER: umami POSTGRES_PASSWORD: umami volumes: - umami-db-data:/var/lib/postgresql/data restart: always healthcheck: test: [\u0026#34;CMD-SHELL\u0026#34;, \u0026#34;pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}\u0026#34;] interval: 5s timeout: 5s retries: 5 volumes: umami-db-data: 迁移中最困难和重要的部分就是导出 Umami 的数据。我们有几种方法可以实现：\n导出 Docker 卷（非常复杂） 导出数据库（我的选择） 复制整个路径（不推荐） 比较方法 首先，我们要知道 Umami 的数据是存储在卷（Volume）中的。因为 docker-compose.yml 指定了：\nservices: db: volumes: - umami-db-data:/var/lib/postgresql/data volumes: umami-db-data: 如果我把路径挂载到容器里而不是卷，那就可以直接把路径复制到新机器上。比如:\nservices: db: volumes: - /root/umami/data:/var/lib/postgresql/data 最后，我决定只导出数据库并导入到新实例中。让我们一步一步来。\n迁移数据库 备份 docker exec umami-db-1 sh -c \u0026#39;pg_dump --username=umami umami \u0026gt; /umami.sql\u0026#39; \u0026amp;\u0026amp; \\ docker cp umami-db-1:/umami.sql /root/ \u0026amp;\u0026amp; \\ docker exec umami-db-1 rm /umami.sql 删除数据库 docker exec umami-db-1 psql --username=umami --dbname=postgres -c \u0026#34;DROP DATABASE IF EXISTS umami;\u0026#34; 创建新的数据库 docker exec umami-db-1 psql --username=umami --dbname=postgres -c \u0026#34;CREATE DATABASE umami;\u0026#34; 导入备份 docker cp /root/umami.sql umami-db-1:/umami.sql \u0026amp;\u0026amp; \\ docker exec -i umami-db-1 psql --username=umami --dbname=umami -f /umami.sql \u0026amp;\u0026amp; \\ docker exec umami-db-1 rm /umami.sql 重启 Umami 实例： docker compose down docker compose up -d 检查 现在可以检查数据库是否迁移成功了。打开新 Umami 的 URL，尝试用原来的账号登录。如果能登录，那数据库很可能迁移成功了（账号信息是存在数据库里的）。 为了进一步确认，你可以进入仪表盘，看看所有数据是否正常显示。 如果不正常，说明数据库没有成功迁移。你可以检查导出的备份文件（里面是否包含正确的数据？），以及导入的方式（看看备份文件是否成功导入到新的 Postgres）。\n","date":"2025-10-01T00:00:00Z","permalink":"/archives/11/","title":"将 Docker 部署的 Umami 从一台服务器迁移到另一台服务器"},{"content":"效果图： 自定义代码 在面板后台自定义代码中加入如下代码 （只支持V1版）\n\u0026lt;script src=\u0026#34;https://cdn.jsdelivr.net/gh/leuxinovo/nezha-ui@main/traffic-display.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt;\u0026#34; ","date":"2025-09-30T00:00:00Z","permalink":"/archives/10/","title":"给哪吒面板添加周期流量显示"},{"content":"一、Sub-Store 简介 Sub-Store 是一款开源的订阅转换服务，支持聚合多个订阅链接并输出为不同客户端格式。\n它能让你：\n将多个机场或自建节点订阅整合；\n输出为 Clash / Surge / QuantumultX / Loon / Shadowrocket 等格式；\n自定义节点筛选、排序、分组；\n通过 Web 界面轻松管理。\nGitHub 项目地址：\n👉 https://github.com/sub-store-org/Sub-Store\n二、部署环境准备 推荐系统环境：\n系统 支持 Debian 12 / Ubuntu 22.04 ✅ 推荐 Alpine / CentOS 7+ ✅ 支持 内存要求 ≥ 256MB 确保系统已安装：\napt update \u0026amp;\u0026amp; apt install -y docker.io docker-compose 三、Docker Compose 配置文件 在服务器任意目录（如 /root/sub-store）下创建文件：\nmkdir -p /root/sub-store cd /root/sub-store nano docker-compose.yml 然后粘贴以下内容 👇：\nversion: \u0026#34;3.8\u0026#34; services: sub-store: image: xream/sub-store:latest container_name: sub-store restart: always ports: - \u0026#34;3001:3001\u0026#34; volumes: - ./sub-store:/opt/app/data environment: SUB_STORE_FRONTEND_BACKEND_PATH: /MySecretToken123 SUB_STORE_BACKEND_SYNC_CRON: \u0026#34;55 23 * * *\u0026#34; SUB_STORE_BODY_JSON_LIMIT: 10mb 四、配置详解 配置项 示例值 作用 说明 version \u0026quot;3.8\u0026quot; Compose 文件版本 指定 Docker Compose 的语法版本，3.8 适用于较新的 Docker services sub-store 服务定义 定义一个名为 sub-store 的服务 image xream/sub-store:latest Docker 镜像 使用 Sub-Store 官方镜像，latest 表示最新版本 container_name sub-store 容器名称 指定容器名称为 sub-store，方便管理和查看日志 restart always 自动重启策略 容器异常退出或 Docker 重启时会自动重新启动 ports \u0026quot;3001:3001\u0026quot; 端口映射 将宿主机 3001 端口映射到容器 3001 端口 volumes ./sub-store:/opt/app/data 数据持久化 将本地 ./sub-store 目录映射到容器 /opt/app/data，用于保存配置和数据 environment 环境变量配置 程序运行参数 用来控制 Sub-Store 的运行行为 ⚠️ 建议你修改：\nSUB_STORE_FRONTEND_BACKEND_PATH=/MySecretToken123 示例：\n/rd304CYuZ2KByUk4WRHF 这样可以防止被随意访问。\n随机生成密码网站：https://1password.com/zh-cn/password-generator\n五、启动服务 保存文件后执行：\ndocker compose up -d 查看运行状态：\ndocker ps 若一切正常，你会看到类似输出：\nCONTAINER ID IMAGE STATUS PORTS a1b2c3d4e5f6 xream/sub-store Up 10 seconds 0.0.0.0:3001-\u0026gt;3001/tcp 六、访问与初始设置 浏览器访问：\nhttp://服务器IP:3001 若配置了后端路径（如 /ks9foTp4xE8fr24pg2DZ），\n打开 服务器ip:3001 输入后端路径ks9foTp4xE8fr24pg2DZ\n你会看到 Sub-Store 的管理界面，可以：\n添加或导入订阅；\n设置转换规则；\n生成统一的订阅链接。\n七、设置Gist同步 1.拥有一个 GitHub 账号 注册或登录：https://github.com/\n2.获取一个 GitHub Personal Access Token（访问令牌） 打开 https://github.com/settings/tokens\n点击Token（classic）并在右上选择Generate new token（classic）\n勾上Repo和Gist这两项后，点击底下的Generate token即生成Token了\n生成后复制该 token（⚠️ 只显示一次！）\n建议保存到安全的地方，例如 ~/.config/sub-store/token.txt。\n3.Sub-store设置Gist同步 将Github用户名和获取的Token粘贴进去即可\n八、Caddy反代 编辑/etc/caddy/Caddyfile\nnano /etc/caddy/Caddyfile example.com { reverse_proxy localhost:3001 } 重启caddy\nsystemctl restart caddy ","date":"2025-09-01T14:51:40+08:00","image":"https://img.leu.pp.ua/file/教程/1778655672809_IMG_4133.webp","permalink":"/archives/9/","title":"Docker部署Sub-Store订阅管理系统"},{"content":"前言 AkileCloud开放自定义DNS解锁 目前可以添加10个非Akile ip和无限个Akile ip\n教程 打开官网注册账号：https://dns.akile.ai 添加自己的服务器ip 点击添加的ip 选择需要解锁的服务、流媒体 然后保存配置 在vps中使用测试连通性脚本\nwget -qO- https://raw.githubusercontent.com/akile-network/aktools/refs/heads/main/akdns.sh |bash 选择最快的ip 在vps中添加dns解锁 将DNSip换成连通性测试脚本中延迟最低的ip\n一键脚本：\ncp /etc/resolv.conf /etc/resolv.conf.bak \u0026amp;\u0026amp; echo \u0026#34;nameserver DNSip\u0026#34; \u0026gt; /etc/resolv.conf 最后使用流媒体解锁脚本查看是否生效\nbash \u0026lt;(curl -L -s https://raw.githubusercontent.com/xykt/RegionRestrictionCheck/main/check.sh) ","date":"2025-08-10T00:00:00Z","image":"https://img.leu.pp.ua/file/教程/1770806267675_IMG_4012.jpeg","permalink":"/archives/8/","title":"AkDNS免费DNS解锁流媒体"},{"content":"一键脚本 bash \u0026lt;(curl -sL https://raw.githubusercontent.com/leuxinovo/clearvps/main/leuql.sh) 🧭 主要功能一览 🖥 系统概况 显示系统基础信息（内核版本、架构、发行版等） 查看根分区磁盘使用情况 查看内存与 Swap 使用情况 清理前的资源总览 🔒 进程清理 自动检测并解除 APT / Dpkg 锁 防止包管理器因意外中断而被锁定 🧾 日志清理 清空旧日志文件，保留日志结构 减少 /var/log 占用空间 🧹 临时与缓存清理 清理系统临时目录与缓存文件： /tmp /var/tmp /var/cache 释放短期存储占用 📦 包缓存清理 清理 APT / DNF 的下载缓存与历史记录 删除旧版本包缓存文件 优化包管理空间使用 ✂️ 组件裁剪 移除非必要组件与工具包 精简系统体积 🧽 系统瘦身 删除系统文档与手册（/usr/share/doc 等） 删除静态库文件（.a） 清理 Python 缓存文件（.pyc、__pycache__） 进一步减少系统体积 🐳 Docker 清理 一键清理 Docker 未使用资源： 停止的容器 未使用的镜像 残留的卷与网络 相当于自动执行 docker system prune -a -f ⚙️ 内核清理 保留当前运行与最新版本内核 删除旧内核包、头文件等 防止 /boot 分区被占满 ⚡ 内存优化 检测系统负载与内存可用率 在低负载时自动回收缓存（drop_caches） 避免在高负载时清理造成卡顿或断连 🪶 SSD TRIM 对 SSD 执行 fstrim 操作 提升磁盘性能与寿命 📊 汇总报告 清理完成后自动展示： 最新磁盘与内存使用情况 清理前后资源对比 本次释放的空间总量 效果图 ","date":"2025-07-13T00:00:00Z","permalink":"/archives/7/","title":"linux系统清理脚本 清理缓存、旧内核、docker镜像等"},{"content":"前言： 如果需要两台服务器数据同步 可以使用此脚本实现修改文件、删除文件自动同步数据 本脚本需要密钥实现免密传文件到另一台服务器 以debian系统为例\n安装 两台服务器都要安装rsync\napt install rsync 需要备份的服务器安装实时监控inotify-tools\napt install inotify-tools 创建实时备份脚本\nvim rsync_backup.sh 手动备份全部\nrsync -av /备份目录 root@远程服务器ip:/存储目录 手动远程同步\nrsync -avz --delete /备份目录 root@远程服务器ip:/存储目录 卸载实时监控inotify-tools\nsudo apt-get autoremove --purge inotify-tools 创建实时备份脚本 脚本见文章最下面 设置可读权限\nchmod +x rsync_backup.sh 设置后台运行\nvim /etc/systemd/system/rsync-backup.service 后台运行脚本见文章最下面 重新加载配置\nsudo systemctl daemon-reload 启动后台运行\nsudo systemctl start rsync-backup.service 申请密钥 实现免密传文件到另一台服务器 申请密钥 一路回车即可\nssh-keygen -t ecdsa -b 521 导入公钥到另一台vps\nssh-copy-id -i ~/.ssh/id_ecdsa.pub -p 服务器端口 root@服务器IP地址 如果是导入自己的密钥 请给私钥设置可读权限\nchmod 600 .ssh/id_ecdsa 实时备份脚本 #!/bin/bash # 监控目录 SOURCE_DIR=\u0026#34;/备份目录\u0026#34; # 备份到的远程服务器路径 REMOTE_DIR=\u0026#34;root@ip:/存储目录\u0026#34; # 使用 inotifywait 监控文件的变化 inotifywait -m -r -e modify,create,delete --exclude \u0026#39;.*\\.swp|.*\\.bak\u0026#39; \u0026#34;$SOURCE_DIR\u0026#34; | while read path action file; do echo \u0026#34;File $file in directory $path was $action. Starting rsync backup...\u0026#34; # 同步文件的修改、创建、删除操作 rsync -avz --delete \u0026#34;$SOURCE_DIR\u0026#34; \u0026#34;$REMOTE_DIR\u0026#34; done 后台运行脚本 [Unit] Description=Rsync Backup Script [Service] ExecStart=/root/rsync_backup.sh Restart=always [Install] WantedBy=multi-user.target ","date":"2025-05-14T00:00:00Z","permalink":"/archives/6/","title":"rsync实时备份到另一台服务器"},{"content":"前言 建站都遇到过vps宕机，没有备份网站，导致网站数据丢失。可以利用这个脚本，定时备份文件到网盘。\n安装rclone curl https://rclone.org/install.sh | sudo bash rclone config 以mega网盘为例 脚本 #!/bin/bash # ============================== # 可配置项 # ============================== # 要备份的目录（不要加 /） source_dir=\u0026#34;/备份目录\u0026#34; # 本地备份目录 backup_dir=\u0026#34;/本地备份目录\u0026#34; mkdir -p \u0026#34;$backup_dir\u0026#34; # rclone 远程路径（例如 gdrive:/backup） remote=\u0026#34;路径:/文件路径\u0026#34; # 允许通过环境变量设置自定义前缀，默认值为 \u0026#34;backup\u0026#34; filename_prefix=\u0026#34;${FILENAME_PREFIX:-backup}\u0026#34; # ============================== # 自动变量 # ============================== now=$(date +\u0026#34;%Y-%m-%d_%H-%M-%S\u0026#34;) backup_file=\u0026#34;$backup_dir/${filename_prefix}_${now}.zip\u0026#34; parent_dir=$(dirname \u0026#34;$source_dir\u0026#34;) target_dir=$(basename \u0026#34;$source_dir\u0026#34;) echo \u0026#34;======================================\u0026#34; echo \u0026#34;📦 开始备份任务\u0026#34; echo \u0026#34;源目录: $source_dir\u0026#34; echo \u0026#34;备份文件: $backup_file\u0026#34; echo \u0026#34;======================================\u0026#34; # ============================== # 开始压缩（静默） # ============================== cd \u0026#34;$parent_dir\u0026#34; || { echo \u0026#34;❌ 无法进入目录 $parent_dir\u0026#34;; exit 1; } echo \u0026#34;📦 正在压缩...\u0026#34; zip -r \u0026#34;$backup_file\u0026#34; \u0026#34;$target_dir\u0026#34; \u0026gt; /dev/null if [ $? -ne 0 ]; then echo \u0026#34;❌ 压缩失败\u0026#34; exit 1 fi echo \u0026#34;✅ 压缩完成\u0026#34; du -h \u0026#34;$backup_file\u0026#34; # ============================== # 上传到远程（显示进度） # ============================== echo \u0026#34;======================================\u0026#34; echo \u0026#34;📤 开始上传到远程：$remote\u0026#34; echo \u0026#34;======================================\u0026#34; rclone copy \u0026#34;$backup_file\u0026#34; \u0026#34;$remote\u0026#34; \\ --progress \\ --stats 5s \\ --stats-one-line \\ --transfers=1 \\ --checkers=1 if [ $? -ne 0 ]; then echo \u0026#34;❌ 上传失败\u0026#34; exit 1 fi echo \u0026#34;✅ 上传完成\u0026#34; # ============================== # 清理本地旧备份 # ============================== echo \u0026#34;🗑️ 清理本地旧备份（保留最近 3 个）...\u0026#34; ls -1t \u0026#34;$backup_dir\u0026#34;/${filename_prefix}_*.zip 2\u0026gt;/dev/null | sed -e \u0026#39;1,3d\u0026#39; | while read old_file; do echo \u0026#34;删除本地：$old_file\u0026#34; rm -f \u0026#34;$old_file\u0026#34; done # ============================== # 清理远程旧备份 # ============================== echo \u0026#34;🗑️ 清理远程旧备份（保留最近 3 个）...\u0026#34; rclone lsf \u0026#34;$remote\u0026#34; --files-only | \\ grep \u0026#34;^${filename_prefix}_\u0026#34; | \\ sort -r | \\ awk \u0026#39;NR\u0026gt;3\u0026#39; | \\ while read file; do echo \u0026#34;删除远程：$file\u0026#34; rclone deletefile \u0026#34;$remote/$file\u0026#34; done echo \u0026#34;======================================\u0026#34; echo \u0026#34;🎉 所有操作完成\u0026#34; echo \u0026#34;======================================\u0026#34; 设置定时任务 crontab -e 每天0点和早上6点执行\n0 0,6 * * * /脚本路径 ","date":"2025-05-12T00:00:00Z","permalink":"/archives/5/","title":"rclone定时备份文件到网盘"},{"content":" 注：如果害怕改错可以电脑下载一个sqlite数据库工具自行修改 也可以使用下面的命令备份一个出来 修改后重启面板生效\ncp /opt/nezha/dashboard/data/sqlite.db /root/sqlite.db 安装sqlite3 （用于打开sqlite数据库） apt install sqlite3 打开哪吒数据库 sqlite3 /opt/nezha/dashboard/data/sqlite.db 列出表\n.tables 修改服务器排序 打开服务器文件\nSELECT * FROM servers; 修改id\nUPDATE servers SET id =要修改成的id WHERE id =修改的id; 删除id\nDELETE FROM servers WHERE id =要删除的id; 更新id列 让后续id减少1\nUPDATE servers SET id = id - 1 WHERE id \u0026gt; 中间断的id; 把 id = 4 改为 5，5 → 6，6 → 7，以此类推（所有 id \u0026gt;= 4 的值都加 1），避免主键冲突。注：演示id为4 自行修改\n第 1 步：将 id \u0026gt;= 4 的记录统一先加一个大值（如 1000）：\nUPDATE servers SET id = id + 1000 WHERE id \u0026gt;= 4; 第 2 步：把刚才加上大值的记录再减 999（等于 +1 的效果）：\nUPDATE servers SET id = id - 999 WHERE id \u0026gt;= 1004; 重置顺序\nDELETE FROM sqlite_sequence WHERE name = \u0026#39;servers\u0026#39;; 保存并退出\n.exit 修改报警排序 打开报警文件\nSELECT * FROM alert_rules; 修改报警id\nUPDATE alert_rules SET id =要修改成的id WHERE id =修改的id; 删除报警\nDELETE FROM alert_rules WHERE id =要删除的id; 重置顺序\nDELETE FROM sqlite_sequence WHERE name = \u0026#39;alert_rules\u0026#39;; 修改服务（网络延迟ip） 打开服务文件\nSELECT * FROM services; 修改服务id\nUPDATE services SET id =要修改成的id WHERE id =修改的id; 删除网络延迟id\nDELETE FROM services WHERE id =要删除的id; 重置顺序\nDELETE FROM sqlite_sequence WHERE name = \u0026#39;services\u0026#39;; 修改服务器分组 SELECT * FROM server_groups; 打开服务器分组\nSELECT * FROM server_groups; 修改服务器分组id\nUPDATE server_groups SET id =要修改成的id WHERE id =修改的id; 删除计划服务器id\nDELETE FROM server_groups WHERE id =要删除的id; 重置顺序\nDELETE FROM sqlite_sequence WHERE name = \u0026#39;server_groups\u0026#39;; 修改服务器分组关联表 打开服务器分组关联表\nSELECT * FROM server_group_servers; 修改服务器分组关联表id\nUPDATE server_group_servers SET id =要修改成的id WHERE id =修改的id; 删除计划服务器关联表id\nDELETE FROM server_group_server WHERE id =要删除的id; 重置顺序\nDELETE FROM sqlite_sequence WHERE name = \u0026#39;server_group_servers\u0026#39;; 清空网络延迟监控 如果开启了tsdb 直接删除tsdb文件即可\nrm -rf /opt/nezha/dashboard/data/tsdb DELETE FROM service_histories; 清空单个服务器id的网络延迟监控 DELETE FROM service_histories WHERE server_id = id; 一行命令清理网络延迟 收缩数据库文件大小 sqlite3 /opt/nezha/dashboard/data/sqlite.db \u0026#34;DELETE FROM service_histories; VACUUM;\u0026#34; 收缩 SQLite 数据库文件大小 执行完大量删除后，SQLite 文件并不会立即变小。你需要运行：\nVACUUM; 这个命令会重建数据库并清理空间碎片，使 sqlite.db 文件变小。\n修改报警通知里面的双向流量使用多少 字节转换网站：https://tooltt.com/byte-convert/\n查找服务器id的流量报警\nSELECT * FROM transfers WHERE server_id =服务器id; 清空服务器id的流量\nUPDATE transfers SET \u0026#34;in\u0026#34; = 0, \u0026#34;out\u0026#34; = 0 WHERE server_id =服务器id; 清空字段的流量\nUPDATE transfers SET \u0026#34;in\u0026#34; = 0, \u0026#34;out\u0026#34; = 0 WHERE id =字段; 修改下载流量\nUPDATE transfers SET out =要修改的流量字节 WHERE id =字段; 修改上传流量\nUPDATE transfers SET \u0026#34;in\u0026#34; =要修改的流量字节 WHERE id =字段; 重置顺序\nDELETE FROM sqlite_sequence WHERE name = \u0026#39;transfers\u0026#39;; 清空服务器id的字段\nDELETE FROM transfers WHERE server_id = 服务器id; 修改计划任务 打开计划任务文件\nSELECT * FROM crons; 修改计划任务id\nUPDATE crons SET id =要修改成的id WHERE id =修改的id; 删除计划任务id\nDELETE FROM crons WHERE id =要删除的id; 重置顺序\nDELETE FROM sqlite_sequence WHERE name = \u0026#39;crons\u0026#39;; ","date":"2025-02-12T00:00:00Z","image":"https://img.leu.pp.ua/file/教程/1770805468094_IMG_4004.jpeg","permalink":"/archives/4/","title":"哪吒探针修改数据库"},{"content":"前言：如果小鸡有很多 一个一个更换域名很麻烦 因此利用cron可以快捷更换所有小鸡的Agent域名_\n注意！！cron只能在机器在线的时候使用 如果域名快到期请在到期前在面板鸡反代上添加新的域名后使用 更改完在删掉旧域名\n原理：利用Nezha自带的cron快捷更换Agent域名\n教程 登录哪吒后台 创建任务 覆盖范围选择排除特定服务器\n把脚本导入进命令内 替换自己的原域名和新域名\nsudo sed -i \u0026#39;s/server: 原来的域名:端口/server: 新域名:端口/\u0026#39; /opt/nezha/agent/config.yml \u0026amp;\u0026amp; sudo systemctl restart nezha-agent.service 如果是Alpine系统请使用下面脚本：\nsed -i \u0026#39;s/server: 原来的域名:端口/server: 新域名:端口/\u0026#39; /opt/nezha/agent/config.yml \u0026amp;\u0026amp; rc-service nezha-agent restart 在哪吒后台更改Agent对接地址 最后手动执行一下即可\n","date":"2024-10-10T00:00:00Z","permalink":"/archives/1/","title":"哪吒V1快捷更改Agent域名"},{"content":"如果没有密钥 在vps上申请一个 如果有请忽略\n申请密钥 申请密钥对 ssh-keygen -t ed25519 -a 100 安装公钥 cat .ssh/id_ed25519.pub \u0026gt;\u0026gt; .ssh/authorized_keys 私钥设置可读权限 chmod 600 .ssh/id_ed25519 保存好私钥 id_ed25519\n一键导入公钥脚本 bash \u0026lt;(curl -sL https://raw.githubusercontent.com/leuxinovo/clearvps/main/sshkey.sh) -g github用户名 把公钥导入到GitHub https://github.com/settings/keys 即可使用脚本一键导入公钥到VPS\n设置密钥登录 nano /etc/ssh/sshd_config 进行如下设置： 开启密钥登录：PubkeyAuthentication yes 另外，请留意 root 用户能否通过 SSH 登录： PermitRootLogin yes 当你完成全部设置，并以密钥方式登录成功后，再禁用密码登录: PasswordAuthentication no\n最后重启ssh systemctl restart ssh ","date":"2024-10-09T00:00:00Z","permalink":"/archives/2/","title":"VPS设置密钥登录 一键导入公钥到VPS"},{"content":"安装Caddy 我们按照官方的安装方法，首先，安装一些必要的软件包：\napt update apt upgrade -y apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates 然后加入 Caddy 的 GPG 公钥和 apt 源：\ncurl -sSL https://dl.cloudsmith.io/public/caddy/stable/gpg.key | gpg --dearmor \u0026gt; /usr/share/keyrings/caddy.gpg echo \u0026#34;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/caddy.gpg] https://dl.cloudsmith.io/public/caddy/stable/deb/debian any-version main\u0026#34; \u0026gt; /etc/apt/sources.list.d/caddy.list 最后更新系统即可安装Caddy： apt update apt install caddy\nCaddy使用教程 例：Caddy反代本地8080端口 自动申请证书\nexample.com { reverse_proxy localhost:8080 } Caddy反代本地8080端口 指定证书\nexample.com { tls /路径/公钥.pem /路径/密钥.pem reverse_proxy localhost:8080 } ","date":"2024-02-11T00:00:00Z","permalink":"/archives/3/","title":"VPS安装Caddy反代"}]